Lines Matching defs:arm
1 /* 32-bit ELF support for ARM
29 #include "elf/arm.h"
30 #include "elf32-arm.h"
31 #include "cpu-arm.h"
296 /* BLX instruction for the ARM. */
370 /* Relocs used in ARM Linux */
2152 case 156: /* Linux/ARM 32-bit, some pre-v5.9 linux kernels. */
2162 case 148: /* Linux/ARM 32-bit. */
2189 case 124: /* Linux/ARM elf_prpsinfo. */
2343 When adding code that transitions from Thumb to Arm the instruction that
2347 /* ARM FDPIC PLT entry. */
2513 in Encoding T2 defined in Section A8.8.25 of the ARM Architecture
2559 /* Arm/Thumb -> Arm/Thumb long branch stub. On V5T and above, use blx
2567 /* V4T Arm -> Thumb long branch stub. Used on V4T where blx is not
2617 /* V4T Thumb -> ARM long branch stub. Used on V4T where blx is not
2627 /* V4T Thumb -> ARM short branch stub. Shorter variant of the above
2636 /* ARM/Thumb -> ARM long branch stub, PIC. On V5T and above, use
2645 /* ARM/Thumb -> Thumb long branch stub, PIC. On V5T and above, use
2657 /* V4T ARM -> ARM long branch stub, PIC. */
2666 /* V4T Thumb -> ARM long branch stub, PIC. */
2701 /* Thumb2/ARM -> TLS trampoline. Lowest common denominator, which is a
2754 instruction (which switches to ARM mode) to point to this stub. Jump to the
2755 real destination using an ARM-mode branch. */
3004 /* Unwind info attached to an .ARM.exidx section. */
3052 /* ARM-specific information about a PLT entry, over and above the usual
3084 /* The information that is usually found in the ARM-specific part of
3086 struct arm_plt_info arm;
3167 /* Arm
3172 /* ARM-specific PLT information. */
3193 symbols with Arm stubs. */
3204 /* Traverse an arm ELF linker hash table. */
3211 /* Get the ARM elf linker hash table from a link_info structure. */
3235 /* ARM ELF linker hash table. */
3241 /* The size in bytes of the section containing the Thumb-to-ARM glue. */
3244 /* The size in bytes of the section containing the ARM-to-Thumb glue. */
3292 /* Nonzero if the ARM/Thumb BLX instructions are available for use. */
3493 /* Create an entry in an ARM ELF linker hash table. */
3629 union and *ARM_PLT at the ARM-specific information. */
3660 *arm_plt = &local_iplt->arm;
4018 /* Destroy an ARM elf linker hash table. */
4030 /* Create an ARM elf linker hash table. */
4183 Thumb (and thus are seen as Arm mode). We'll inform the
4190 to insert a stub involving Arm code and/or BLX, leading to
4215 ARM mode, so if the branch is in Thumb mode, another
4216 Thumb->ARM stub will be inserted later just before the ARM
4218 Thumb->Arm one and branch directly to the ARM PLT entry.
4219 Here, we have to check if a pre-PLT Thumb->ARM stub
4227 /* Thumb branch/call to PLT: it can become a branch to ARM
4238 the BL to a BLX instruction to call the ARM-mode
4245 /* Target the Thumb stub before the ARM PLT entry. */
4267 - it's a Thumb->Arm call and blx is not available, or it's a
4268 Thumb->Arm branch (not bl). A stub is needed in this case,
4289 PLT, use one that branches directly to the ARM PLT
4290 stub. If we pretended we'd use the pre-PLT Thumb->ARM
4315 /* V5T and above. Stub starts with ARM code, so
4364 /* Thumb to arm. */
4372 sym_sec->owner, name, input_bfd, "Thumb", "ARM");
4417 /* Arm to thumb. */
4426 sym_sec->owner, name, input_bfd, "ARM", "Thumb");
4455 /* Arm to arm. */
4802 /* Store an Arm insn into an output section not processed by
5619 it's a long branch or a Thumb->ARM stub. Assume that
5662 an ARM instruction. If we were not making a stub,
5702 /* The BLX stub is ARM-mode code. Adjust the offset to
5869 /* For historical reasons, use the existing names for ARM-to-Thumb and
5870 Thumb-to-ARM stubs. */
6434 maximum size (a given section can contain both ARM and Thumb
7079 /* Locate the ARM encoded calling stub for NAME. */
7107 "ARM", tmp_name, name);
7116 /* ARM->Thumb glue (static images):
7118 .arm
7126 .arm
7133 .arm
7155 /* Thumb->ARM: Thumb->(non-interworking aware) ARM
7162 .arm mov lr, pc
7164 .arm
7247 /* Allocate space and symbols for calling a Thumb function from Arm mode.
7409 /* Record information about a VFP11 denorm-erratum veneer. Only ARM-mode
7501 /* FIXME: Creates an ARM symbol. Thumb mode will need attention if it
7649 /* Create a fake section for use by the ARM backend of the linker. */
7905 the current section and so cannot be a cross ARM/Thumb relocation. */
7917 /* This one is a call from arm code. We need to look up
7952 /* Initialise maps of ARM/Thumb/data for input BFDs. */
7961 /* PR 7093: Make sure that we are dealing with an arm elf binary. */
8344 (available from ARM) for details of the erratum. A short version is
8440 /* FIXME: Only ARM mode is supported at present. We may need to
8869 code, we should not encounter any arm mode eg span_type
9068 /* Thumb code calling an ARM function. */
9115 sym_sec->owner, name, input_bfd, "Thumb", "ARM");
9142 /* ARM branches work from the pc of the instruction + 8. */
9169 /* Populate an Arm to Thumb stub. Returns the stub symbol. */
9205 sym_sec->owner, name, input_bfd, "ARM", "Thumb");
9263 /* Arm code calling a Thumb function. */
9320 /* Populate Arm stub for an exported Thumb function. */
9400 /* Generate Arm stubs for exported Thumb symbols. */
9561 section (.iplt or .plt). ARM_PLT points to the symbol's ARM-specific
9867 some other thread attempting to read them. The ARM
10001 insn -= 8; /* ARM */
10052 /* arm insn. */
10088 "ARM", insn);
10171 /* Given an ARM instruction, determine whether it is an ADD or a SUB.
10360 Thumb (and thus are seen as Arm mode). Inform the user with
10378 to insert a stub involving Arm code and/or BLX, leading to
10384 Thumb-only CPU. We could emit a warning on Arm-capable targets
10400 (_("%pB(%s): Unknown destination type (ARM/Thumb) in %pB"),
10404 (_("(%s): Unknown destination type (ARM/Thumb) in %pB"),
10585 case R_ARM_XPC25: /* Arm BLX instruction. */
10588 case R_ARM_PC24: /* Arm B/BL instruction. */
10595 /* Check for Arm calling Arm function. */
10602 input_bfd, "ARM",
10603 "ARM", h ? h->root.root.string : "(local)");
10607 /* Check for Arm calling Thumb function. */
10664 /* The PLT entry is in ARM mode, regardless of the
10671 /* The ARM ELF ABI says that this reloc is computed as: S - P + A
10886 generated by other compilers, specifically the ARM/IAR. */
11024 /* If it is not a call to Thumb, assume call to Arm.
11090 /* If this call becomes a call to Arm, force BLX. */
11113 the BL to a BLX instruction to call the ARM-mode
11121 /* Target the Thumb stub before the ARM PLT entry. */
11222 /* Target the Thumb stub before the ARM PLT entry. */
11824 /* TLS stubs are arm mode. The original symbol is a
11956 "ARM", insn);
13060 /* Relocate an ARM ELF section. */
13485 /* Scan .ARM.exidx tables, and create a list describing edits which should be
13533 /* Link this .ARM.exidx section back from the text section it
13857 /* Function to keep ARM specific flags in the ELF header. */
14422 /* Integer divide allowed in ARM state. */
14553 "ARM v4",
14554 "ARM v4T",
14555 "ARM v5T",
14556 "ARM v5TE",
14557 "ARM v5TEJ",
14558 "ARM v6",
14559 "ARM v6KZ",
14560 "ARM v6T2",
14561 "ARM v6K",
14562 "ARM v7",
14563 "ARM v6-M",
14564 "ARM v6S-M",
14565 "ARM v7E-M",
14566 "ARM v8",
14567 "ARM v8-R",
14568 "ARM v8-M.baseline",
14569 "ARM v8-M.mainline",
14570 "ARM v8.1-A",
14571 "ARM v8.2-A",
14572 "ARM v8.3-A",
14573 "ARM v8.1-M.mainline",
14574 "ARM v9",
14964 explicitly means that divide instructions were allowed in ARM
15029 /* Check for any attributes not known on ARM. */
15079 official ARM ELF extended ABI. Hence they are only decoded if
15616 arm_plt = &local_iplt->arm;
16831 &local_iplt->arm);
16832 if (local_iplt->arm.noncall_refcount == 0)
16842 BFD_ASSERT (local_iplt->arm.noncall_refcount == 0);
16851 if (local_iplt->arm.noncall_refcount == 0)
16896 || local_iplt->arm.noncall_refcount == 0))
17661 /* Set the type and flags for an ARM section. We do this by
17683 /* Handle an ARM specific section when reading an object file. This is
17696 names for all the ARM specific sections, so we will probably get
17846 /* A three-word PLT with no Thumb thunk contains only Arm code,
18087 /* ARM->Thumb glue. */
18110 /* Thumb->ARM glue. */
18230 &local_iplt[i]->arm))
18343 /* Requirement 8 of "ARM v8-M Security Extensions: Requirements on
18344 Development Tools" (ARM-ECM-0359818) mandates Secure Gateway import
18398 /* Copy an .ARM.exidx table entry, adding OFFSET to (applied) PREL31
18412 (EXIDX_CANTUNWIND), this is an offset to an .ARM.extab entry. */
18542 ARM (C) Architecture Reference Manual
18544 ARM DDI 0406C.b (ID072512). */
19318 ARM B instruction. */
19716 sec = bfd_get_section_by_name (abfd, ".ARM.exidx");
19751 sec = bfd_get_section_by_name (abfd, ".ARM.exidx");
20061 this index section. Unfortunately the ARM EHABI does not specify
20129 /* Returns TRUE if NAME is an ARM mapping symbol.
20131 The ARM ELF standard also defines $x (for A64 code). It also allows a
20143 longer conform to the ARM ELF ABI. */
20239 #define elf_backend_obj_attrs_section ".ARM.attributes"
20473 /* Determine what should happen if the input ARM architecture
20474 does not match the output ARM architecture. */