aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog12
-rw-r--r--ld/testsuite/ld-ifunc/pr17154-i386.d47
-rw-r--r--ld/testsuite/ld-ifunc/pr17154-x86-64.d46
-rw-r--r--ld/testsuite/ld-ifunc/pr17154-x86.s28
-rw-r--r--ld/testsuite/ld-x86-64/bnd-ifunc-2.d54
-rw-r--r--ld/testsuite/ld-x86-64/bnd-ifunc-2.s28
-rw-r--r--ld/testsuite/ld-x86-64/mpx.exp1
-rw-r--r--ld/testsuite/ld-x86-64/tlsdesc-nacl.pd4
-rw-r--r--ld/testsuite/ld-x86-64/tlsdesc.pd3
9 files changed, 218 insertions, 5 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 7c81ddf..e940e1a 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,15 @@
+2014-07-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/17154
+ * ld-ifunc/pr17154-i386.d: New file.
+ * ld-ifunc/pr17154-x86-64.d: Likewise.
+ * ld-ifunc/pr17154-x86.s: Likewise.
+ * ld-x86-64/bnd-ifunc-2.d: Likewise.
+ * ld-x86-64/bnd-ifunc-2.s: Likewise.
+ * ld-x86-64/mpx.exp: Run bnd-ifunc-2.
+ * ld-x86-64/tlsdesc-nacl.pd: Updated.
+ * ld-x86-64/tlsdesc.pd: Likewise.
+
2014-07-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17057
diff --git a/ld/testsuite/ld-ifunc/pr17154-i386.d b/ld/testsuite/ld-ifunc/pr17154-i386.d
new file mode 100644
index 0000000..e526223
--- /dev/null
+++ b/ld/testsuite/ld-ifunc/pr17154-i386.d
@@ -0,0 +1,47 @@
+#source: pr17154-x86.s
+#ld: -m elf_i386 -shared
+#as: --32
+#objdump: -dw
+#target: x86_64-*-* i?86-*-*
+
+#...
+0+1d0 <\*ABS\*@plt-0x10>:
+[ ]*[a-f0-9]+: ff b3 04 00 00 00 pushl 0x4\(%ebx\)
+[ ]*[a-f0-9]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
+[ ]*[a-f0-9]+: 00 00 add %al,\(%eax\)
+ ...
+
+0+1e0 <\*ABS\*@plt>:
+[ ]*[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
+[ ]*[a-f0-9]+: 68 18 00 00 00 push \$0x18
+[ ]*[a-f0-9]+: e9 e0 ff ff ff jmp 1d0 <\*ABS\*@plt-0x10>
+
+0+1f0 <func1@plt>:
+[ ]*[a-f0-9]+: ff a3 10 00 00 00 jmp \*0x10\(%ebx\)
+[ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0
+[ ]*[a-f0-9]+: e9 d0 ff ff ff jmp 1d0 <\*ABS\*@plt-0x10>
+
+0+200 <func2@plt>:
+[ ]*[a-f0-9]+: ff a3 14 00 00 00 jmp \*0x14\(%ebx\)
+[ ]*[a-f0-9]+: 68 08 00 00 00 push \$0x8
+[ ]*[a-f0-9]+: e9 c0 ff ff ff jmp 1d0 <\*ABS\*@plt-0x10>
+
+0+210 <\*ABS\*@plt>:
+[ ]*[a-f0-9]+: ff a3 18 00 00 00 jmp \*0x18\(%ebx\)
+[ ]*[a-f0-9]+: 68 10 00 00 00 push \$0x10
+[ ]*[a-f0-9]+: e9 b0 ff ff ff jmp 1d0 <\*ABS\*@plt-0x10>
+
+Disassembly of section .text:
+
+0+220 <resolve1>:
+[ ]*[a-f0-9]+: e8 cb ff ff ff call 1f0 <func1@plt>
+
+0+225 <g1>:
+[ ]*[a-f0-9]+: e9 e6 ff ff ff jmp 210 <\*ABS\*@plt>
+
+0+22a <resolve2>:
+[ ]*[a-f0-9]+: e8 d1 ff ff ff call 200 <func2@plt>
+
+0+22f <g2>:
+[ ]*[a-f0-9]+: e9 ac ff ff ff jmp 1e0 <\*ABS\*@plt>
+#pass
diff --git a/ld/testsuite/ld-ifunc/pr17154-x86-64.d b/ld/testsuite/ld-ifunc/pr17154-x86-64.d
new file mode 100644
index 0000000..0dbc547
--- /dev/null
+++ b/ld/testsuite/ld-ifunc/pr17154-x86-64.d
@@ -0,0 +1,46 @@
+#source: pr17154-x86.s
+#as: --64
+#ld: -shared -melf_x86_64
+#objdump: -dw
+#target: x86_64-*-*
+
+#...
+0+2d0 <\*ABS\*\+0x32a@plt-0x10>:
+[ ]*[a-f0-9]+: ff 35 5a 01 20 00 pushq 0x20015a\(%rip\) # 200430 <_GLOBAL_OFFSET_TABLE_\+0x8>
+[ ]*[a-f0-9]+: ff 25 5c 01 20 00 jmpq \*0x20015c\(%rip\) # 200438 <_GLOBAL_OFFSET_TABLE_\+0x10>
+[ ]*[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
+
+0+2e0 <\*ABS\*\+0x32a@plt>:
+[ ]*[a-f0-9]+: ff 25 5a 01 20 00 jmpq \*0x20015a\(%rip\) # 200440 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ ]*[a-f0-9]+: 68 03 00 00 00 pushq \$0x3
+[ ]*[a-f0-9]+: e9 e0 ff ff ff jmpq 2d0 <\*ABS\*\+0x32a@plt-0x10>
+
+0+2f0 <func1@plt>:
+[ ]*[a-f0-9]+: ff 25 52 01 20 00 jmpq \*0x200152\(%rip\) # 200448 <_GLOBAL_OFFSET_TABLE_\+0x20>
+[ ]*[a-f0-9]+: 68 00 00 00 00 pushq \$0x0
+[ ]*[a-f0-9]+: e9 d0 ff ff ff jmpq 2d0 <\*ABS\*\+0x32a@plt-0x10>
+
+0+300 <func2@plt>:
+[ ]*[a-f0-9]+: ff 25 4a 01 20 00 jmpq \*0x20014a\(%rip\) # 200450 <_GLOBAL_OFFSET_TABLE_\+0x28>
+[ ]*[a-f0-9]+: 68 01 00 00 00 pushq \$0x1
+[ ]*[a-f0-9]+: e9 c0 ff ff ff jmpq 2d0 <\*ABS\*\+0x32a@plt-0x10>
+
+0+310 <\*ABS\*\+0x320@plt>:
+[ ]*[a-f0-9]+: ff 25 42 01 20 00 jmpq \*0x200142\(%rip\) # 200458 <_GLOBAL_OFFSET_TABLE_\+0x30>
+[ ]*[a-f0-9]+: 68 02 00 00 00 pushq \$0x2
+[ ]*[a-f0-9]+: e9 b0 ff ff ff jmpq 2d0 <\*ABS\*\+0x32a@plt-0x10>
+
+Disassembly of section .text:
+
+0+320 <resolve1>:
+[ ]*[a-f0-9]+: e8 cb ff ff ff callq 2f0 <func1@plt>
+
+0+325 <g1>:
+[ ]*[a-f0-9]+: e9 e6 ff ff ff jmpq 310 <\*ABS\*\+0x320@plt>
+
+0+32a <resolve2>:
+[ ]*[a-f0-9]+: e8 d1 ff ff ff callq 300 <func2@plt>
+
+0+32f <g2>:
+[ ]*[a-f0-9]+: e9 ac ff ff ff jmpq 2e0 <\*ABS\*\+0x32a@plt>
+#pass
diff --git a/ld/testsuite/ld-ifunc/pr17154-x86.s b/ld/testsuite/ld-ifunc/pr17154-x86.s
new file mode 100644
index 0000000..86470a2
--- /dev/null
+++ b/ld/testsuite/ld-ifunc/pr17154-x86.s
@@ -0,0 +1,28 @@
+ .text
+ .globl fct1
+ .type fct1, @gnu_indirect_function
+ .set fct1,resolve1
+ .hidden int_fct1
+ .globl int_fct1
+ .set int_fct1,fct1
+ .type resolve1, @function
+resolve1:
+ call func1@PLT
+ .globl g1
+ .type g1, @function
+g1:
+ jmp int_fct1@PLT
+
+ .globl fct2
+ .type fct2, @gnu_indirect_function
+ .set fct2,resolve2
+ .hidden int_fct2
+ .globl int_fct2
+ .set int_fct2,fct2
+ .type resolve2, @function
+resolve2:
+ call func2@PLT
+ .globl g2
+ .type g2, @function
+g2:
+ jmp int_fct2@PLT
diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2.d b/ld/testsuite/ld-x86-64/bnd-ifunc-2.d
new file mode 100644
index 0000000..43e3356
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/bnd-ifunc-2.d
@@ -0,0 +1,54 @@
+#as: --64 -madd-bnd-prefix
+#ld: -shared -melf_x86_64
+#objdump: -dw
+
+#...
+0+2d0 <.plt>:
+[ ]*[a-f0-9]+: ff 35 7a 01 20 00 pushq 0x20017a\(%rip\) # 200450 <_GLOBAL_OFFSET_TABLE_\+0x8>
+[ ]*[a-f0-9]+: f2 ff 25 7b 01 20 00 bnd jmpq \*0x20017b\(%rip\) # 200458 <_GLOBAL_OFFSET_TABLE_\+0x10>
+[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
+[ ]*[a-f0-9]+: 68 03 00 00 00 pushq \$0x3
+[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmpq 2d0 <\*ABS\*\+0x34c@plt-0x50>
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 68 00 00 00 00 pushq \$0x0
+[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmpq 2d0 <\*ABS\*\+0x34c@plt-0x50>
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 68 01 00 00 00 pushq \$0x1
+[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmpq 2d0 <\*ABS\*\+0x34c@plt-0x50>
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 68 02 00 00 00 pushq \$0x2
+[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmpq 2d0 <\*ABS\*\+0x34c@plt-0x50>
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+
+Disassembly of section .plt.bnd:
+
+0+320 <\*ABS\*\+0x34c@plt>:
+[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmpq \*0x200139\(%rip\) # 200460 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ ]*[a-f0-9]+: 90 nop
+
+0+328 <func1@plt>:
+[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmpq \*0x200139\(%rip\) # 200468 <_GLOBAL_OFFSET_TABLE_\+0x20>
+[ ]*[a-f0-9]+: 90 nop
+
+0+330 <func2@plt>:
+[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmpq \*0x200139\(%rip\) # 200470 <_GLOBAL_OFFSET_TABLE_\+0x28>
+[ ]*[a-f0-9]+: 90 nop
+
+0+338 <\*ABS\*\+0x340@plt>:
+[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmpq \*0x200139\(%rip\) # 200478 <_GLOBAL_OFFSET_TABLE_\+0x30>
+[ ]*[a-f0-9]+: 90 nop
+
+Disassembly of section .text:
+
+0+340 <resolve1>:
+[ ]*[a-f0-9]+: f2 e8 e2 ff ff ff bnd callq 328 <func1@plt>
+
+0+346 <g1>:
+[ ]*[a-f0-9]+: f2 e9 ec ff ff ff bnd jmpq 338 <\*ABS\*\+0x340@plt>
+
+0+34c <resolve2>:
+[ ]*[a-f0-9]+: f2 e8 de ff ff ff bnd callq 330 <func2@plt>
+
+0+352 <g2>:
+[ ]*[a-f0-9]+: f2 e9 c8 ff ff ff bnd jmpq 320 <\*ABS\*\+0x34c@plt>
+#pass
diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2.s b/ld/testsuite/ld-x86-64/bnd-ifunc-2.s
new file mode 100644
index 0000000..86470a2
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/bnd-ifunc-2.s
@@ -0,0 +1,28 @@
+ .text
+ .globl fct1
+ .type fct1, @gnu_indirect_function
+ .set fct1,resolve1
+ .hidden int_fct1
+ .globl int_fct1
+ .set int_fct1,fct1
+ .type resolve1, @function
+resolve1:
+ call func1@PLT
+ .globl g1
+ .type g1, @function
+g1:
+ jmp int_fct1@PLT
+
+ .globl fct2
+ .type fct2, @gnu_indirect_function
+ .set fct2,resolve2
+ .hidden int_fct2
+ .globl int_fct2
+ .set int_fct2,fct2
+ .type resolve2, @function
+resolve2:
+ call func2@PLT
+ .globl g2
+ .type g2, @function
+g2:
+ jmp int_fct2@PLT
diff --git a/ld/testsuite/ld-x86-64/mpx.exp b/ld/testsuite/ld-x86-64/mpx.exp
index 3224048..f2a50d4 100644
--- a/ld/testsuite/ld-x86-64/mpx.exp
+++ b/ld/testsuite/ld-x86-64/mpx.exp
@@ -78,4 +78,5 @@ run_ld_link_exec_tests [] $run_tests
run_dump_test "bnd-branch-1"
run_dump_test "bnd-ifunc-1"
+run_dump_test "bnd-ifunc-2"
run_dump_test "bnd-plt-1"
diff --git a/ld/testsuite/ld-x86-64/tlsdesc-nacl.pd b/ld/testsuite/ld-x86-64/tlsdesc-nacl.pd
index e2ba398..eff90a8 100644
--- a/ld/testsuite/ld-x86-64/tlsdesc-nacl.pd
+++ b/ld/testsuite/ld-x86-64/tlsdesc-nacl.pd
@@ -9,7 +9,7 @@
Disassembly of section .plt:
-[0-9a-f]+ <.*@plt-0x40>:
+[0-9a-f]+ <.plt>:
+[0-9a-f]+: ff 35 .. .. .. .. pushq 0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x8>
+[0-9a-f]+: 4c 8b 1d .. .. .. .. mov 0x[0-9a-f]+\(%rip\),%r11 +# [0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x10>
+[0-9a-f]+: 41 83 e3 e0 and \$0xffffffe0,%r11d
@@ -24,8 +24,6 @@ Disassembly of section .plt:
+[0-9a-f]+: 0f 1f 84 00 00 00 00 *
+[0-9a-f]+: 00 *
+[0-9a-f]+: 66 90 xchg %ax,%ax
-
-[0-9a-f]+ <.*@plt>:
+[0-9a-f]+: ff 35 .. .. .. .. pushq 0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x8>
+[0-9a-f]+: 4c 8b 1d .. .. .. .. mov 0x[0-9a-f]+\(%rip\),%r11 +# [0-9a-f]+ <_DYNAMIC\+0x190>
+[0-9a-f]+: 41 83 e3 e0 and \$0xffffffe0,%r11d
diff --git a/ld/testsuite/ld-x86-64/tlsdesc.pd b/ld/testsuite/ld-x86-64/tlsdesc.pd
index 2176576..c24403c 100644
--- a/ld/testsuite/ld-x86-64/tlsdesc.pd
+++ b/ld/testsuite/ld-x86-64/tlsdesc.pd
@@ -9,11 +9,10 @@
Disassembly of section .plt:
-[0-9a-f]+ <.*@plt-0x10>:
+[0-9a-f]+ <.plt>:
[0-9a-f]+: ff 35 .. .. 20 00 pushq .*\(%rip\) # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
[0-9a-f]+: ff 25 .. .. 20 00 jmpq \*.*\(%rip\) # 201360 <_GLOBAL_OFFSET_TABLE_\+0x10>
[0-9a-f]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-[0-9a-f]+ <.*@plt>:
[0-9a-f]+: ff 35 .. .. 20 00 pushq .*\(%rip\) # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
[0-9a-f]+: ff 25 .. .. 20 00 jmpq \*.*\(%rip\) # 201348 <_DYNAMIC\+0x190>
[0-9a-f]+: 0f 1f 40 00 nopl 0x0\(%rax\)