aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-09-05 13:41:18 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-09-05 13:43:02 -0700
commitdc089072135ec2e30337879b1f6147b77c77b341 (patch)
tree237a2de944c7be5b73d3ccf182d8ac0498d2c6a0
parent5ca79eae06a692cca5bb795045ffb8961e2b8ae8 (diff)
downloadfsf-binutils-gdb-dc089072135ec2e30337879b1f6147b77c77b341.zip
fsf-binutils-gdb-dc089072135ec2e30337879b1f6147b77c77b341.tar.gz
fsf-binutils-gdb-dc089072135ec2e30337879b1f6147b77c77b341.tar.bz2
x86-64: Properly set converted_reloc
Linker now generates failed to convert GOTPCREL relocation; relink with --no-relax for more cases. bfd/ * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Properly set converted_reloc. ld/ * testsuite/ld-x86-64/pr19609-5d.d: Updated. * testsuite/ld-x86-64/pr19609-7a.d: Likewise. * testsuite/ld-x86-64/pr19609-7c.d: Likewise.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf64-x86-64.c2
-rw-r--r--ld/ChangeLog6
-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
6 files changed, 15 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 551891d..7e98b61 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2017-09-05 H.J. Lu <hongjiu.lu@intel.com>
+ * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Properly set
+ converted_reloc.
+
+2017-09-05 H.J. Lu <hongjiu.lu@intel.com>
+
* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Remove the sec
argument. Don't check relocation overflow. Avoid relocation
overflow if --no-relax is used. Set converted_reloc on symbol
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index ddbf133..bb47191 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -1597,10 +1597,10 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
if (no_overflow)
return TRUE;
+convert:
if (h != NULL)
((struct elf_x86_link_hash_entry *) h)->converted_reloc = 1;
-convert:
if (opcode == 0xff)
{
/* We have "call/jmp *foo@GOTPCREL(%rip)". */
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 983c471..7313795 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,11 @@
2017-09-05 H.J. Lu <hongjiu.lu@intel.com>
+ * testsuite/ld-x86-64/pr19609-5d.d: Updated.
+ * testsuite/ld-x86-64/pr19609-7a.d: Likewise.
+ * testsuite/ld-x86-64/pr19609-7c.d: Likewise.
+
+2017-09-05 H.J. Lu <hongjiu.lu@intel.com>
+
* testsuite/ld-x86-64/pr19609-4e.d: Updated.
* testsuite/ld-x86-64/pr19609-6a.d: Likewise.
diff --git a/ld/testsuite/ld-x86-64/pr19609-5d.d b/ld/testsuite/ld-x86-64/pr19609-5d.d
index 959c63e..608c97b 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: .*relocation truncated to fit: R_X86_64_PC32 .*
+#error: failed to convert GOTPCREL relocation; 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 d960572..015a6ff 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: .*relocation truncated to fit: R_X86_64_PC32 .*
+#error: failed to convert GOTPCREL relocation; 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 8bd919a..ff60049 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: .*relocation truncated to fit: R_X86_64_PC32 .*
+#error: failed to convert GOTPCREL relocation; relink with --no-relax