. {* The symbol to relocate against was undefined. *}
. bfd_reloc_undefined,
.
-. {* The relocation was performed, but may not be ok - presently
-. generated only when linking i960 coff files with i960 b.out
-. symbols. If this type is returned, the error_message argument
-. to bfd_perform_relocation will be set. *}
+. {* The relocation was performed, but may not be ok. If this type is
+. returned, the error_message argument to bfd_perform_relocation
+. will be set. *}
. bfd_reloc_dangerous
. }
. bfd_reloc_status_type;
.
. {* If this field is non null, then the supplied function is
. called rather than the normal function. This allows really
-. strange relocation methods to be accommodated (e.g., i960 callj
-. instructions). *}
+. strange relocation methods to be accommodated. *}
. bfd_reloc_status_type (*special_function)
. (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
. bfd *, char **);
. slot of the instruction, so that a PC relative relocation can
. be made just by adding in an ordinary offset (e.g., sun3 a.out).
. Some formats leave the displacement part of an instruction
-. empty (e.g., m88k bcs); this flag signals the fact. *}
+. empty (e.g., ELF); this flag signals the fact. *}
. bfd_boolean pcrel_offset;
.};
.
{
switch (howto->size)
{
+ case 5: return 3;
case 0: return 1;
case 1: return 2;
case 2: return 4;
the addend to be the negative of the position of the location
within the section; for example, i386-aout does this. For
i386-aout, pcrel_offset is FALSE. Some other targets do not
- include the position of the location; for example, m88kbcs,
- or ELF. For those targets, pcrel_offset is TRUE.
+ include the position of the location; for example, ELF.
+ For those targets, pcrel_offset is TRUE.
If we are producing relocatable output, then we must ensure
that this reloc will be correctly computed when the final
switch (howto->size)
{
+ case 5:
+ {
+ long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
+ x >>= 8;
+ DOIT (x);
+ bfd_put_16 (abfd, (bfd_vma) (x >> 8), (bfd_byte *) data + octets);
+ bfd_put_8 (abfd, (x & 0xFF), (unsigned char *) data + 2 + octets);
+ }
+ break;
+
case 0:
{
char x = bfd_get_8 (abfd, (char *) data + octets);
the addend to be the negative of the position of the location
within the section; for example, i386-aout does this. For
i386-aout, pcrel_offset is FALSE. Some other targets do not
- include the position of the location; for example, m88kbcs,
- or ELF. For those targets, pcrel_offset is TRUE.
+ include the position of the location; for example, ELF.
+ For those targets, pcrel_offset is TRUE.
If we are producing relocatable output, then we must ensure
that this reloc will be correctly computed when the final
location we are relocating. Some targets (e.g., i386-aout)
arrange for the contents of the section to be the negative of the
offset of the location within the section; for such targets
- pcrel_offset is FALSE. Other targets (e.g., m88kbcs or ELF)
- simply leave the contents of the section as zero; for such
- targets pcrel_offset is TRUE. If pcrel_offset is FALSE we do not
- need to subtract out the offset of the location within the
- section (which is just ADDRESS). */
+ pcrel_offset is FALSE. Other targets (e.g., ELF) simply leave
+ the contents of the section as zero; for such targets
+ pcrel_offset is TRUE. If pcrel_offset is FALSE we do not need to
+ subtract out the offset of the location within the section (which
+ is just ADDRESS). */
if (howto->pc_relative)
{
relocation -= (input_section->output_section->vma
of the relocation itself; sometimes they are relative to the start of
the section containing the relocation. It depends on the specific target.
-The 24-bit relocation is used in some Intel 960 configurations.
-
ENUM
BFD_RELOC_32_SECREL
ENUMDOC
handled specially, because the value the register will have is
decided relatively late.
-ENUM
- BFD_RELOC_I960_CALLJ
-ENUMDOC
- Reloc types used for i960/b.out.
-
ENUM
BFD_RELOC_NONE
ENUMX
ENUMDOC
Low and High halfword relocations for MOVW and MOVT instructions.
+ENUM
+ BFD_RELOC_ARM_GOTFUNCDESC
+ENUMX
+ BFD_RELOC_ARM_GOTOFFFUNCDESC
+ENUMX
+ BFD_RELOC_ARM_FUNCDESC
+ENUMX
+ BFD_RELOC_ARM_FUNCDESC_VALUE
+ENUMX
+ BFD_RELOC_ARM_TLS_GD32_FDPIC
+ENUMX
+ BFD_RELOC_ARM_TLS_LDM32_FDPIC
+ENUMX
+ BFD_RELOC_ARM_TLS_IE32_FDPIC
+ENUMDOC
+ ARM FDPIC specific relocations.
+
ENUM
BFD_RELOC_ARM_JUMP_SLOT
ENUMX
Motorola 68HC12/XGATE reloc.
This is the 8 bit high part of an absolute address and immediately follows
a matching LO8XG part.
+ENUM
+ BFD_RELOC_S12Z_15_PCREL
+ENUMDOC
+ Freescale S12Z reloc.
+ This is a 15 bit relative address. If the most significant bits are all zero
+ then it may be truncated to 8 bits.
ENUM
BFD_RELOC_16C_NUM08
ENUMX
ENUMDOC
Relocs used in TLS code for CRIS.
-ENUM
- BFD_RELOC_860_COPY
-ENUMX
- BFD_RELOC_860_GLOB_DAT
-ENUMX
- BFD_RELOC_860_JUMP_SLOT
-ENUMX
- BFD_RELOC_860_RELATIVE
-ENUMX
- BFD_RELOC_860_PC26
-ENUMX
- BFD_RELOC_860_PLT26
-ENUMX
- BFD_RELOC_860_PC16
-ENUMX
- BFD_RELOC_860_LOW0
-ENUMX
- BFD_RELOC_860_SPLIT0
-ENUMX
- BFD_RELOC_860_LOW1
-ENUMX
- BFD_RELOC_860_SPLIT1
-ENUMX
- BFD_RELOC_860_LOW2
-ENUMX
- BFD_RELOC_860_SPLIT2
-ENUMX
- BFD_RELOC_860_LOW3
-ENUMX
- BFD_RELOC_860_LOGOT0
-ENUMX
- BFD_RELOC_860_SPGOT0
-ENUMX
- BFD_RELOC_860_LOGOT1
-ENUMX
- BFD_RELOC_860_SPGOT1
-ENUMX
- BFD_RELOC_860_LOGOTOFF0
-ENUMX
- BFD_RELOC_860_SPGOTOFF0
-ENUMX
- BFD_RELOC_860_LOGOTOFF1
-ENUMX
- BFD_RELOC_860_SPGOTOFF1
-ENUMX
- BFD_RELOC_860_LOGOTOFF2
-ENUMX
- BFD_RELOC_860_LOGOTOFF3
-ENUMX
- BFD_RELOC_860_LOPC
-ENUMX
- BFD_RELOC_860_HIGHADJ
-ENUMX
- BFD_RELOC_860_HAGOT
-ENUMX
- BFD_RELOC_860_HAGOTOFF
-ENUMX
- BFD_RELOC_860_HAPC
-ENUMX
- BFD_RELOC_860_HIGH
-ENUMX
- BFD_RELOC_860_HIGOT
-ENUMX
- BFD_RELOC_860_HIGOTOFF
-ENUMDOC
- Intel i860 Relocations.
-
ENUM
BFD_RELOC_OR1K_REL_26
ENUMX
BFD_RELOC_MACH_O_X86_64_PCREL32_4
ENUMDOC
Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
+ENUM
+ BFD_RELOC_MACH_O_X86_64_TLV
+ENUMDOC
+ Used when referencing a TLV entry.
ENUM
ENUMDOC
This is a 64 bit reloc that stores 32-bit thread pointer relative offset
to two words (uses imm instruction).
+ENUM
+ BFD_RELOC_MICROBLAZE_64_TEXTPCREL
+ENUMDOC
+ This is a 64 bit reloc that stores the 32 bit pc relative
+ value in two words (with an imm instruction). The relocation is
+ PC-relative offset from start of TEXT.
+ENUM
+ BFD_RELOC_MICROBLAZE_64_TEXTREL
+ENUMDOC
+ This is a 64 bit reloc that stores the 32 bit offset
+ value in two words (with an imm instruction). The relocation is
+ relative offset from start of TEXT.
ENUM
BFD_RELOC_AARCH64_RELOC_START
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12
+ENUMDOC
+ bit[11:1] of byte offset to module TLS base address, encoded in ldst
+ instructions.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
+ENUMDOC
+ Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
+ENUMDOC
+ bit[11:2] of byte offset to module TLS base address, encoded in ldst
+ instructions.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
+ENUMDOC
+ Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
+ENUMDOC
+ bit[11:3] of byte offset to module TLS base address, encoded in ldst
+ instructions.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
+ENUMDOC
+ Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
+ENUMDOC
+ bit[11:0] of byte offset to module TLS base address, encoded in ldst
+ instructions.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
+ENUMDOC
+ Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.
ENUM
BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
ENUMDOC
BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
ENUMDOC
Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
+ENUMDOC
+ AArch64 pseudo relocation code for TLS local exec mode. It's to be
+ used internally by the AArch64 assembler and not (currently) written to
+ any object files.
+ENUM
+ BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
+ENUMDOC
+ Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.
ENUM
BFD_RELOC_AARCH64_LD_GOT_LO12_NC
ENUMDOC
ENUMDOC
WebAssembly relocations.
+ENUM
+ BFD_RELOC_CKCORE_NONE
+ENUMX
+ BFD_RELOC_CKCORE_ADDR32
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM8BY4
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM11BY2
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM4BY2
+ENUMX
+ BFD_RELOC_CKCORE_PCREL32
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2
+ENUMX
+ BFD_RELOC_CKCORE_GNU_VTINHERIT
+ENUMX
+ BFD_RELOC_CKCORE_GNU_VTENTRY
+ENUMX
+ BFD_RELOC_CKCORE_RELATIVE
+ENUMX
+ BFD_RELOC_CKCORE_COPY
+ENUMX
+ BFD_RELOC_CKCORE_GLOB_DAT
+ENUMX
+ BFD_RELOC_CKCORE_JUMP_SLOT
+ENUMX
+ BFD_RELOC_CKCORE_GOTOFF
+ENUMX
+ BFD_RELOC_CKCORE_GOTPC
+ENUMX
+ BFD_RELOC_CKCORE_GOT32
+ENUMX
+ BFD_RELOC_CKCORE_PLT32
+ENUMX
+ BFD_RELOC_CKCORE_ADDRGOT
+ENUMX
+ BFD_RELOC_CKCORE_ADDRPLT
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM26BY2
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM16BY2
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM16BY4
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM10BY2
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM10BY4
+ENUMX
+ BFD_RELOC_CKCORE_ADDR_HI16
+ENUMX
+ BFD_RELOC_CKCORE_ADDR_LO16
+ENUMX
+ BFD_RELOC_CKCORE_GOTPC_HI16
+ENUMX
+ BFD_RELOC_CKCORE_GOTPC_LO16
+ENUMX
+ BFD_RELOC_CKCORE_GOTOFF_HI16
+ENUMX
+ BFD_RELOC_CKCORE_GOTOFF_LO16
+ENUMX
+ BFD_RELOC_CKCORE_GOT12
+ENUMX
+ BFD_RELOC_CKCORE_GOT_HI16
+ENUMX
+ BFD_RELOC_CKCORE_GOT_LO16
+ENUMX
+ BFD_RELOC_CKCORE_PLT12
+ENUMX
+ BFD_RELOC_CKCORE_PLT_HI16
+ENUMX
+ BFD_RELOC_CKCORE_PLT_LO16
+ENUMX
+ BFD_RELOC_CKCORE_ADDRGOT_HI16
+ENUMX
+ BFD_RELOC_CKCORE_ADDRGOT_LO16
+ENUMX
+ BFD_RELOC_CKCORE_ADDRPLT_HI16
+ENUMX
+ BFD_RELOC_CKCORE_ADDRPLT_LO16
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2
+ENUMX
+ BFD_RELOC_CKCORE_TOFFSET_LO16
+ENUMX
+ BFD_RELOC_CKCORE_DOFFSET_LO16
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM18BY2
+ENUMX
+ BFD_RELOC_CKCORE_DOFFSET_IMM18
+ENUMX
+ BFD_RELOC_CKCORE_DOFFSET_IMM18BY2
+ENUMX
+ BFD_RELOC_CKCORE_DOFFSET_IMM18BY4
+ENUMX
+ BFD_RELOC_CKCORE_GOTOFF_IMM18
+ENUMX
+ BFD_RELOC_CKCORE_GOT_IMM18BY4
+ENUMX
+ BFD_RELOC_CKCORE_PLT_IMM18BY4
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_IMM7BY4
+ENUMX
+ BFD_RELOC_CKCORE_TLS_LE32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_IE32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_GD32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_LDM32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_LDO32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_DTPMOD32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_DTPOFF32
+ENUMX
+ BFD_RELOC_CKCORE_TLS_TPOFF32
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4
+ENUMX
+ BFD_RELOC_CKCORE_NOJSRI
+ENUMX
+ BFD_RELOC_CKCORE_CALLGRAPH
+ENUMX
+ BFD_RELOC_CKCORE_IRELATIVE
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4
+ENUMX
+ BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4
+ENUMDOC
+ C-SKY relocations.
+
ENDSENUM
BFD_RELOC_UNUSED
CODE_FRAGMENT