aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-01-10 20:18:18 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-01-10 20:18:18 +0000
commitdf4f944355eead7d98a0183c8d696977c5dadc17 (patch)
tree1cbd5af5e81b0bf22bfe66047bd440e8a5a33d09
parent9934703b912c81702a1a74dd0337d5e3fd291a0f (diff)
downloadgdb-df4f944355eead7d98a0183c8d696977c5dadc17.zip
gdb-df4f944355eead7d98a0183c8d696977c5dadc17.tar.gz
gdb-df4f944355eead7d98a0183c8d696977c5dadc17.tar.bz2
Remove ABI_64_P check on R_X86_64_PCXX
bfd/ 2012-01-10 H.J. Lu <hongjiu.lu@intel.com> PR ld/13581 * elf64-x86-64.c (elf_x86_64_relocate_section): Remove ABI_64_P check on R_X86_64_PCXX. ld/testsuite/ 2012-01-10 H.J. Lu <hongjiu.lu@intel.com> PR ld/13581 * ld-x86-64/ilp32-4.s: New. * ld-x86-64/ilp32-10.d: Likewise. * ld-x86-64/ilp32-10.s: Likewise. * ld-x86-64/ilp32-4.d: Adjusted. * ld-x86-64/ilp32-5.d: Likewise. * ld-x86-64/ilp32-5.s: Likewise. * ld-x86-64/x86-64.exp: Run ilp32-10.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf64-x86-64.c1
-rw-r--r--ld/testsuite/ChangeLog13
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-10.d3
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-10.s3
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-4.d32
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-4.s3
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-5.d2
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-5.s2
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp1
10 files changed, 44 insertions, 22 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d00fd06..a8373ff 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/13581
+ * elf64-x86-64.c (elf_x86_64_relocate_section): Remove ABI_64_P
+ check on R_X86_64_PCXX.
+
2012-01-10 Tristan Gingold <gingold@adacore.com>
* mach-o.c (bfd_mach_o_build_commands): Avoid uninitialized false
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 25c14a8..814736e 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -3472,7 +3472,6 @@ elf_x86_64_relocate_section (bfd *output_bfd,
case R_X86_64_PC16:
case R_X86_64_PC32:
if (info->shared
- && ABI_64_P (output_bfd)
&& (input_section->flags & SEC_ALLOC) != 0
&& (input_section->flags & SEC_READONLY) != 0
&& h != NULL)
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 655919a..e7225dc 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2012-01-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/13581
+ * ld-x86-64/ilp32-4.s: New.
+ * ld-x86-64/ilp32-10.d: Likewise.
+ * ld-x86-64/ilp32-10.s: Likewise.
+
+ * ld-x86-64/ilp32-4.d: Adjusted.
+ * ld-x86-64/ilp32-5.d: Likewise.
+ * ld-x86-64/ilp32-5.s: Likewise.
+
+ * ld-x86-64/x86-64.exp: Run ilp32-10.
+
2012-01-05 Nick Clifton <nickc@redhat.com>
* ld-x86-64/x86-64.exp: Add test of linking mixed 32-bit and
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.d b/ld/testsuite/ld-x86-64/ilp32-10.d
new file mode 100644
index 0000000..43d9fbd
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.d
@@ -0,0 +1,3 @@
+#as: --x32
+#ld: -shared -melf32_x86_64
+#error: .*relocation R_X86_64_PC32 against undefined symbol `bar' can not be used when making a shared object; recompile with -fPIC
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.s b/ld/testsuite/ld-x86-64/ilp32-10.s
new file mode 100644
index 0000000..70e4a90
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.s
@@ -0,0 +1,3 @@
+ .globl foo
+foo:
+ mov bar(%rip), %rax
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.d b/ld/testsuite/ld-x86-64/ilp32-4.d
index 84dc7b2..92d8a67 100644
--- a/ld/testsuite/ld-x86-64/ilp32-4.d
+++ b/ld/testsuite/ld-x86-64/ilp32-4.d
@@ -1,36 +1,30 @@
-#source: start.s
#as: --x32
#ld: -m elf32_x86_64 -shared --no-ld-generated-unwind-info
#readelf: -d -S --wide
-There are 10 section headers, starting at offset 0x22c:
+There are 9 section headers, starting at offset 0x1d8:
Section Headers:
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
- \[ 1\] .hash HASH 00000094 000094 000030 04 A 2 0 4
- \[ 2\] .dynsym DYNSYM 000000c4 0000c4 000070 10 A 3 2 4
- \[ 3\] .dynstr STRTAB 00000134 000134 00001d 00 A 0 0 1
- \[ 4\] .rela.dyn RELA 00000154 000154 00000c 0c A 2 0 4
- \[ 5\] .text PROGBITS 00000160 000160 000005 00 AX 0 0 4
- \[ 6\] .dynamic DYNAMIC 00200168 000168 000078 08 WA 3 0 4
- \[ 7\] .shstrtab STRTAB 00000000 0001e0 00004a 00 0 0 1
- \[ 8\] .symtab SYMTAB 00000000 0003bc 0000e0 10 9 9 4
- \[ 9\] .strtab STRTAB 00000000 00049c 000043 00 0 0 1
+ \[ 1\] .hash HASH 00000094 000094 00002c 04 A 2 0 4
+ \[ 2\] .dynsym DYNSYM 000000c0 0000c0 000060 10 A 3 2 4
+ \[ 3\] .dynstr STRTAB 00000120 000120 000019 00 A 0 0 1
+ \[ 4\] .text PROGBITS 0000013c 00013c 000001 00 AX 0 0 4
+ \[ 5\] .dynamic DYNAMIC 00200140 000140 000058 08 WA 3 0 4
+ \[ 6\] .shstrtab STRTAB 00000000 000198 000040 00 0 0 1
+ \[ 7\] .symtab SYMTAB 00000000 000340 0000c0 10 8 8 4
+ \[ 8\] .strtab STRTAB 00000000 000400 00003f 00 0 0 1
Key to Flags:
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\), l \(large\)
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
-Dynamic section at offset 0x168 contains 10 entries:
+Dynamic section at offset 0x140 contains 6 entries:
Tag Type Name/Value
0x00000004 \(HASH\) 0x94
- 0x00000005 \(STRTAB\) 0x134
- 0x00000006 \(SYMTAB\) 0xc4
- 0x0000000a \(STRSZ\) 29 \(bytes\)
+ 0x00000005 \(STRTAB\) 0x120
+ 0x00000006 \(SYMTAB\) 0xc0
+ 0x0000000a \(STRSZ\) 25 \(bytes\)
0x0000000b \(SYMENT\) 16 \(bytes\)
- 0x00000007 \(RELA\) 0x154
- 0x00000008 \(RELASZ\) 12 \(bytes\)
- 0x00000009 \(RELAENT\) 12 \(bytes\)
- 0x00000016 \(TEXTREL\) 0x0
0x00000000 \(NULL\) 0x0
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.s b/ld/testsuite/ld-x86-64/ilp32-4.s
new file mode 100644
index 0000000..5f270c7
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-4.s
@@ -0,0 +1,3 @@
+ .globl _start
+_start:
+ ret
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.d b/ld/testsuite/ld-x86-64/ilp32-5.d
index e4673e5..4870c2b 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.d
+++ b/ld/testsuite/ld-x86-64/ilp32-5.d
@@ -4,5 +4,5 @@
#...
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+
-[0-9a-f]+ +[0-9a-f]+ +R_X86_64_PC32 +[0-9a-f]+ +foo - 4
+[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ +foo \+ 0
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_32 +[0-9a-f]+ +foo \+ 0
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.s b/ld/testsuite/ld-x86-64/ilp32-5.s
index 0d97807..ef0c60e 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.s
+++ b/ld/testsuite/ld-x86-64/ilp32-5.s
@@ -1,6 +1,6 @@
.globl bar
bar:
- mov foo(%rip), %rax
+ mov foo@GOTPCREL(%rip), %rax
.data
xxx:
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index e493278..f713ca5 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -211,6 +211,7 @@ run_dump_test "ilp32-6"
run_dump_test "ilp32-7"
run_dump_test "ilp32-8"
run_dump_test "ilp32-9"
+run_dump_test "ilp32-10"
run_dump_test "ia32-1"
run_dump_test "ia32-2"
run_dump_test "ia32-3"