[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) \