]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd/ELF: fold BFD_RELOC_<arch>_GOTPC*
authorJan Beulich <jbeulich@suse.com>
Thu, 9 Apr 2026 06:37:51 +0000 (08:37 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 9 Apr 2026 06:37:51 +0000 (08:37 +0200)
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.

19 files changed:
bfd/bfd-in2.h
bfd/elf32-arc.c
bfd/elf32-arm.c
bfd/elf32-i386.c
bfd/elf32-s390.c
bfd/elf32-sh.c
bfd/elf32-v850.c
bfd/elf64-s390.c
bfd/elf64-x86-64.c
bfd/libbfd.h
bfd/reloc.c
gas/config/tc-arc.c
gas/config/tc-arc.h
gas/config/tc-arm.c
gas/config/tc-i386.c
gas/config/tc-i386.h
gas/config/tc-s390.c
gas/config/tc-sh.c
gas/config/tc-sh.h

index 914f1b435a8dc5c89bbca6fe8a466b604de5978d..e1f16f40896e589faa18bbd1b4e464418840e8c1 100644 (file)
@@ -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,
 
index 8a8de3fde366ea73bafb21cc6795efb79696b879..8601a3d3c351adf13a459420246fc62d002518ab 100644 (file)
@@ -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
index 4f67775775817492c5f79f83beb86ee312274389..ab9fdda7e8931ee73207925df9970c2b3ed04fa9 100644 (file)
@@ -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},
index 1d65cad6f30ce04d3cc4ee3cd8b067bddd823a4f..9e27bed51c6ce42e1d36c4a0ddc89e64f469880d 100644 (file)
@@ -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];
 
index a520bec27803b9782c8e917919f1643d0c2542d4..8fec2f7d43fa1b907d11c9d474fd6890cad3f661 100644 (file)
@@ -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];
index 81bf415a27e18ebdf9e04d10d805f3df26f9025e..5dd019512edc0eee1b590377be0b5bba87bb889d 100644 (file)
@@ -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 },
index 6112eb9a58b77bf46289e98a245365303ecf0731..15acc25ac357cc5f8faca4b40e050b42c26fce63 100644 (file)
@@ -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                 },
index f635cba0bfbf53b5c762a96b805468d837a1bbb7..e9a7041d4150091e3498d4a5173018b39011a679 100644 (file)
@@ -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];
index ae18d9c909fee0f94fb15d66bf53ad526b68cd75..b3f008bd51d559f60be01bc24c624a3fea122521 100644 (file)
@@ -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, },
index 17df7667564f763282a979b90a18bcec263f8852..7ccabbd283ef738dedf84bebe72db646acf2e454 100644 (file)
@@ -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",
index bd12910a07d990ebecfabe832b6ee54feb49c98c..e41a8ccc6c1f6136e064bb102246c2c330ee135e 100644 (file)
@@ -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
index e86420c41e429d321f5eea4d837d0f4e715747e3..77d71fb25a8b35a3701ca19439644ef570aec429 100644 (file)
@@ -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:
index 0381469d4592c755b293b6330c9508a9f7436a58..5e0986a7a430a4f99b605a2f847654a11d95a320 100644 (file)
@@ -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           \
index 1dfd3d4ef8d54bf87113608673aa9887d92df783..392ae8d761d3617bf1a2d6bb36f82da5b2a0a716 100644 (file)
@@ -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
index 72217cf4f7ffd79b7cf20678f1cb882dd8268ea1..2a2d95bdd261c887ff40e205ab08751814699aba 100644 (file)
@@ -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,
index 7e3f62badda5852b5a4c3807b25946f91f04b1bb..bd3f4b5b59e394d712321ad840658f19c12187a5 100644 (file)
@@ -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       \
index f378b3a40116669e708be3f8ef571eadfd369afb..707306aac3896316d2bd6ebf636d9c120ad5c933 100644 (file)
@@ -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;
     }
 
index 04923915f4051578d9475fe731ab4473d2226127..b057830a233fa0aa6dab101faf9a26d0758e6765 100644 (file)
@@ -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,
index 404662578ed73adc9cd986dc4cb36285f6ff1094..22bc849792a8c4396a5788796ad75df8da0d101e 100644 (file)
@@ -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)   \