Lines Matching defs:arm
1 /* 32-bit ELF support for ARM
30 #include "elf/arm.h"
31 #include "elf32-arm.h"
32 #include "cpu-arm.h"
297 /* BLX instruction for the ARM. */
371 /* Relocs used in ARM Linux */
2154 case 148: /* Linux/ARM 32-bit. */
2181 case 124: /* Linux/ARM elf_prpsinfo. */
2335 When adding code that transitions from Thumb to Arm the instruction that
2339 /* ARM FDPIC PLT entry. */
2544 in Encoding T2 defined in Section A8.8.25 of the ARM Architecture
2590 /* Arm/Thumb -> Arm/Thumb long branch stub. On V5T and above, use blx
2598 /* V4T Arm -> Thumb long branch stub. Used on V4T where blx is not
2646 /* V4T Thumb -> ARM long branch stub. Used on V4T where blx is not
2656 /* V4T Thumb -> ARM short branch stub. Shorter variant of the above
2665 /* ARM/Thumb -> ARM long branch stub, PIC. On V5T and above, use
2674 /* ARM/Thumb -> Thumb long branch stub, PIC. On V5T and above, use
2686 /* V4T ARM -> ARM long branch stub, PIC. */
2695 /* V4T Thumb -> ARM long branch stub, PIC. */
2730 /* Thumb2/ARM -> TLS trampoline. Lowest common denominator, which is a
2750 /* NaCl ARM -> ARM long branch stub. */
2763 /* NaCl ARM -> ARM long branch stub, PIC. */
2809 instruction (which switches to ARM mode) to point to this stub. Jump to the
2810 real destination using an ARM-mode branch. */
3061 /* Unwind info attached to an .ARM.exidx section. */
3109 /* ARM-specific information about a PLT entry, over and above the usual
3141 /* The information that is usually found in the ARM-specific part of
3143 struct arm_plt_info arm;
3224 /* Arm ELF linker hash entry. */
3229 /* ARM-specific PLT information. */
3250 symbols with Arm stubs. */
3261 /* Traverse an arm ELF linker hash table. */
3268 /* Get the ARM elf linker hash table from a link_info structure. */
3292 /* ARM ELF linker hash table. */
3298 /* The size in bytes of the section containing the Thumb-to-ARM glue. */
3301 /* The size in bytes of the section containing the ARM-to-Thumb glue. */
3349 /* Nonzero if the ARM/Thumb BLX instructions are available for use. */
3548 /* Create an entry in an ARM ELF linker hash table. */
3684 union and *ARM_PLT at the ARM-specific information. */
3715 *arm_plt = &local_iplt->arm;
4078 /* Destroy an ARM elf linker hash table. */
4090 /* Create an ARM elf linker hash table. */
4243 Thumb (and thus are seen as Arm mode). We'll inform the
4250 to insert a stub involving Arm code and/or BLX, leading to
4275 ARM mode, so if the branch is in Thumb mode, another
4276 Thumb->ARM stub will be inserted later just before the ARM
4278 Thumb->Arm one and branch directly to the ARM PLT entry.
4279 Here, we have to check if a pre-PLT Thumb->ARM stub
4287 /* Thumb branch/call to PLT: it can become a branch to ARM
4298 the BL to a BLX instruction to call the ARM-mode
4305 /* Target the Thumb stub before the ARM PLT entry. */
4327 - it's a Thumb->Arm call and blx is not available, or it's a
4328 Thumb->Arm branch (not bl). A stub is needed in this case,
4349 PLT, use one that branches directly to the ARM PLT
4350 stub. If we pretended we'd use the pre-PLT Thumb->ARM
4375 /* V5T and above. Stub starts with ARM code, so
4424 /* Thumb to arm. */
4432 sym_sec->owner, name, input_bfd, "Thumb", "ARM");
4477 /* Arm to thumb. */
4486 sym_sec->owner, name, input_bfd, "ARM", "Thumb");
4515 /* Arm to arm. */
4866 /* Store an Arm insn into an output section not processed by
5687 it's a long branch or a Thumb->ARM stub. Assume that
5730 an ARM instruction. If we were not making a stub,
5770 /* The BLX stub is ARM-mode code. Adjust the offset to
5937 /* For historical reasons, use the existing names for ARM-to-Thumb and
5938 Thumb-to-ARM stubs. */
6503 maximum size (a given section can contain both ARM and Thumb
7148 /* Locate the ARM encoded calling stub for NAME. */
7176 "ARM", tmp_name, name);
7185 /* ARM->Thumb glue (static images):
7187 .arm
7195 .arm
7202 .arm
7224 /* Thumb->ARM: Thumb->(non-interworking aware) ARM
7231 .arm mov lr, pc
7233 .arm
7315 /* Allocate space and symbols for calling a Thumb function from Arm mode.
7477 /* Record information about a VFP11 denorm-erratum veneer. Only ARM-mode
7569 /* FIXME: Creates an ARM symbol. Thumb mode will need attention if it
7717 /* Create a fake section for use by the ARM backend of the linker. */
7973 the current section and so cannot be a cross ARM/Thumb relocation. */
7985 /* This one is a call from arm code. We need to look up
8020 /* Initialise maps of ARM/Thumb/data for input BFDs. */
8029 /* PR 7093: Make sure that we are dealing with an arm elf binary. */
8412 (available from ARM) for details of the erratum. A short version is
8508 /* FIXME: Only ARM mode is supported at present. We may need to
8937 code, we should not encounter any arm mode eg span_type
9136 /* Thumb code calling an ARM function. */
9183 sym_sec->owner, name, input_bfd, "Thumb", "ARM");
9210 /* ARM branches work from the pc of the instruction + 8. */
9237 /* Populate an Arm to Thumb stub. Returns the stub symbol. */
9273 sym_sec->owner, name, input_bfd, "ARM", "Thumb");
9331 /* Arm code calling a Thumb function. */
9388 /* Populate Arm stub for an exported Thumb function. */
9468 /* Generate Arm stubs for exported Thumb symbols. */
9645 section (.iplt or .plt). ARM_PLT points to the symbol's ARM-specific
9990 some other thread attempting to read them. The ARM
10124 insn -= 8; /* ARM */
10175 /* arm insn. */
10211 "ARM", insn);
10294 /* Given an ARM instruction, determine whether it is an ADD or a SUB.
10483 Thumb (and thus are seen as Arm mode). Inform the user with
10501 to insert a stub involving Arm code and/or BLX, leading to
10507 Thumb-only CPU. We could emit a warning on Arm-capable targets
10523 (_("%pB(%s): Unknown destination type (ARM/Thumb) in %pB"),
10527 (_("(%s): Unknown destination type (ARM/Thumb) in %pB"),
10708 case R_ARM_XPC25: /* Arm BLX instruction. */
10711 case R_ARM_PC24: /* Arm B/BL instruction. */
10718 /* Check for Arm calling Arm function. */
10725 input_bfd, "ARM",
10726 "ARM", h ? h->root.root.string : "(local)");
10730 /* Check for Arm calling Thumb function. */
10787 /* The PLT entry is in ARM mode, regardless of the
10794 /* The ARM ELF ABI says that this reloc is computed as: S - P + A
11009 generated by other compilers, specifically the ARM/IAR. */
11147 /* If it is not a call to Thumb, assume call to Arm.
11213 /* If this call becomes a call to Arm, force BLX. */
11236 the BL to a BLX instruction to call the ARM-mode
11244 /* Target the Thumb stub before the ARM PLT entry. */
11345 /* Target the Thumb stub before the ARM PLT entry. */
11947 /* TLS stubs are arm mode. The original symbol is a
12079 "ARM", insn);
13183 /* Relocate an ARM ELF section. */
13607 /* Scan .ARM.exidx tables, and create a list describing edits which should be
13655 /* Link this .ARM.exidx section back from the text section it
13979 /* Function to keep ARM specific flags in the ELF header. */
14543 /* Integer divide allowed in ARM state. */
14674 "ARM v4",
14675 "ARM v4T",
14676 "ARM v5T",
14677 "ARM v5TE",
14678 "ARM v5TEJ",
14679 "ARM v6",
14680 "ARM v6KZ",
14681 "ARM v6T2",
14682 "ARM v6K",
14683 "ARM v7",
14684 "ARM v6-M",
14685 "ARM v6S-M",
14686 "ARM v7E-M",
14687 "ARM v8",
14688 "ARM v8-R",
14689 "ARM v8-M.baseline",
14690 "ARM v8-M.mainline",
14691 "ARM v8.1-A",
14692 "ARM v8.2-A",
14693 "ARM v8.3-A",
14694 "ARM v8.1-M.mainline",
14695 "ARM v9",
15085 explicitly means that divide instructions were allowed in ARM
15150 /* Check for any attributes not known on ARM. */
15200 official ARM ELF extended ABI. Hence they are only decoded if
15737 arm_plt = &local_iplt->arm;
16951 &local_iplt->arm);
16952 if (local_iplt->arm.noncall_refcount == 0)
16962 BFD_ASSERT (local_iplt->arm.noncall_refcount == 0);
16971 if (local_iplt->arm.noncall_refcount == 0)
17016 || local_iplt->arm.noncall_refcount == 0))
17341 /* Install the special first PLT entry for elf32-arm-nacl. Unlike
17821 /* Set the type and flags for an ARM section. We do this by
17843 /* Handle an ARM specific section when reading an object file. This is
17856 names for all the ARM specific sections, so we will probably get
18011 /* A three-word PLT with no Thumb thunk contains only Arm code,
18252 /* ARM->Thumb glue. */
18275 /* Thumb->ARM glue. */
18408 &local_iplt[i]->arm))
18521 /* Requirement 8 of "ARM v8-M Security Extensions: Requirements on
18522 Development Tools" (ARM-ECM-0359818) mandates Secure Gateway import
18576 /* Copy an .ARM.exidx table entry, adding OFFSET to (applied) PREL31
18590 (EXIDX_CANTUNWIND), this is an offset to an .ARM.extab entry. */
18720 ARM (C) Architecture Reference Manual
18722 ARM DDI 0406C.b (ID072512). */
19496 ARM B instruction. */
19894 sec = bfd_get_section_by_name (abfd, ".ARM.exidx");
19929 sec = bfd_get_section_by_name (abfd, ".ARM.exidx");
20239 this index section. Unfortunately the ARM EHABI does not specify
20307 /* Returns TRUE if NAME is an ARM mapping symbol.
20309 The ARM ELF standard also defines $x (for A64 code). It also allows a
20321 longer conform to the ARM ELF ABI. */
20417 #define elf_backend_obj_attrs_section ".ARM.attributes"
20465 /* Since NaCl doesn't use the ARM-specific unwind format, we don't
20467 anyway just to reduce gratuitous differences with the stock ARM backend. */
20732 /* Determine what should happen if the input ARM architecture
20733 does not match the output ARM architecture. */