aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-02-04 06:02:13 -0800
committerH.J. Lu <hjl.tools@gmail.com>2021-02-04 06:06:44 -0800
commit1a2f1b54a520b28891910846c8671e1c4bcaf348 (patch)
treeb61a6448f833763aac399ceb12ff22d71ef6e2ec
parent37707bd8221c2e3f7676de8bee0c42ce3ab38c77 (diff)
downloadfsf-binutils-gdb-1a2f1b54a520b28891910846c8671e1c4bcaf348.zip
fsf-binutils-gdb-1a2f1b54a520b28891910846c8671e1c4bcaf348.tar.gz
fsf-binutils-gdb-1a2f1b54a520b28891910846c8671e1c4bcaf348.tar.bz2
x86-64: Provide more info when failed to convert GOTPCREL
Provide [hjl@gnu-cfl-2 ld]$ ./ld-new -z norelro -L/export/gnu/import/git/gitlab/x86-binutils/ld/testsuite/ld-x86-64 -melf32_x86_64 -Ttext=0x80000000 -o tmpdir/dump tmpdir/pr19609-7.o tmpdir/pr19609-7.o: in function `_start': (.text+0x2): failed to convert GOTPCREL relocation against 'foobar'; relink with --no-relax [hjl@gnu-cfl-2 ld]$ instead of [hjl@gnu-cfl-2 ld]$ ld -z norelro -L/export/gnu/import/git/gitlab/x86-binutils/ld/testsuite/ld-x86-64 -melf32_x86_64 -Ttext=0x80000000 -o tmpdir/dump tmpdir/pr19609-7.o ld: failed to convert GOTPCREL relocation; relink with --no-relax [hjl@gnu-cfl-2 ld]$ bfd/ PR ld/19609 * elf64-x86-64.c (elf_x86_64_relocate_section): Provide more info when failed to convert GOTPCREL relocation. ld/ PR ld/19609 * testsuite/ld-x86-64/pr19609-2a.d: Updated. * testsuite/ld-x86-64/pr19609-2b.d: Likewise. * testsuite/ld-x86-64/pr19609-4a.d: Likewise. * testsuite/ld-x86-64/pr19609-4c.d: Likewise. * testsuite/ld-x86-64/pr19609-5d.d: Likewise. * testsuite/ld-x86-64/pr19609-7a.d: Likewise. * testsuite/ld-x86-64/pr19609-7c.d: Likewise.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf64-x86-64.c13
-rw-r--r--ld/ChangeLog11
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-2a.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-2b.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-4a.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-4c.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-5d.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-7a.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr19609-7c.d2
10 files changed, 34 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 97ce3db..ba608e1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2021-02-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/19609
+ * elf64-x86-64.c (elf_x86_64_relocate_section): Provide more
+ info when failed to convert GOTPCREL relocation.
+
2021-02-04 Nelson Chu <nelson.chu@sifive.com>
* elfxx-riscv.c (riscv_parse_prefixed_ext): Removed zb*.
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 500f8bf..bba2200 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -2430,6 +2430,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
Elf_Internal_Rela *wrel;
Elf_Internal_Rela *relend;
unsigned int plt_entry_size;
+ bfd_boolean status;
/* Skip if check_relocs failed. */
if (input_section->check_relocs_failed)
@@ -2453,6 +2454,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
_bfd_x86_elf_set_tls_module_base (info);
+ status = TRUE;
rel = wrel = relocs;
relend = relocs + input_section->reloc_count;
for (; rel < relend; wrel++, rel++)
@@ -4118,8 +4120,13 @@ elf_x86_64_relocate_section (bfd *output_bfd,
if (converted_reloc)
{
info->callbacks->einfo
- (_("%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"));
- return FALSE;
+ ("%X%H:", input_bfd, input_section, rel->r_offset);
+ info->callbacks->einfo
+ (_(" failed to convert GOTPCREL relocation against "
+ "'%s'; relink with --no-relax\n"),
+ name);
+ status = FALSE;
+ continue;
}
(*info->callbacks->reloc_overflow)
(info, (h ? &h->root : NULL), name, howto->name,
@@ -4160,7 +4167,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
input_section->reloc_count -= deleted;
}
- return TRUE;
+ return status;
}
/* Finish up dynamic symbol handling. We set the contents of various
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3cd2be0..52639f3 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,16 @@
2021-02-04 H.J. Lu <hongjiu.lu@intel.com>
+ PR ld/19609
+ * testsuite/ld-x86-64/pr19609-2a.d: Updated.
+ * testsuite/ld-x86-64/pr19609-2b.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-4a.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-4c.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-5d.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-7a.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-7c.d: Likewise.
+
+2021-02-04 H.J. Lu <hongjiu.lu@intel.com>
+
PR ld/15146
* testsuite/ld-plugin/lto.exp: Run PR ld/15146 tests.
* testsuite/ld-plugin/pr15146.d: Restored.
diff --git a/ld/testsuite/ld-x86-64/pr19609-2a.d b/ld/testsuite/ld-x86-64/pr19609-2a.d
index 2bed641..6d3db92 100644
--- a/ld/testsuite/ld-x86-64/pr19609-2a.d
+++ b/ld/testsuite/ld-x86-64/pr19609-2a.d
@@ -1,4 +1,4 @@
#source: pr19609-2.s
#as: --64 -mrelax-relocations=yes
#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*
diff --git a/ld/testsuite/ld-x86-64/pr19609-2b.d b/ld/testsuite/ld-x86-64/pr19609-2b.d
index 3741ebb..4fee93d 100644
--- a/ld/testsuite/ld-x86-64/pr19609-2b.d
+++ b/ld/testsuite/ld-x86-64/pr19609-2b.d
@@ -1,4 +1,4 @@
#source: pr19609-2.s
#as: --x32 -mrelax-relocations=yes
#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*
diff --git a/ld/testsuite/ld-x86-64/pr19609-4a.d b/ld/testsuite/ld-x86-64/pr19609-4a.d
index f08843c..eb37d0c 100644
--- a/ld/testsuite/ld-x86-64/pr19609-4a.d
+++ b/ld/testsuite/ld-x86-64/pr19609-4a.d
@@ -1,4 +1,4 @@
#source: pr19609-4.s
#as: --64 -mrelax-relocations=yes
#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*
diff --git a/ld/testsuite/ld-x86-64/pr19609-4c.d b/ld/testsuite/ld-x86-64/pr19609-4c.d
index f08843c..eb37d0c 100644
--- a/ld/testsuite/ld-x86-64/pr19609-4c.d
+++ b/ld/testsuite/ld-x86-64/pr19609-4c.d
@@ -1,4 +1,4 @@
#source: pr19609-4.s
#as: --64 -mrelax-relocations=yes
#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*failed to convert GOTPCREL relocation against 'foo'; relink with --no-relax.*
diff --git a/ld/testsuite/ld-x86-64/pr19609-5d.d b/ld/testsuite/ld-x86-64/pr19609-5d.d
index 608c97b..0ab28ef 100644
--- a/ld/testsuite/ld-x86-64/pr19609-5d.d
+++ b/ld/testsuite/ld-x86-64/pr19609-5d.d
@@ -1,4 +1,4 @@
#source: pr19609-5.s
#as: --64 -mrelax-relocations=yes
#ld: -melf_x86_64 -Ttext=0x80000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'bar'; relink with --no-relax
diff --git a/ld/testsuite/ld-x86-64/pr19609-7a.d b/ld/testsuite/ld-x86-64/pr19609-7a.d
index 015a6ff..34704a9 100644
--- a/ld/testsuite/ld-x86-64/pr19609-7a.d
+++ b/ld/testsuite/ld-x86-64/pr19609-7a.d
@@ -1,4 +1,4 @@
#source: pr19609-7.s
#as: --64 -mrelax-relocations=yes
#ld: -melf_x86_64 -Ttext=0x80000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foobar'; relink with --no-relax
diff --git a/ld/testsuite/ld-x86-64/pr19609-7c.d b/ld/testsuite/ld-x86-64/pr19609-7c.d
index ff60049..09488e2 100644
--- a/ld/testsuite/ld-x86-64/pr19609-7c.d
+++ b/ld/testsuite/ld-x86-64/pr19609-7c.d
@@ -1,4 +1,4 @@
#source: pr19609-7.s
#as: --x32 -mrelax-relocations=yes
#ld: -melf32_x86_64 -Ttext=0x80000000
-#error: failed to convert GOTPCREL relocation; relink with --no-relax
+#error: .*failed to convert GOTPCREL relocation against 'foobar'; relink with --no-relax