[binutils-gdb] bfd/ELF: fold BFD_RELOC_<arch>_GOTPC*

Jan Beulich via Binutils-cvs <[email protected]>
Newsgroups gmane.comp.gnu.binutils.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bec773f54ea89a33ac6115ff32074b08e519a944

commit bec773f54ea89a33ac6115ff32074b08e519a944
Author: Jan Beulich <[email protected]>
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)	\
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.