From 87070c082fd5c23e9a0e7994ff9ea13f6faecb3e Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 7 Apr 2015 22:23:21 +0930 Subject: [PATCH] Modify get_reloc_section for targets that map .got.plt to .got Fixes tic6x testsuite failures due to .rela.plt having a zero sh_info. I considered passing link_info to get_reloc_section so we could directly return the .got.plt output section, but we need the fallback to name lookup anyway for objcopy. bfd/ * elf.c (_bfd_elf_get_reloc_section): Allow for .got.plt being mapped to output .got section. ld/testsuite/ * ld-arm/tls-gdesc-nlazy.g: Adjust for readelf note. * ld-tic6x/shlib-1.rd: Expect corrected .rela.plt sh_info. * ld-tic6x/shlib-1b.rd: Likewise. * ld-tic6x/shlib-1r.rd: Likewise. * ld-tic6x/shlib-1rb.rd: Likewise. * ld-tic6x/shlib-app-1.rd: Likewise. * ld-tic6x/shlib-app-1b.rd: Likewise. * ld-tic6x/shlib-app-1r.rd: Likewise. * ld-tic6x/shlib-app-1rb.rd: Likewise. * ld-tic6x/shlib-noindex.rd: Likewise. --- bfd/ChangeLog | 5 +++++ bfd/elf.c | 10 +++++++++- ld/testsuite/ChangeLog | 13 +++++++++++++ ld/testsuite/ld-arm/tls-gdesc-nlazy.g | 1 + ld/testsuite/ld-tic6x/shlib-1.rd | 2 +- ld/testsuite/ld-tic6x/shlib-1b.rd | 2 +- ld/testsuite/ld-tic6x/shlib-1r.rd | 2 +- ld/testsuite/ld-tic6x/shlib-1rb.rd | 2 +- ld/testsuite/ld-tic6x/shlib-app-1.rd | 2 +- ld/testsuite/ld-tic6x/shlib-app-1b.rd | 2 +- ld/testsuite/ld-tic6x/shlib-app-1r.rd | 2 +- ld/testsuite/ld-tic6x/shlib-app-1rb.rd | 2 +- ld/testsuite/ld-tic6x/shlib-noindex.rd | 2 +- 13 files changed, 37 insertions(+), 10 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 47635858b9c..192d9aa04c4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2015-04-07 Alan Modra + + * elf.c (_bfd_elf_get_reloc_section): Allow for .got.plt being + mapped to output .got section. + 2015-04-07 Alan Modra * elf32-ppc.c (struct ppc_elf_link_hash_entry): Add has_addr16_ha diff --git a/bfd/elf.c b/bfd/elf.c index bb5f1c6852d..5fad4f171de 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -3102,7 +3102,15 @@ _bfd_elf_get_reloc_section (asection *reloc_sec) abfd = reloc_sec->owner; if (get_elf_backend_data (abfd)->want_got_plt && strcmp (name, ".plt") == 0) - name = ".got.plt"; + { + /* .got.plt is a linker created input section. It may be mapped + to some other output section. Try two likely sections. */ + name = ".got.plt"; + reloc_sec = bfd_get_section_by_name (abfd, name); + if (reloc_sec != NULL) + return reloc_sec; + name = ".got"; + } reloc_sec = bfd_get_section_by_name (abfd, name); return reloc_sec; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 5036af1f030..49a74f732c8 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2015-04-07 Alan Modra + + * ld-arm/tls-gdesc-nlazy.g: Adjust for readelf note. + * ld-tic6x/shlib-1.rd: Expect corrected .rela.plt sh_info. + * ld-tic6x/shlib-1b.rd: Likewise. + * ld-tic6x/shlib-1r.rd: Likewise. + * ld-tic6x/shlib-1rb.rd: Likewise. + * ld-tic6x/shlib-app-1.rd: Likewise. + * ld-tic6x/shlib-app-1b.rd: Likewise. + * ld-tic6x/shlib-app-1r.rd: Likewise. + * ld-tic6x/shlib-app-1rb.rd: Likewise. + * ld-tic6x/shlib-noindex.rd: Likewise. + 2015-04-06 H.J. Lu * ld-elf/compress.exp: Remove is_zlib_supported check. diff --git a/ld/testsuite/ld-arm/tls-gdesc-nlazy.g b/ld/testsuite/ld-arm/tls-gdesc-nlazy.g index 4b53a9819b5..f36ed1dcb6e 100644 --- a/ld/testsuite/ld-arm/tls-gdesc-nlazy.g +++ b/ld/testsuite/ld-arm/tls-gdesc-nlazy.g @@ -1,4 +1,5 @@ Hex dump of section '.got': +#... 0x[0-9a-f]+ [0-9a-f]+ 00000000 00000000 00000000 ................ 0x[0-9a-f]+ 00000000 00000000 00000000 ............ diff --git a/ld/testsuite/ld-tic6x/shlib-1.rd b/ld/testsuite/ld-tic6x/shlib-1.rd index 58183262061..3d253d22806 100644 --- a/ld/testsuite/ld-tic6x/shlib-1.rd +++ b/ld/testsuite/ld-tic6x/shlib-1.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4 \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4 \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-1b.rd b/ld/testsuite/ld-tic6x/shlib-1b.rd index 58183262061..3d253d22806 100644 --- a/ld/testsuite/ld-tic6x/shlib-1b.rd +++ b/ld/testsuite/ld-tic6x/shlib-1b.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4 \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4 \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-1r.rd b/ld/testsuite/ld-tic6x/shlib-1r.rd index 58183262061..3d253d22806 100644 --- a/ld/testsuite/ld-tic6x/shlib-1r.rd +++ b/ld/testsuite/ld-tic6x/shlib-1r.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4 \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4 \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.rd b/ld/testsuite/ld-tic6x/shlib-1rb.rd index 58183262061..3d253d22806 100644 --- a/ld/testsuite/ld-tic6x/shlib-1rb.rd +++ b/ld/testsuite/ld-tic6x/shlib-1rb.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4 \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4 \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.rd b/ld/testsuite/ld-tic6x/shlib-app-1.rd index db1c560097b..9c62d6b2c7c 100644 --- a/ld/testsuite/ld-tic6x/shlib-app-1.rd +++ b/ld/testsuite/ld-tic6x/shlib-app-1.rd @@ -10,7 +10,7 @@ Section Headers: \[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c AI 2 12 4 \[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c AI 2 13 4 \[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4 - \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 9 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 11 4 \[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 \[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 \[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1b.rd b/ld/testsuite/ld-tic6x/shlib-app-1b.rd index 086f21abb18..8b5f5fa9f9c 100644 --- a/ld/testsuite/ld-tic6x/shlib-app-1b.rd +++ b/ld/testsuite/ld-tic6x/shlib-app-1b.rd @@ -10,7 +10,7 @@ Section Headers: \[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c AI 2 12 4 \[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c AI 2 13 4 \[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4 - \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 9 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 11 4 \[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 \[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 \[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.rd b/ld/testsuite/ld-tic6x/shlib-app-1r.rd index f09738cbcba..a4737f510af 100644 --- a/ld/testsuite/ld-tic6x/shlib-app-1r.rd +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 0000810c 00110c 000018 0c AI 2 10 4 \[ 5\] \.rela\.bss RELA 00008124 001124 00000c 0c AI 2 12 4 \[ 6\] \.dynamic DYNAMIC 00008130 001130 0000b8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 \[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1rb.rd b/ld/testsuite/ld-tic6x/shlib-app-1rb.rd index a49fc05ce9a..7d70d9e01b9 100644 --- a/ld/testsuite/ld-tic6x/shlib-app-1rb.rd +++ b/ld/testsuite/ld-tic6x/shlib-app-1rb.rd @@ -9,7 +9,7 @@ Section Headers: \[ 4\] \.rela\.got RELA 00008110 001110 000018 0c AI 2 10 4 \[ 5\] \.rela\.bss RELA 00008128 001128 00000c 0c AI 2 12 4 \[ 6\] \.dynamic DYNAMIC 00008134 001134 0000b8 08 WA 3 0 4 - \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 8 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c AI 2 10 4 \[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 \[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 \[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.rd b/ld/testsuite/ld-tic6x/shlib-noindex.rd index 62d237b5e4d..2a9389c7b4c 100644 --- a/ld/testsuite/ld-tic6x/shlib-noindex.rd +++ b/ld/testsuite/ld-tic6x/shlib-noindex.rd @@ -10,7 +10,7 @@ Section Headers: \[ 5\] \.rela\.got RELA 0000814c 00114c 000024 0c AI 2 11 4 \[ 6\] \.rela\.neardata RELA 00008170 001170 000018 0c AI 2 12 4 \[ 7\] \.dynamic DYNAMIC 00008188 001188 0000b0 08 WA 3 0 4 - \[ 8\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 9 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 000018 0c AI 2 11 4 \[ 9\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 \[10\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 \[11\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 -- 2.30.2