BFD_RELOC_16_SECIDX,
/* For ELF. */
+ BFD_RELOC_64_GOT_PCREL,
BFD_RELOC_32_GOT_PCREL,
BFD_RELOC_16_GOT_PCREL,
BFD_RELOC_8_GOT_PCREL,
/* i386/elf relocations. */
BFD_RELOC_386_GOT32,
BFD_RELOC_386_PLT32,
- BFD_RELOC_386_GOTPC,
BFD_RELOC_386_TLS_TPOFF,
BFD_RELOC_386_TLS_IE,
BFD_RELOC_386_TLS_GOTIE,
BFD_RELOC_X86_64_GOTPC32,
BFD_RELOC_X86_64_GOT64,
BFD_RELOC_X86_64_GOTPCREL64,
- BFD_RELOC_X86_64_GOTPC64,
BFD_RELOC_X86_64_GOTPLT64,
BFD_RELOC_X86_64_GOTPC32_TLSDESC,
BFD_RELOC_X86_64_TLSDESC_CALL,
/* Relocations for setting up GOTs and PLTs for shared libraries. */
BFD_RELOC_ARM_GOT32,
- BFD_RELOC_ARM_GOTPC,
BFD_RELOC_ARM_GOT_PREL,
/* ARM thread-local storage relocations. */
BFD_RELOC_SH_LABEL,
BFD_RELOC_SH_LOOP_START,
BFD_RELOC_SH_LOOP_END,
- BFD_RELOC_SH_GOTPC,
BFD_RELOC_SH_COPY64,
BFD_RELOC_SH_GLOB_DAT64,
BFD_RELOC_SH_JMP_SLOT64,
BFD_RELOC_ARC_SDA16_ST2,
BFD_RELOC_ARC_32_PCREL,
BFD_RELOC_ARC_GOT32,
- BFD_RELOC_ARC_GOTPC32,
BFD_RELOC_ARC_GOTPC,
BFD_RELOC_ARC_S21W_PCREL_PLT,
BFD_RELOC_ARC_S25H_PCREL_PLT,
BFD_RELOC_V850_CALLT_15_16_OFFSET,
/* DSO relocations. */
- BFD_RELOC_V850_32_GOTPCREL,
BFD_RELOC_V850_16_GOT,
BFD_RELOC_V850_32_GOT,
BFD_RELOC_V850_22_PLT_PCREL,
/* 12 bit GOT offset. */
BFD_RELOC_390_GOT12,
- /* 32 bit PC relative offset to GOT. */
- BFD_RELOC_390_GOTPC,
-
/* 16 bit GOT offset. */
BFD_RELOC_390_GOT16,
#define BFD_RELOC_ARC_PC32 BFD_RELOC_32_PCREL
#define BFD_RELOC_ARC_PLT32 BFD_RELOC_32_PLT_PCREL
#define BFD_RELOC_ARC_GOTOFF BFD_RELOC_32_GOTOFF
+#define BFD_RELOC_ARC_GOTPC32 BFD_RELOC_32_GOT_PCREL
#define BFD_RELOC_ARC_COPY BFD_RELOC_COPY
#define BFD_RELOC_ARC_GLOB_DAT BFD_RELOC_GLOB_DAT
#define BFD_RELOC_ARC_JMP_SLOT BFD_RELOC_JMP_SLOT
{BFD_RELOC_JMP_SLOT, R_ARM_JUMP_SLOT},
{BFD_RELOC_RELATIVE, R_ARM_RELATIVE},
{BFD_RELOC_32_GOTOFF, R_ARM_GOTOFF32},
- {BFD_RELOC_ARM_GOTPC, R_ARM_GOTPC},
+ {BFD_RELOC_32_GOT_PCREL, R_ARM_GOTPC},
{BFD_RELOC_ARM_GOT_PREL, R_ARM_GOT_PREL},
{BFD_RELOC_ARM_GOT32, R_ARM_GOT32},
{BFD_RELOC_32_PLT_PCREL, R_ARM_PLT32},
TRACE ("BFD_RELOC_32_GOTOFF");
return &elf_howto_table[R_386_GOTOFF];
- case BFD_RELOC_386_GOTPC:
+ case BFD_RELOC_32_GOT_PCREL:
TRACE ("BFD_RELOC_386_GOTPC");
return &elf_howto_table[R_386_GOTPC];
return &elf_howto_table[(int) R_390_RELATIVE];
case BFD_RELOC_32_GOTOFF:
return &elf_howto_table[(int) R_390_GOTOFF32];
- case BFD_RELOC_390_GOTPC:
+ case BFD_RELOC_32_GOT_PCREL:
return &elf_howto_table[(int) R_390_GOTPC];
case BFD_RELOC_390_GOT16:
return &elf_howto_table[(int) R_390_GOT16];
{ BFD_RELOC_JMP_SLOT, R_SH_JMP_SLOT },
{ BFD_RELOC_RELATIVE, R_SH_RELATIVE },
{ BFD_RELOC_32_GOTOFF, R_SH_GOTOFF },
- { BFD_RELOC_SH_GOTPC, R_SH_GOTPC },
+ { BFD_RELOC_32_GOT_PCREL, R_SH_GOTPC },
{ BFD_RELOC_SH_GOTPLT32, R_SH_GOTPLT32 },
{ BFD_RELOC_SH_GOT20, R_SH_GOT20 },
{ BFD_RELOC_SH_GOTOFF20, R_SH_GOTOFF20 },
{ BFD_RELOC_V850_16_S1, R_V850_16_S1 },
{ BFD_RELOC_V850_LO16_S1, R_V850_LO16_S1 },
{ BFD_RELOC_V850_CALLT_15_16_OFFSET, R_V850_CALLT_15_16_OFFSET },
- { BFD_RELOC_V850_32_GOTPCREL, R_V850_32_GOTPCREL },
+ { BFD_RELOC_32_GOT_PCREL, R_V850_32_GOTPCREL },
{ BFD_RELOC_V850_16_GOT, R_V850_16_GOT },
{ BFD_RELOC_V850_32_GOT, R_V850_32_GOT },
{ BFD_RELOC_V850_22_PLT_PCREL, R_V850_22_PLT },
return &elf_howto_table[(int) R_390_RELATIVE];
case BFD_RELOC_32_GOTOFF:
return &elf_howto_table[(int) R_390_GOTOFF32];
- case BFD_RELOC_390_GOTPC:
+ case BFD_RELOC_64_GOT_PCREL:
return &elf_howto_table[(int) R_390_GOTPC];
case BFD_RELOC_390_GOT16:
return &elf_howto_table[(int) R_390_GOT16];
{ BFD_RELOC_X86_64_GOTPC32, R_X86_64_GOTPC32, },
{ BFD_RELOC_X86_64_GOT64, R_X86_64_GOT64, },
{ BFD_RELOC_X86_64_GOTPCREL64,R_X86_64_GOTPCREL64, },
- { BFD_RELOC_X86_64_GOTPC64, R_X86_64_GOTPC64, },
+ { BFD_RELOC_64_GOT_PCREL, R_X86_64_GOTPC64, },
{ BFD_RELOC_X86_64_GOTPLT64, R_X86_64_GOTPLT64, },
{ BFD_RELOC_64_PLTOFF, R_X86_64_PLTOFF64, },
{ BFD_RELOC_SIZE32, R_X86_64_SIZE32, },
"BFD_RELOC_8_PCREL",
"BFD_RELOC_32_SECREL",
"BFD_RELOC_16_SECIDX",
+ "BFD_RELOC_64_GOT_PCREL",
"BFD_RELOC_32_GOT_PCREL",
"BFD_RELOC_16_GOT_PCREL",
"BFD_RELOC_8_GOT_PCREL",
"BFD_RELOC_MN10300_TLS_TPOFF",
"BFD_RELOC_386_GOT32",
"BFD_RELOC_386_PLT32",
- "BFD_RELOC_386_GOTPC",
"BFD_RELOC_386_TLS_TPOFF",
"BFD_RELOC_386_TLS_IE",
"BFD_RELOC_386_TLS_GOTIE",
"BFD_RELOC_X86_64_GOTPC32",
"BFD_RELOC_X86_64_GOT64",
"BFD_RELOC_X86_64_GOTPCREL64",
- "BFD_RELOC_X86_64_GOTPC64",
"BFD_RELOC_X86_64_GOTPLT64",
"BFD_RELOC_X86_64_GOTPC32_TLSDESC",
"BFD_RELOC_X86_64_TLSDESC_CALL",
"BFD_RELOC_ARM_TLS_LDM32_FDPIC",
"BFD_RELOC_ARM_TLS_IE32_FDPIC",
"BFD_RELOC_ARM_GOT32",
- "BFD_RELOC_ARM_GOTPC",
"BFD_RELOC_ARM_GOT_PREL",
"BFD_RELOC_ARM_TLS_GD32",
"BFD_RELOC_ARM_TLS_LDO32",
"BFD_RELOC_SH_LABEL",
"BFD_RELOC_SH_LOOP_START",
"BFD_RELOC_SH_LOOP_END",
- "BFD_RELOC_SH_GOTPC",
"BFD_RELOC_SH_COPY64",
"BFD_RELOC_SH_GLOB_DAT64",
"BFD_RELOC_SH_JMP_SLOT64",
"BFD_RELOC_ARC_SDA16_ST2",
"BFD_RELOC_ARC_32_PCREL",
"BFD_RELOC_ARC_GOT32",
- "BFD_RELOC_ARC_GOTPC32",
"BFD_RELOC_ARC_GOTPC",
"BFD_RELOC_ARC_S21W_PCREL_PLT",
"BFD_RELOC_ARC_S25H_PCREL_PLT",
"BFD_RELOC_V850_16_S1",
"BFD_RELOC_V850_LO16_S1",
"BFD_RELOC_V850_CALLT_15_16_OFFSET",
- "BFD_RELOC_V850_32_GOTPCREL",
"BFD_RELOC_V850_16_GOT",
"BFD_RELOC_V850_32_GOT",
"BFD_RELOC_V850_22_PLT_PCREL",
"BFD_RELOC_RX_RELAX",
"BFD_RELOC_390_12",
"BFD_RELOC_390_GOT12",
- "BFD_RELOC_390_GOTPC",
"BFD_RELOC_390_GOT16",
"BFD_RELOC_390_GOT32",
"BFD_RELOC_390_PC12DBL",
Section relative relocations. Some targets need this for DWARF2.
ENUM
+ BFD_RELOC_64_GOT_PCREL
+ENUMX
BFD_RELOC_32_GOT_PCREL
ENUMX
BFD_RELOC_16_GOT_PCREL
BFD_RELOC_386_GOT32
ENUMX
BFD_RELOC_386_PLT32
-ENUMX
- BFD_RELOC_386_GOTPC
ENUMX
BFD_RELOC_386_TLS_TPOFF
ENUMX
BFD_RELOC_X86_64_GOT64
ENUMX
BFD_RELOC_X86_64_GOTPCREL64
-ENUMX
- BFD_RELOC_X86_64_GOTPC64
ENUMX
BFD_RELOC_X86_64_GOTPLT64
ENUMX
ENUM
BFD_RELOC_ARM_GOT32
-ENUMX
- BFD_RELOC_ARM_GOTPC
ENUMX
BFD_RELOC_ARM_GOT_PREL
ENUMDOC
BFD_RELOC_SH_LOOP_START
ENUMX
BFD_RELOC_SH_LOOP_END
-ENUMX
- BFD_RELOC_SH_GOTPC
ENUMX
BFD_RELOC_SH_COPY64
ENUMX
BFD_RELOC_ARC_32_PCREL
ENUMX
BFD_RELOC_ARC_GOT32
-ENUMX
- BFD_RELOC_ARC_GOTPC32
ENUMX
BFD_RELOC_ARC_GOTPC
ENUMX
ENUMDOC
This is a 16 bit offset from the call table base pointer.
ENUM
- BFD_RELOC_V850_32_GOTPCREL
-ENUMX
BFD_RELOC_V850_16_GOT
ENUMX
BFD_RELOC_V850_32_GOT
BFD_RELOC_390_GOT12
ENUMDOC
12 bit GOT offset.
-ENUM
- BFD_RELOC_390_GOTPC
-ENUMDOC
- 32 bit PC relative offset to GOT.
ENUM
BFD_RELOC_390_GOT16
ENUMDOC
arc_reloc_op[] =
{
DEF (gotoff, BFD_RELOC_32_GOTOFF, 1),
- DEF (gotpc, BFD_RELOC_ARC_GOTPC32, 0),
+ DEF (gotpc, BFD_RELOC_32_GOT_PCREL, 0),
DEF (plt, BFD_RELOC_32_PLT_PCREL, 0),
DEF (sda, DUMMY_RELOC_ARC_ENTRY, 1),
DEF (pcl, BFD_RELOC_32_PCREL, 1),
md_number_to_chars (fixpos, value, fixP->fx_size);
return;
- case BFD_RELOC_ARC_GOTPC32:
+ case BFD_RELOC_32_GOT_PCREL:
/* I cannot fix an GOTPC relocation because I need to relax it
from ld rx,[pcl,@sym@gotpc] to add rx,pcl,@sym@gotpc. */
as_bad (_("Unsupported operation on reloc"));
/* if we have something like add gp, pcl,
_GLOBAL_OFFSET_TABLE_@gotpc. */
- if (code == BFD_RELOC_ARC_GOTPC32
+ if (code == BFD_RELOC_32_GOT_PCREL
&& GOT_symbol
&& fixP->fx_addsy == GOT_symbol)
code = BFD_RELOC_ARC_GOTPC;
/* Adjust_reloc_syms doesn't know about the GOT. */
switch (fixP->fx_r_type)
{
- case BFD_RELOC_ARC_GOTPC32:
+ case BFD_RELOC_32_GOT_PCREL:
case BFD_RELOC_32_PLT_PCREL:
case BFD_RELOC_ARC_S25H_PCREL_PLT:
case BFD_RELOC_ARC_S21H_PCREL_PLT:
relocations. Check also that fx_addsy is not NULL, in order to
make sure that the fixup refers to some sort of label. */
#define TC_VALIDATE_FIX(FIXP,SEG,SKIP) \
- if ((FIXP->fx_r_type == BFD_RELOC_ARC_GOTPC32 \
+ if ((FIXP->fx_r_type == BFD_RELOC_32_GOT_PCREL \
|| FIXP->fx_r_type == BFD_RELOC_32_PLT_PCREL \
|| FIXP->fx_r_type == BFD_RELOC_ARC_S25W_PCREL_PLT \
|| FIXP->fx_r_type == BFD_RELOC_ARC_S25H_PCREL_PLT \
&& GOT_symbol
&& fixp->fx_addsy == GOT_symbol)
{
- code = BFD_RELOC_ARM_GOTPC;
+ code = BFD_RELOC_32_GOT_PCREL;
reloc->addend = fixp->fx_offset = reloc->address;
}
#endif
case BFD_RELOC_X86_64_GOT32:
return BFD_RELOC_X86_64_GOT64;
case BFD_RELOC_X86_64_GOTPC32:
- other = BFD_RELOC_X86_64_GOTPC64;
+ other = BFD_RELOC_64_GOT_PCREL;
break;
case BFD_RELOC_X86_64_GOTPCREL:
other = BFD_RELOC_X86_64_GOTPCREL64;
{
if (!object_64bit)
{
- reloc_type = BFD_RELOC_386_GOTPC;
+ reloc_type = BFD_RELOC_32_GOT_PCREL;
i.has_gotpc_tls_reloc = true;
i.op[n].disps->X_add_number +=
encoding_length (insn_start_frag, insn_start_off, p);
}
else if (reloc_type == BFD_RELOC_64)
- reloc_type = BFD_RELOC_X86_64_GOTPC64;
+ reloc_type = BFD_RELOC_64_GOT_PCREL;
else
/* Don't do the adjustment for x86-64, as there
the pcrel addressing is relative to the _next_
== O_subtract))))
{
if (!object_64bit)
- reloc_type = BFD_RELOC_386_GOTPC;
+ reloc_type = BFD_RELOC_32_GOT_PCREL;
else if (size == 4)
reloc_type = BFD_RELOC_X86_64_GOTPC32;
else if (size == 8)
- reloc_type = BFD_RELOC_X86_64_GOTPC64;
+ reloc_type = BFD_RELOC_64_GOT_PCREL;
i.has_gotpc_tls_reloc = true;
i.op[n].imms->X_add_number +=
encoding_length (insn_start_frag, insn_start_off, p);
case BFD_RELOC_386_GOT32:
case BFD_RELOC_386_GOT32X:
case BFD_RELOC_32_GOTOFF:
- case BFD_RELOC_386_GOTPC:
+ case BFD_RELOC_32_GOT_PCREL:
case BFD_RELOC_386_TLS_GD:
case BFD_RELOC_386_TLS_LDM:
case BFD_RELOC_386_TLS_LDO_32:
case BFD_RELOC_X86_64_GOTPC32:
case BFD_RELOC_X86_64_GOT64:
case BFD_RELOC_X86_64_GOTPCREL64:
- case BFD_RELOC_X86_64_GOTPC64:
+ case BFD_RELOC_64_GOT_PCREL:
case BFD_RELOC_X86_64_GOTPLT64:
case BFD_RELOC_64_PLTOFF:
case BFD_RELOC_X86_64_GOTPC32_TLSDESC:
&& fixp->fx_addsy == GOT_symbol)
{
if (!object_64bit)
- code = BFD_RELOC_386_GOTPC;
+ code = BFD_RELOC_32_GOT_PCREL;
else
code = BFD_RELOC_X86_64_GOTPC32;
}
&& GOT_symbol
&& fixp->fx_addsy == GOT_symbol)
{
- code = BFD_RELOC_X86_64_GOTPC64;
+ code = BFD_RELOC_64_GOT_PCREL;
}
rel = notes_alloc (sizeof (arelent));
case BFD_RELOC_64_GOTOFF:
case BFD_RELOC_X86_64_GOT64:
case BFD_RELOC_X86_64_GOTPCREL64:
- case BFD_RELOC_X86_64_GOTPC64:
+ case BFD_RELOC_64_GOT_PCREL:
case BFD_RELOC_X86_64_GOTPLT64:
case BFD_RELOC_64_PLTOFF:
as_bad_where (fixp->fx_file, fixp->fx_line,
#define TC_FORCE_RELOCATION_LOCAL(FIX) \
(GENERIC_FORCE_RELOCATION_LOCAL (FIX) \
|| (FIX)->fx_r_type == BFD_RELOC_386_PLT32 \
- || (FIX)->fx_r_type == BFD_RELOC_386_GOTPC \
+ || (FIX)->fx_r_type == BFD_RELOC_32_GOT_PCREL \
|| (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCREL \
|| (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCRELX \
|| (FIX)->fx_r_type == BFD_RELOC_X86_64_REX_GOTPCRELX \
case BFD_RELOC_390_PLTOFF16:
case BFD_RELOC_390_PLTOFF32:
case BFD_RELOC_390_PLTOFF64:
- case BFD_RELOC_390_GOTPC:
+ case BFD_RELOC_32_GOT_PCREL:
+ case BFD_RELOC_64_GOT_PCREL:
case BFD_RELOC_390_GOT16:
case BFD_RELOC_390_GOTPCDBL:
case BFD_RELOC_390_GOT64:
code = fixp->fx_r_type;
if (GOT_symbol && fixp->fx_addsy == GOT_symbol)
{
- if ( (s390_arch_size == 32 && code == BFD_RELOC_32_PCREL)
- || (s390_arch_size == 64 && code == BFD_RELOC_64_PCREL))
- code = BFD_RELOC_390_GOTPC;
- if (code == BFD_RELOC_390_PC32DBL)
+ if (s390_arch_size == 32 && code == BFD_RELOC_32_PCREL)
+ code = BFD_RELOC_32_GOT_PCREL;
+ else if (s390_arch_size == 64 && code == BFD_RELOC_64_PCREL)
+ code = BFD_RELOC_64_GOT_PCREL;
+ else if (code == BFD_RELOC_390_PC32DBL)
code = BFD_RELOC_390_GOTPCDBL;
}
{
if (exp->X_add_symbol && exp->X_add_symbol == GOT_symbol)
{
- *r_type_p = BFD_RELOC_SH_GOTPC;
+ *r_type_p = BFD_RELOC_32_GOT_PCREL;
return 0;
}
exp = symbol_get_value_expression (exp->X_add_symbol);
if (fixP->fx_r_type == BFD_RELOC_32_PLT_PCREL
|| fixP->fx_r_type == BFD_RELOC_SH_GOT32
|| fixP->fx_r_type == BFD_RELOC_SH_GOT20
- || fixP->fx_r_type == BFD_RELOC_SH_GOTPC
+ || fixP->fx_r_type == BFD_RELOC_32_GOT_PCREL
|| fixP->fx_r_type == BFD_RELOC_SH_GOTFUNCDESC
|| fixP->fx_r_type == BFD_RELOC_SH_GOTFUNCDESC20
|| fixP->fx_r_type == BFD_RELOC_SH_GOTOFFFUNCDESC
apply_full_field_fix (fixP, buf, val, 4);
break;
- case BFD_RELOC_SH_GOTPC:
+ case BFD_RELOC_32_GOT_PCREL:
/* This is tough to explain. We end up with this one if we have
operands that look like "_GLOBAL_OFFSET_TABLE_+[.-.L284]".
The goal here is to obtain the absolute address of the GOT,
when used at runtime implies that we should add the address of the
GOT to the specified location, and as a result we have simplified
the expression into something we can use. */
-#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_SH_GOTPC
+#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_32_GOT_PCREL
#define tc_fix_adjustable(FIX) sh_fix_adjustable(FIX)
extern bool sh_fix_adjustable (struct fix *);
(GENERIC_FORCE_RELOCATION_LOCAL (FIX) \
|| (FIX)->fx_r_type == BFD_RELOC_32_PLT_PCREL \
|| (FIX)->fx_r_type == BFD_RELOC_SH_GOT32 \
- || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC)
+ || (FIX)->fx_r_type == BFD_RELOC_32_GOT_PCREL)
#define TC_FORCE_RELOCATION_SUB_LOCAL(FIX, SEG) \
((!md_register_arithmetic && (SEG) == reg_section) \