diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ChangeLog | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-ifunc/pr17154-i386.d | 47 | ||||
-rw-r--r-- | ld/testsuite/ld-ifunc/pr17154-x86-64.d | 46 | ||||
-rw-r--r-- | ld/testsuite/ld-ifunc/pr17154-x86.s | 28 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/bnd-ifunc-2.d | 54 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/bnd-ifunc-2.s | 28 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/mpx.exp | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/tlsdesc-nacl.pd | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/tlsdesc.pd | 3 |
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\) |