OSDN Git Service

Remove ABI_64_P check on R_X86_64_PCXX
authorhjl <hjl>
Tue, 10 Jan 2012 20:18:14 +0000 (20:18 +0000)
committerhjl <hjl>
Tue, 10 Jan 2012 20:18:14 +0000 (20:18 +0000)
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.

bfd/ChangeLog
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-x86-64/ilp32-10.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-10.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-4.d
ld/testsuite/ld-x86-64/ilp32-4.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-5.d
ld/testsuite/ld-x86-64/ilp32-5.s
ld/testsuite/ld-x86-64/x86-64.exp

index d00fd06..a8373ff 100644 (file)
@@ -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
index 25c14a8..814736e 100644 (file)
@@ -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)
index 655919a..e7225dc 100644 (file)
@@ -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 (file)
index 0000000..43d9fbd
--- /dev/null
@@ -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 (file)
index 0000000..70e4a90
--- /dev/null
@@ -0,0 +1,3 @@
+       .globl foo
+foo:
+       mov bar(%rip), %rax
index 84dc7b2..92d8a67 100644 (file)
@@ -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 (file)
index 0000000..5f270c7
--- /dev/null
@@ -0,0 +1,3 @@
+       .globl _start
+_start:
+       ret
index e4673e5..4870c2b 100644 (file)
@@ -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
index 0d97807..ef0c60e 100644 (file)
@@ -1,6 +1,6 @@
        .globl bar
 bar:
-       mov foo(%rip), %rax
+       mov foo@GOTPCREL(%rip), %rax
 
        .data
 xxx:
index e493278..f713ca5 100644 (file)
@@ -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"