[binutils-gdb] bfd/ELF: fold BFD_RELOC_<arch>_GOTPC*
Jan Beulich
jbeulich@sourceware.org
Thu Apr 9 06:40:53 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bec773f54ea89a33ac6115ff32074b08e519a944
commit bec773f54ea89a33ac6115ff32074b08e519a944
Author: Jan Beulich <jbeulich@suse.com>
Date: Thu Apr 9 08:37:51 2026 +0200
bfd/ELF: fold BFD_RELOC_<arch>_GOTPC*
For many of the cases there's no need to have separate relocs per arch;
just like for other more or less generic ones a single one (per purpose;
a 64-bit generic one is being introduced) will do. C-Sky - sadly -
continues to be an exception.
Diff:
---
bfd/bfd-in2.h | 10 +---------
bfd/elf32-arc.c | 1 +
bfd/elf32-arm.c | 2 +-
bfd/elf32-i386.c | 2 +-
bfd/elf32-s390.c | 2 +-
bfd/elf32-sh.c | 2 +-
bfd/elf32-v850.c | 2 +-
bfd/elf64-s390.c | 2 +-
bfd/elf64-x86-64.c | 2 +-
bfd/libbfd.h | 8 +-------
bfd/reloc.c | 18 ++----------------
gas/config/tc-arc.c | 8 ++++----
gas/config/tc-arc.h | 2 +-
gas/config/tc-arm.c | 2 +-
gas/config/tc-i386.c | 20 ++++++++++----------
gas/config/tc-i386.h | 2 +-
gas/config/tc-s390.c | 12 +++++++-----
gas/config/tc-sh.c | 6 +++---
gas/config/tc-sh.h | 4 ++--
19 files changed, 41 insertions(+), 66 deletions(-)
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 914f1b435a8..e1f16f40896 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -3356,6 +3356,7 @@ enum bfd_reloc_code_real
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,
@@ -3869,7 +3870,6 @@ enum bfd_reloc_code_real
/* 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,
@@ -3902,7 +3902,6 @@ enum bfd_reloc_code_real
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,
@@ -4215,7 +4214,6 @@ enum bfd_reloc_code_real
/* 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. */
@@ -4332,7 +4330,6 @@ enum bfd_reloc_code_real
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,
@@ -4401,7 +4398,6 @@ enum bfd_reloc_code_real
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,
@@ -4958,7 +4954,6 @@ enum bfd_reloc_code_real
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,
@@ -5427,9 +5422,6 @@ enum bfd_reloc_code_real
/* 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,
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 8a8de3fde36..8601a3d3c35 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -386,6 +386,7 @@ arc_elf_link_hash_table_create (bfd *abfd)
#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
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 4f677757758..ab9fdda7e89 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -2020,7 +2020,7 @@ static const struct elf32_arm_reloc_map elf32_arm_reloc_map[] =
{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},
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 1d65cad6f30..9e27bed51c6 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -237,7 +237,7 @@ elf_i386_reloc_type_lookup (bfd *abfd,
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];
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index a520bec2780..8fec2f7d43f 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -213,7 +213,7 @@ elf_s390_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
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];
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 81bf415a27e..5dd019512ed 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -360,7 +360,7 @@ static const struct elf_reloc_map sh_reloc_map[] =
{ 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 },
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 6112eb9a58b..15acc25ac35 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -1731,7 +1731,7 @@ static const struct v850_elf_reloc_map v850_elf_reloc_map[] =
{ 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 },
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index f635cba0bfb..e9a7041d415 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -227,7 +227,7 @@ elf_s390_reloc_type_lookup (bfd *abfd,
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];
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index ae18d9c909f..b3f008bd51d 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -259,7 +259,7 @@ static const struct elf_reloc_map x86_64_reloc_map[] =
{ 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, },
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 17df7667564..7ccabbd283e 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -1114,6 +1114,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -1443,7 +1444,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -1474,7 +1474,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -1716,7 +1715,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -1820,7 +1818,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -1887,7 +1884,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -2146,7 +2142,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
@@ -2418,7 +2413,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"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",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index bd12910a07d..e41a8ccc6c1 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -1433,6 +1433,8 @@ ENUMDOC
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
@@ -2323,8 +2325,6 @@ ENUM
BFD_RELOC_386_GOT32
ENUMX
BFD_RELOC_386_PLT32
-ENUMX
- BFD_RELOC_386_GOTPC
ENUMX
BFD_RELOC_386_TLS_TPOFF
ENUMX
@@ -2388,8 +2388,6 @@ 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
@@ -2962,8 +2960,6 @@ ENUMDOC
ENUM
BFD_RELOC_ARM_GOT32
-ENUMX
- BFD_RELOC_ARM_GOTPC
ENUMX
BFD_RELOC_ARM_GOT_PREL
ENUMDOC
@@ -3189,8 +3185,6 @@ ENUMX
BFD_RELOC_SH_LOOP_START
ENUMX
BFD_RELOC_SH_LOOP_END
-ENUMX
- BFD_RELOC_SH_GOTPC
ENUMX
BFD_RELOC_SH_COPY64
ENUMX
@@ -3326,8 +3320,6 @@ ENUMX
BFD_RELOC_ARC_32_PCREL
ENUMX
BFD_RELOC_ARC_GOT32
-ENUMX
- BFD_RELOC_ARC_GOTPC32
ENUMX
BFD_RELOC_ARC_GOTPC
ENUMX
@@ -4154,8 +4146,6 @@ ENUM
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
@@ -4912,10 +4902,6 @@ ENUM
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
diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
index e86420c41e4..77d71fb25a8 100644
--- a/gas/config/tc-arc.c
+++ b/gas/config/tc-arc.c
@@ -543,7 +543,7 @@ static const struct arc_reloc_op_tag
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),
@@ -3089,7 +3089,7 @@ md_apply_fix (fixS *fixP,
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"));
@@ -3262,7 +3262,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
/* 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;
@@ -4217,7 +4217,7 @@ tc_arc_fix_adjustable (fixS *fixP)
/* 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:
diff --git a/gas/config/tc-arc.h b/gas/config/tc-arc.h
index 0381469d459..5e0986a7a43 100644
--- a/gas/config/tc-arc.h
+++ b/gas/config/tc-arc.h
@@ -129,7 +129,7 @@ extern const char *arc_target_format;
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 \
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 1dfd3d4ef8d..392ae8d761d 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -29554,7 +29554,7 @@ tc_gen_reloc (asection *section, fixS *fixp)
&& 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
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 72217cf4f7f..2a2d95bdd26 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -3973,7 +3973,7 @@ _reloc (unsigned int size,
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;
@@ -13081,13 +13081,13 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
{
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_
@@ -13315,11 +13315,11 @@ output_imm (fragS *insn_start_frag, offsetT insn_start_off)
== 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);
@@ -18521,7 +18521,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
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:
@@ -18546,7 +18546,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
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:
@@ -18618,7 +18618,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
&& 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;
}
@@ -18626,7 +18626,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
&& GOT_symbol
&& fixp->fx_addsy == GOT_symbol)
{
- code = BFD_RELOC_X86_64_GOTPC64;
+ code = BFD_RELOC_64_GOT_PCREL;
}
rel = notes_alloc (sizeof (arelent));
@@ -18660,7 +18660,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
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,
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index 7e3f62badda..bd3f4b5b59e 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -164,7 +164,7 @@ extern int tc_i386_fix_adjustable (struct fix *);
#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 \
diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c
index f378b3a4011..707306aac38 100644
--- a/gas/config/tc-s390.c
+++ b/gas/config/tc-s390.c
@@ -2449,7 +2449,8 @@ tc_s390_force_relocation (struct fix *fixp)
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:
@@ -2838,10 +2839,11 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
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;
}
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c
index 04923915f40..b057830a233 100644
--- a/gas/config/tc-sh.c
+++ b/gas/config/tc-sh.c
@@ -320,7 +320,7 @@ sh_check_fixup (expressionS *main_exp, bfd_reloc_code_real_type *r_type_p)
{
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);
@@ -3315,7 +3315,7 @@ sh_fix_adjustable (fixS *fixP)
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
@@ -3644,7 +3644,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
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,
diff --git a/gas/config/tc-sh.h b/gas/config/tc-sh.h
index 404662578ed..22bc849792a 100644
--- a/gas/config/tc-sh.h
+++ b/gas/config/tc-sh.h
@@ -181,7 +181,7 @@ extern void sh_elf_final_processing (void);
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 *);
@@ -203,7 +203,7 @@ 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) \
More information about the Binutils-cvs
mailing list