X32: Place .plt.got section after .plt section
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 10 Jan 2017 21:57:39 +0000 (13:57 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 10 Jan 2017 21:57:39 +0000 (13:57 -0800)
This patch places .plt.got section after .plt section for x32.

* emulparams/elf32_x86_64.sh (TINY_READONLY_SECTION): New.
* testsuite/ld-x86-64/pr20830.d: Renamed to ...
* testsuite/ld-x86-64/pr20830a.d: This.  Updated.
* testsuite/ld-x86-64/pr20830b.d: New file.
* testsuite/ld-x86-64/x86-64.exp: Rename pr20830 to pr20830a.
Run pr20830b.

ld/ChangeLog
ld/emulparams/elf32_x86_64.sh
ld/testsuite/ld-x86-64/pr20830.d [deleted file]
ld/testsuite/ld-x86-64/pr20830a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr20830b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp

index 57d73873c6d1d2c37f4c90b13a7dcb223480c0df..d931ea1c177e513364083603a787fa87aad3e73e 100644 (file)
@@ -1,3 +1,12 @@
+2017-01-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * emulparams/elf32_x86_64.sh (TINY_READONLY_SECTION): New.
+       * testsuite/ld-x86-64/pr20830.d: Renamed to ...
+       * testsuite/ld-x86-64/pr20830a.d: This.  Updated.
+       * testsuite/ld-x86-64/pr20830b.d: New file.
+       * testsuite/ld-x86-64/x86-64.exp: Rename pr20830 to pr20830a.
+       Run pr20830b.
+
 2017-01-10  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/20830
index 9050730834f4b484e2d1b472cb27a1d71461d484..9b8523947eca6c98ccc36cb4b512ff1b2596ad80 100644 (file)
@@ -21,6 +21,10 @@ LARGE_SECTIONS=yes
 LARGE_BSS_AFTER_BSS=
 SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
 IREL_IN_PLT=
+# Reuse TINY_READONLY_SECTION which is placed right after .plt section.
+TINY_READONLY_SECTION="
+.plt.got      ${RELOCATING-0} : { *(.plt.got) }
+"
 
 if [ "x${host}" = "x${target}" ]; then
   case " $EMULATION_LIBPATH " in
diff --git a/ld/testsuite/ld-x86-64/pr20830.d b/ld/testsuite/ld-x86-64/pr20830.d
deleted file mode 100644 (file)
index 2dc0f30..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#name: PR ld/20830 (.plt.got)
-#as: --64
-#ld: -melf_x86_64 -shared -z relro --ld-generated-unwind-info
-#objdump: -dw -Wf
-
-.*: +file format .*
-
-Contents of the .eh_frame section:
-
-0+ 0000000000000014 00000000 CIE
-  Version:               1
-  Augmentation:          "zR"
-  Code alignment factor: 1
-  Data alignment factor: -8
-  Return address column: 16
-  Augmentation data:     1b
-
-  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
-  DW_CFA_offset: r16 \(rip\) at cfa-8
-  DW_CFA_nop
-  DW_CFA_nop
-
-0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000238..0000000000000244
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-
-0+30 0000000000000024 00000034 FDE cie=00000000 pc=0000000000000220..0000000000000230
-  DW_CFA_def_cfa_offset: 16
-  DW_CFA_advance_loc: 6 to 0000000000000226
-  DW_CFA_def_cfa_offset: 24
-  DW_CFA_advance_loc: 10 to 0000000000000230
-  DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit11; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\)
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-
-0+58 0000000000000014 0000005c FDE cie=00000000 pc=0000000000000230..0000000000000238
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-  DW_CFA_nop
-
-
-Disassembly of section .plt:
-
-0+220 <.plt>:
- +[a-f0-9]+:   ff 35 e2 0d 20 00       pushq  0x200de2\(%rip\)        # 201008 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+:   ff 25 e4 0d 20 00       jmpq   \*0x200de4\(%rip\)        # 201010 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+:   0f 1f 40 00             nopl   0x0\(%rax\)
-
-Disassembly of section .plt.got:
-
-0+230 <.plt.got>:
- +[a-f0-9]+:   ff 25 c2 0d 20 00       jmpq   \*0x200dc2\(%rip\)        # 200ff8 <func>
- +[a-f0-9]+:   66 90                   xchg   %ax,%ax
-
-Disassembly of section .text:
-
-0+238 <foo>:
- +[a-f0-9]+:   e8 f3 ff ff ff          callq  230 <.plt.got>
- +[a-f0-9]+:   48 8b 05 b4 0d 20 00    mov    0x200db4\(%rip\),%rax        # 200ff8 <func>
-#pass
diff --git a/ld/testsuite/ld-x86-64/pr20830a.d b/ld/testsuite/ld-x86-64/pr20830a.d
new file mode 100644 (file)
index 0000000..87ea25d
--- /dev/null
@@ -0,0 +1,72 @@
+#name: PR ld/20830 (.plt.got)
+#source: pr20830.s
+#as: --64
+#ld: -melf_x86_64 -shared -z relro --ld-generated-unwind-info
+#objdump: -dw -Wf
+
+.*: +file format .*
+
+Contents of the .eh_frame section:
+
+0+ 0000000000000014 00000000 CIE
+  Version:               1
+  Augmentation:          "zR"
+  Code alignment factor: 1
+  Data alignment factor: -8
+  Return address column: 16
+  Augmentation data:     1b
+
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
+  DW_CFA_nop
+  DW_CFA_nop
+
+0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000238..0000000000000244
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+0+30 0000000000000024 00000034 FDE cie=00000000 pc=0000000000000220..0000000000000230
+  DW_CFA_def_cfa_offset: 16
+  DW_CFA_advance_loc: 6 to 0000000000000226
+  DW_CFA_def_cfa_offset: 24
+  DW_CFA_advance_loc: 10 to 0000000000000230
+  DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit11; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\)
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+0+58 0000000000000014 0000005c FDE cie=00000000 pc=0000000000000230..0000000000000238
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+
+Disassembly of section .plt:
+
+0+220 <.plt>:
+ +[a-f0-9]+:   ff 35 e2 0d 20 00       pushq  0x200de2\(%rip\)        # 201008 <_GLOBAL_OFFSET_TABLE_\+0x8>
+ +[a-f0-9]+:   ff 25 e4 0d 20 00       jmpq   \*0x200de4\(%rip\)        # 201010 <_GLOBAL_OFFSET_TABLE_\+0x10>
+ +[a-f0-9]+:   0f 1f 40 00             nopl   0x0\(%rax\)
+
+Disassembly of section .plt.got:
+
+0+230 <.plt.got>:
+ +[a-f0-9]+:   ff 25 c2 0d 20 00       jmpq   \*0x200dc2\(%rip\)        # 200ff8 <func>
+ +[a-f0-9]+:   66 90                   xchg   %ax,%ax
+
+Disassembly of section .text:
+
+0+238 <foo>:
+ +[a-f0-9]+:   e8 f3 ff ff ff          callq  230 <.plt.got>
+ +[a-f0-9]+:   48 8b 05 b4 0d 20 00    mov    0x200db4\(%rip\),%rax        # 200ff8 <func>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr20830b.d b/ld/testsuite/ld-x86-64/pr20830b.d
new file mode 100644 (file)
index 0000000..5bd5b8e
--- /dev/null
@@ -0,0 +1,66 @@
+#name: PR ld/20830 (.plt.got)
+#source: pr20830.s
+#as: --x32
+#ld: -melf32_x86_64 -shared -z relro --ld-generated-unwind-info
+#objdump: -dw -Wf
+
+.*: +file format .*
+
+Contents of the .eh_frame section:
+
+0+ 0000000000000014 00000000 CIE
+  Version:               1
+  Augmentation:          "zR"
+  Code alignment factor: 1
+  Data alignment factor: -8
+  Return address column: 16
+  Augmentation data:     1b
+
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
+  DW_CFA_nop
+  DW_CFA_nop
+
+0+18 0000000000000010 0000001c FDE cie=00000000 pc=0000000000000188..0000000000000194
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+0+2c ZERO terminator
+
+
+0+30 0000000000000020 00000034 FDE cie=00000000 pc=0000000000000170..0000000000000180
+  DW_CFA_def_cfa_offset: 16
+  DW_CFA_advance_loc: 6 to 0000000000000176
+  DW_CFA_def_cfa_offset: 24
+  DW_CFA_advance_loc: 10 to 0000000000000180
+  DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit11; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\)
+
+0+54 ZERO terminator
+
+
+0+58 0000000000000010 0000005c FDE cie=00000000 pc=0000000000000180..0000000000000188
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+
+Disassembly of section .plt:
+
+0+170 <.plt>:
+ +[a-f0-9]+:   ff 35 92 0e 20 00       pushq  0x200e92\(%rip\)        # 201008 <_GLOBAL_OFFSET_TABLE_\+0x8>
+ +[a-f0-9]+:   ff 25 94 0e 20 00       jmpq   \*0x200e94\(%rip\)        # 201010 <_GLOBAL_OFFSET_TABLE_\+0x10>
+ +[a-f0-9]+:   0f 1f 40 00             nopl   0x0\(%rax\)
+
+Disassembly of section .plt.got:
+
+0+180 <.plt.got>:
+ +[a-f0-9]+:   ff 25 72 0e 20 00       jmpq   \*0x200e72\(%rip\)        # 200ff8 <func>
+ +[a-f0-9]+:   66 90                   xchg   %ax,%ax
+
+Disassembly of section .text:
+
+0+188 <foo>:
+ +[a-f0-9]+:   e8 f3 ff ff ff          callq  180 <.plt.got>
+ +[a-f0-9]+:   48 8b 05 64 0e 20 00    mov    0x200e64\(%rip\),%rax        # 200ff8 <func>
+#pass
index 878e28e878eae775295a3d80d76ced8510a13bfa..f6b18bd7307f455e670b318482dd5eecb1ecebdd 100644 (file)
@@ -1019,4 +1019,5 @@ if { ![istarget "x86_64-*-linux*"]} {
 run_dump_test "pr17618"
 run_dump_test "pltgot-1"
 run_dump_test "pltgot-2"
-run_dump_test "pr20830"
+run_dump_test "pr20830a"
+run_dump_test "pr20830b"