diff options
Diffstat (limited to 'ld/testsuite/ld-x86-64')
49 files changed, 624 insertions, 31 deletions
diff --git a/ld/testsuite/ld-x86-64/gotpcrel1.dd b/ld/testsuite/ld-x86-64/gotpcrel1.dd index 187a1a58bb4..46321dbba46 100644 --- a/ld/testsuite/ld-x86-64/gotpcrel1.dd +++ b/ld/testsuite/ld-x86-64/gotpcrel1.dd @@ -4,7 +4,7 @@ [ ]*[a-f0-9]+: [ a-f0-9]+ addr32 callq [a-f0-9]+ <foo> [ ]*[a-f0-9]+: [ a-f0-9]+ callq \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> [ ]*[a-f0-9]+: [ a-f0-9]+ callq \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> -[ ]*[a-f0-9]+: [ a-f0-9]+ lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> +[ ]*[a-f0-9]+: [ a-f0-9]+ (rex mov|mov ) \$0x[a-f0-9]+,%(r|e)ax [ ]*[a-f0-9]+: ff d0 callq \*%rax [ ]*[a-f0-9]+: [ a-f0-9]+ mov 0x[a-f0-9]+\(%rip\),%rcx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> [ ]*[a-f0-9]+: ff d1 callq \*%rcx diff --git a/ld/testsuite/ld-x86-64/lea1.s b/ld/testsuite/ld-x86-64/lea1.s index 07a2e354734..2c9982e16dc 100644 --- a/ld/testsuite/ld-x86-64/lea1.s +++ b/ld/testsuite/ld-x86-64/lea1.s @@ -9,10 +9,12 @@ foo: .globl _start .type _start, @function _start: + movl foo@GOTPCREL(%rip), %eax + movl bar@GOTPCREL(%rip), %r11d movq foo@GOTPCREL(%rip), %rax - movq bar@GOTPCREL(%rip), %rax + movq bar@GOTPCREL(%rip), %r11 movq __start_my_section@GOTPCREL(%rip), %rax - movq __stop_my_section@GOTPCREL(%rip), %rax + movq __stop_my_section@GOTPCREL(%rip), %r11 .size _start, .-_start .comm pad,4,4 .comm bar,4,4 diff --git a/ld/testsuite/ld-x86-64/lea1a.d b/ld/testsuite/ld-x86-64/lea1a.d index 36e9f546d30..9b662cb839f 100644 --- a/ld/testsuite/ld-x86-64/lea1a.d +++ b/ld/testsuite/ld-x86-64/lea1a.d @@ -9,8 +9,11 @@ Disassembly of section .text: #... +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%eax # [a-f0-9]+ <foo> +[ ]*[a-f0-9]+: 44 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11d # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <__stop_my_section> #pass diff --git a/ld/testsuite/ld-x86-64/lea1b.d b/ld/testsuite/ld-x86-64/lea1b.d index a92acd73e05..9108149b3a3 100644 --- a/ld/testsuite/ld-x86-64/lea1b.d +++ b/ld/testsuite/ld-x86-64/lea1b.d @@ -9,8 +9,11 @@ Disassembly of section .text: #... +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%eax # [a-f0-9]+ <foo> +[ ]*[a-f0-9]+: 44 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11d # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <__stop_my_section> #pass diff --git a/ld/testsuite/ld-x86-64/lea1c.d b/ld/testsuite/ld-x86-64/lea1c.d index 072b1ee0983..68fec03d105 100644 --- a/ld/testsuite/ld-x86-64/lea1c.d +++ b/ld/testsuite/ld-x86-64/lea1c.d @@ -1,5 +1,5 @@ #source: lea1.s -#as: --64 +#as: --64 -mrelax-relocations=yes #ld: -melf_x86_64 #objdump: -dw @@ -9,8 +9,11 @@ Disassembly of section .text: #... -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: c7 c0 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%eax +[ ]*[a-f0-9]+: 41 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11d +[ ]*[a-f0-9]+: 48 c7 c0 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%rax +[ ]*[a-f0-9]+: 49 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11 +[ ]*[a-f0-9]+: 48 c7 c0 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%rax +[ ]*[a-f0-9]+: 49 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11 #pass diff --git a/ld/testsuite/ld-x86-64/lea1d.d b/ld/testsuite/ld-x86-64/lea1d.d index 2613061b948..4d708d22c3a 100644 --- a/ld/testsuite/ld-x86-64/lea1d.d +++ b/ld/testsuite/ld-x86-64/lea1d.d @@ -9,8 +9,11 @@ Disassembly of section .text: #... +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%eax # [a-f0-9]+ <foo> +[ ]*[a-f0-9]+: 44 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11d # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <__stop_my_section> #pass diff --git a/ld/testsuite/ld-x86-64/lea1e.d b/ld/testsuite/ld-x86-64/lea1e.d index 109c1cd1be9..da601379181 100644 --- a/ld/testsuite/ld-x86-64/lea1e.d +++ b/ld/testsuite/ld-x86-64/lea1e.d @@ -9,8 +9,11 @@ Disassembly of section .text: #... +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%eax # [a-f0-9]+ <foo> +[ ]*[a-f0-9]+: 44 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11d # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <bar> [ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <__stop_my_section> #pass diff --git a/ld/testsuite/ld-x86-64/lea1f.d b/ld/testsuite/ld-x86-64/lea1f.d index 8d6cd783454..b7abeb30c0c 100644 --- a/ld/testsuite/ld-x86-64/lea1f.d +++ b/ld/testsuite/ld-x86-64/lea1f.d @@ -1,5 +1,5 @@ #source: lea1.s -#as: --x32 +#as: --x32 -mrelax-relocations=yes #ld: -melf32_x86_64 #objdump: -dw @@ -9,8 +9,11 @@ Disassembly of section .text: #... -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <foo> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <bar> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__start_my_section> -[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <__stop_my_section> +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: c7 c0 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%eax +[ ]*[a-f0-9]+: 41 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11d +[ ]*[a-f0-9]+: 40 c7 c0 ([0-9a-f]{2} ){4} * rex mov \$0x[a-f0-9]+,%eax +[ ]*[a-f0-9]+: 41 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11d +[ ]*[a-f0-9]+: 40 c7 c0 ([0-9a-f]{2} ){4} * rex mov \$0x[a-f0-9]+,%eax +[ ]*[a-f0-9]+: 41 c7 c3 ([0-9a-f]{2} ){4} * mov \$0x[a-f0-9]+,%r11d #pass diff --git a/ld/testsuite/ld-x86-64/mov1b.d b/ld/testsuite/ld-x86-64/mov1b.d index f112c1cba5b..74218539d97 100644 --- a/ld/testsuite/ld-x86-64/mov1b.d +++ b/ld/testsuite/ld-x86-64/mov1b.d @@ -1,6 +1,6 @@ #source: mov1.s -#as: --64 -#ld: -pie -melf_x86_64 +#as: --64 -mrelax-relocations=yes +#ld: -pie -melf_x86_64 --no-dynamic-linker #objdump: -dw .*: +file format .* @@ -10,6 +10,6 @@ Disassembly of section .text: #... [ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> -[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> -[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 * mov \$0x0,%rax +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 * mov \$0x0,%rax #pass diff --git a/ld/testsuite/ld-x86-64/mov1d.d b/ld/testsuite/ld-x86-64/mov1d.d index 794a546f86a..7cdab0cd54b 100644 --- a/ld/testsuite/ld-x86-64/mov1d.d +++ b/ld/testsuite/ld-x86-64/mov1d.d @@ -1,6 +1,6 @@ #source: mov1.s -#as: --x32 -#ld: -pie -melf32_x86_64 +#as: --x32 -mrelax-relocations=yes +#ld: -pie -melf32_x86_64 --no-dynamic-linker #objdump: -dw .*: +file format .* @@ -10,6 +10,6 @@ Disassembly of section .text: #... [ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> -[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> -[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 00 * rex mov \$0x0,%eax +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 00 * rex mov \$0x0,%eax #pass diff --git a/ld/testsuite/ld-x86-64/pr13082-3b.d b/ld/testsuite/ld-x86-64/pr13082-3b.d index 766dd741bbb..c3c3f86153c 100644 --- a/ld/testsuite/ld-x86-64/pr13082-3b.d +++ b/ld/testsuite/ld-x86-64/pr13082-3b.d @@ -2,6 +2,9 @@ #name: PR ld/13082-3 (b) #as: --x32 #ld: -pie -melf32_x86_64 -#readelf: -r --wide +#readelf: -r -x .data.rel.ro There are no relocations in this file. + +Hex dump of section '.data.rel.ro': + 0x[a-f0-9]+ 00000000 00000000 ........ diff --git a/ld/testsuite/ld-x86-64/pr13082-3c.d b/ld/testsuite/ld-x86-64/pr13082-3c.d new file mode 100644 index 00000000000..9947425bcae --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr13082-3c.d @@ -0,0 +1,9 @@ +#source: pr13082-3.s +#name: PR ld/13082-3 (c) +#as: --64 +#ld: -shared -melf_x86_64 +#readelf: -r --wide + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Symbol's Value Symbol's Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ +R_X86_64_64 +[0-9a-f]+ +func \+ 0 diff --git a/ld/testsuite/ld-x86-64/pr13082-3d.d b/ld/testsuite/ld-x86-64/pr13082-3d.d new file mode 100644 index 00000000000..8385d5064ce --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr13082-3d.d @@ -0,0 +1,10 @@ +#source: pr13082-3.s +#name: PR ld/13082-3 (d) +#as: --64 +#ld: -pie -melf_x86_64 +#readelf: -r -x .data.rel.ro + +There are no relocations in this file. + +Hex dump of section '.data.rel.ro': + 0x[a-f0-9]+ 00000000 00000000 ........ diff --git a/ld/testsuite/ld-x86-64/pr13082-4b.d b/ld/testsuite/ld-x86-64/pr13082-4b.d index 6d4a35b7d65..2b7584c289b 100644 --- a/ld/testsuite/ld-x86-64/pr13082-4b.d +++ b/ld/testsuite/ld-x86-64/pr13082-4b.d @@ -2,6 +2,9 @@ #name: PR ld/13082-4 (b) #as: --x32 #ld: -pie -melf32_x86_64 -#readelf: -r --wide +#readelf: -r -x .data.rel.ro There are no relocations in this file. + +Hex dump of section '.data.rel.ro': + 0x[a-f0-9]+ 01000000 00000000 ........ diff --git a/ld/testsuite/ld-x86-64/pr19609-1.s b/ld/testsuite/ld-x86-64/pr19609-1.s new file mode 100644 index 00000000000..91cc13038c1 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1.s @@ -0,0 +1,20 @@ + .text + .weak bar + .globl _start + .type _start, @function +_start: + cmp bar@GOTPCREL(%rip), %rax + cmp bar@GOTPCREL(%rip), %ecx + cmp bar@GOTPCREL(%rip), %r11 + cmp bar@GOTPCREL(%rip), %r12d + + mov bar@GOTPCREL(%rip), %rax + mov bar@GOTPCREL(%rip), %ecx + mov bar@GOTPCREL(%rip), %r11 + mov bar@GOTPCREL(%rip), %r12d + + test %rax, bar@GOTPCREL(%rip) + test %ecx, bar@GOTPCREL(%rip) + test %r11, bar@GOTPCREL(%rip) + test %r12d, bar@GOTPCREL(%rip) + .size _start, .-_start diff --git a/ld/testsuite/ld-x86-64/pr19609-1a.d b/ld/testsuite/ld-x86-64/pr19609-1a.d new file mode 100644 index 00000000000..a908e39625b --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1a.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1b.d b/ld/testsuite/ld-x86-64/pr19609-1b.d new file mode 100644 index 00000000000..d5e2e858bc4 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1b.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -pie -melf_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1c.d b/ld/testsuite/ld-x86-64/pr19609-1c.d new file mode 100644 index 00000000000..3b1e98d2e63 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1c.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -shared -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 3b 0d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 3b 1d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 3b 25 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 8b 0d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 8b 25 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 85 05 ([0-9a-f]{2} ){4} * test %rax,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 85 0d ([0-9a-f]{2} ){4} * test %ecx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 85 1d ([0-9a-f]{2} ){4} * test %r11,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 85 25 ([0-9a-f]{2} ){4} * test %r12d,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-1d.d b/ld/testsuite/ld-x86-64/pr19609-1d.d new file mode 100644 index 00000000000..980d8dc4f91 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1d.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -E -melf_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1e.d b/ld/testsuite/ld-x86-64/pr19609-1e.d new file mode 100644 index 00000000000..dac5fef641a --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1e.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -shared -E -Bsymbolic -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 3b 0d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 3b 1d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 3b 25 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 8b 0d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 8b 25 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 85 05 ([0-9a-f]{2} ){4} * test %rax,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 85 0d ([0-9a-f]{2} ){4} * test %ecx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 85 1d ([0-9a-f]{2} ){4} * test %r11,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 85 25 ([0-9a-f]{2} ){4} * test %r12d,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-1f.d b/ld/testsuite/ld-x86-64/pr19609-1f.d new file mode 100644 index 00000000000..93a7f2cc4bc --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1f.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -pie --dynamic-list-data -melf_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1g.d b/ld/testsuite/ld-x86-64/pr19609-1g.d new file mode 100644 index 00000000000..05a4964cd33 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1g.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -pie -E -melf_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1h.d b/ld/testsuite/ld-x86-64/pr19609-1h.d new file mode 100644 index 00000000000..56750768df2 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1h.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 00 rex mov \$0x0,%eax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 41 c7 c3 00 00 00 00 mov \$0x0,%r11d +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1i.d b/ld/testsuite/ld-x86-64/pr19609-1i.d new file mode 100644 index 00000000000..8ef42ad0883 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1i.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --x32 -mrelax-relocations=yes +#ld: -pie -melf32_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 00 rex mov \$0x0,%eax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 41 c7 c3 00 00 00 00 mov \$0x0,%r11d +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1j.d b/ld/testsuite/ld-x86-64/pr19609-1j.d new file mode 100644 index 00000000000..4a36a702b62 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1j.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --x32 +#ld: -shared -melf32_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 3b 0d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 3b 1d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 3b 25 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 8b 0d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 8b 25 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 85 05 ([0-9a-f]{2} ){4} * test %rax,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 85 0d ([0-9a-f]{2} ){4} * test %ecx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 85 1d ([0-9a-f]{2} ){4} * test %r11,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 85 25 ([0-9a-f]{2} ){4} * test %r12d,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-1k.d b/ld/testsuite/ld-x86-64/pr19609-1k.d new file mode 100644 index 00000000000..faab0dfca0a --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1k.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=yes +#ld: -pie -E -Bsymbolic-functions -melf_x86_64 --no-dynamic-linker +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 81 f8 00 00 00 00 cmp \$0x0,%rax +[ ]*[a-f0-9]+: 81 f9 00 00 00 00 cmp \$0x0,%ecx +[ ]*[a-f0-9]+: 49 81 fb 00 00 00 00 cmp \$0x0,%r11 +[ ]*[a-f0-9]+: 41 81 fc 00 00 00 00 cmp \$0x0,%r12d +[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax +[ ]*[a-f0-9]+: c7 c1 00 00 00 00 mov \$0x0,%ecx +[ ]*[a-f0-9]+: 49 c7 c3 00 00 00 00 mov \$0x0,%r11 +[ ]*[a-f0-9]+: 41 c7 c4 00 00 00 00 mov \$0x0,%r12d +[ ]*[a-f0-9]+: 48 f7 c0 00 00 00 00 test \$0x0,%rax +[ ]*[a-f0-9]+: f7 c1 00 00 00 00 test \$0x0,%ecx +[ ]*[a-f0-9]+: 49 f7 c3 00 00 00 00 test \$0x0,%r11 +[ ]*[a-f0-9]+: 41 f7 c4 00 00 00 00 test \$0x0,%r12d diff --git a/ld/testsuite/ld-x86-64/pr19609-1l.d b/ld/testsuite/ld-x86-64/pr19609-1l.d new file mode 100644 index 00000000000..aedf5d8ce7f --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1l.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=no +#ld: -melf_x86_64 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 3b 0d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 3b 1d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 3b 25 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%rax # 0 <_start-0x[a-f0-9]+> +[ ]*[a-f0-9]+: 8d 0d ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%ecx # 0 <_start-0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 8d 1d ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%r11 # 0 <_start-0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 8d 25 ([0-9a-f]{2} ){4} * lea -0x[a-f0-9]+\(%rip\),%r12d # 0 <_start-0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 85 05 ([0-9a-f]{2} ){4} * test %rax,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 85 0d ([0-9a-f]{2} ){4} * test %ecx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 85 1d ([0-9a-f]{2} ){4} * test %r11,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 85 25 ([0-9a-f]{2} ){4} * test %r12d,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-1m.d b/ld/testsuite/ld-x86-64/pr19609-1m.d new file mode 100644 index 00000000000..8e80cbbb46c --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-1m.d @@ -0,0 +1,23 @@ +#source: pr19609-1.s +#as: --64 -mrelax-relocations=no +#ld: -pie -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 3b 0d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 3b 1d ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 3b 25 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 8b 0d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%ecx # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 8b 25 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%r12d # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 48 85 05 ([0-9a-f]{2} ){4} * test %rax,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 85 0d ([0-9a-f]{2} ){4} * test %ecx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 4c 85 1d ([0-9a-f]{2} ){4} * test %r11,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> +[ ]*[a-f0-9]+: 44 85 25 ([0-9a-f]{2} ){4} * test %r12d,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-2.s b/ld/testsuite/ld-x86-64/pr19609-2.s new file mode 100644 index 00000000000..d52ec9d1038 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-2.s @@ -0,0 +1,9 @@ + .data +foo: + .quad 0 + .text + .globl _start + .type _start, @function +_start: + cmpq foo@GOTPCREL(%rip), %rax + .size _start, .-_start diff --git a/ld/testsuite/ld-x86-64/pr19609-2a.d b/ld/testsuite/ld-x86-64/pr19609-2a.d new file mode 100644 index 00000000000..e2c6c893acc --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-2a.d @@ -0,0 +1,4 @@ +#source: pr19609-2.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#error: .*relocation truncated to fit: R_X86_64_32S .* diff --git a/ld/testsuite/ld-x86-64/pr19609-2b.d b/ld/testsuite/ld-x86-64/pr19609-2b.d new file mode 100644 index 00000000000..ead498740e0 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-2b.d @@ -0,0 +1,4 @@ +#source: pr19609-2.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#error: .*relocation truncated to fit: R_X86_64_32S .* diff --git a/ld/testsuite/ld-x86-64/pr19609-2c.d b/ld/testsuite/ld-x86-64/pr19609-2c.d new file mode 100644 index 00000000000..458b08a7891 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-2c.d @@ -0,0 +1,13 @@ +#source: pr19609-2.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +0+70000000 <_start>: +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} cmp -?0x[a-f0-9]+\(%rip\),%rax # .* +#pass diff --git a/ld/testsuite/ld-x86-64/pr19609-2d.d b/ld/testsuite/ld-x86-64/pr19609-2d.d new file mode 100644 index 00000000000..32c4c8f9b18 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-2d.d @@ -0,0 +1,13 @@ +#source: pr19609-2.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +70000000 <_start>: +#pass +[ ]*[a-f0-9]+: 48 3b 05 ([0-9a-f]{2} ){4} cmp -?0x[a-f0-9]+\(%rip\),%rax # .* diff --git a/ld/testsuite/ld-x86-64/pr19609-3.s b/ld/testsuite/ld-x86-64/pr19609-3.s new file mode 100644 index 00000000000..b15294648e1 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-3.s @@ -0,0 +1,10 @@ + .data +foo: + .quad 0 + .text + .globl _start + .type _start, @function +_start: + cmpl foo@GOTPCREL(%rip), %eax + cmpl foo@GOTPCREL(%rip), %r11d + .size _start, .-_start diff --git a/ld/testsuite/ld-x86-64/pr19609-3a.d b/ld/testsuite/ld-x86-64/pr19609-3a.d new file mode 100644 index 00000000000..3248bb2a03e --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-3a.d @@ -0,0 +1,14 @@ +#source: pr19609-3.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +0+70000000 <_start>: +[ ]*[a-f0-9]+: 81 f8 00 00 00 a0 cmp \$0xa0000000,%eax +[ ]*[a-f0-9]+: 41 81 fb 00 00 00 a0 cmp \$0xa0000000,%r11d +#pass diff --git a/ld/testsuite/ld-x86-64/pr19609-3b.d b/ld/testsuite/ld-x86-64/pr19609-3b.d new file mode 100644 index 00000000000..52ca5b72e35 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-3b.d @@ -0,0 +1,14 @@ +#source: pr19609-3.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +70000000 <_start>: +[ ]*[a-f0-9]+: 81 f8 00 00 00 a0 cmp \$0xa0000000,%eax +[ ]*[a-f0-9]+: 41 81 fb 00 00 00 a0 cmp \$0xa0000000,%r11d +#pass diff --git a/ld/testsuite/ld-x86-64/pr19609-4.s b/ld/testsuite/ld-x86-64/pr19609-4.s new file mode 100644 index 00000000000..3db3ebb52d0 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4.s @@ -0,0 +1,10 @@ + .data +foo: + .quad 0 + .text + .globl _start + .type _start, @function +_start: + movq foo@GOTPCREL(%rip), %rax + movq foo@GOTPCREL(%rip), %r11 + .size _start, .-_start diff --git a/ld/testsuite/ld-x86-64/pr19609-4a.d b/ld/testsuite/ld-x86-64/pr19609-4a.d new file mode 100644 index 00000000000..ce952ed4f64 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4a.d @@ -0,0 +1,5 @@ +#source: pr19609-4.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#error: .*relocation truncated to fit: R_X86_64_32S .* +#error: .*relocation truncated to fit: R_X86_64_32S .* diff --git a/ld/testsuite/ld-x86-64/pr19609-4b.d b/ld/testsuite/ld-x86-64/pr19609-4b.d new file mode 100644 index 00000000000..cb92aa6cc02 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4b.d @@ -0,0 +1,13 @@ +#source: pr19609-4.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +70000000 <_start>: +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 a0 rex mov \$0xa0000000,%eax +[ ]*[a-f0-9]+: 41 c7 c3 00 00 00 a0 mov \$0xa0000000,%r11d diff --git a/ld/testsuite/ld-x86-64/pr19609-4c.d b/ld/testsuite/ld-x86-64/pr19609-4c.d new file mode 100644 index 00000000000..ce952ed4f64 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4c.d @@ -0,0 +1,5 @@ +#source: pr19609-4.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#error: .*relocation truncated to fit: R_X86_64_32S .* +#error: .*relocation truncated to fit: R_X86_64_32S .* diff --git a/ld/testsuite/ld-x86-64/pr19609-4d.d b/ld/testsuite/ld-x86-64/pr19609-4d.d new file mode 100644 index 00000000000..cb92aa6cc02 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4d.d @@ -0,0 +1,13 @@ +#source: pr19609-4.s +#as: --x32 -mrelax-relocations=yes +#ld: -melf32_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +70000000 <_start>: +[ ]*[a-f0-9]+: 40 c7 c0 00 00 00 a0 rex mov \$0xa0000000,%eax +[ ]*[a-f0-9]+: 41 c7 c3 00 00 00 a0 mov \$0xa0000000,%r11d diff --git a/ld/testsuite/ld-x86-64/pr19609-4e.d b/ld/testsuite/ld-x86-64/pr19609-4e.d new file mode 100644 index 00000000000..527fe5d9f4e --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-4e.d @@ -0,0 +1,13 @@ +#source: pr19609-4.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x70000000 -Tdata=0xa0000000 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +0+70000000 <_start>: +[ ]*[a-f0-9]+: 48 8d 05 f9 ff ff 2f lea 0x2ffffff9\(%rip\),%rax # a0000000 <foo> +[ ]*[a-f0-9]+: 4c 8d 1d f2 ff ff 2f lea 0x2ffffff2\(%rip\),%r11 # a0000000 <foo> diff --git a/ld/testsuite/ld-x86-64/pr19609-5.s b/ld/testsuite/ld-x86-64/pr19609-5.s new file mode 100644 index 00000000000..85106bb7f20 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5.s @@ -0,0 +1,6 @@ + .text + .weak bar + .globl _start + .type _start, @function +_start: + call *bar@GOTPCREL(%rip) diff --git a/ld/testsuite/ld-x86-64/pr19609-5a.d b/ld/testsuite/ld-x86-64/pr19609-5a.d new file mode 100644 index 00000000000..39948e0818c --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5a.d @@ -0,0 +1,12 @@ +#source: pr19609-5.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]+[a-f0-9]+: 67 e8 ([0-9a-f]{2} ){4}[ ]+addr32 callq 0 <_start-0x[0-9a-f]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-5b.d b/ld/testsuite/ld-x86-64/pr19609-5b.d new file mode 100644 index 00000000000..4183d56f599 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5b.d @@ -0,0 +1,12 @@ +#source: pr19609-5.s +#as: --64 -mrelax-relocations=yes +#ld: -pie -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]+[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * callq \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-5c.d b/ld/testsuite/ld-x86-64/pr19609-5c.d new file mode 100644 index 00000000000..4eaeb2bce58 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5c.d @@ -0,0 +1,12 @@ +#source: pr19609-5.s +#as: --64 -mrelax-relocations=yes +#ld: -shared -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]+[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * callq \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/pr19609-5d.d b/ld/testsuite/ld-x86-64/pr19609-5d.d new file mode 100644 index 00000000000..959c63e3d0d --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5d.d @@ -0,0 +1,4 @@ +#source: pr19609-5.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x80000000 +#error: .*relocation truncated to fit: R_X86_64_PC32 .* diff --git a/ld/testsuite/ld-x86-64/pr19609-5e.d b/ld/testsuite/ld-x86-64/pr19609-5e.d new file mode 100644 index 00000000000..b6b6c6521fa --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19609-5e.d @@ -0,0 +1,12 @@ +#source: pr19609-5.s +#as: --64 -mrelax-relocations=yes +#ld: -melf_x86_64 -Ttext=0x80000000 --no-relax +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]+[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * callq \*-?0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <[0-9a-zA-Z_]+[\+\-]+0x[a-f0-9]+> diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 214b08b05fd..8ec10715779 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -299,6 +299,8 @@ run_dump_test "pr13082-2a" run_dump_test "pr13082-2b" run_dump_test "pr13082-3a" run_dump_test "pr13082-3b" +run_dump_test "pr13082-3c" +run_dump_test "pr13082-3d" run_dump_test "pr13082-4a" run_dump_test "pr13082-4b" run_dump_test "pr13082-5a" @@ -375,6 +377,35 @@ run_dump_test "pr19636-2i" run_dump_test "pr19636-3a" run_dump_test "pr19636-3b" run_dump_test "pr19636-3c" +run_dump_test "pr19609-1a" +run_dump_test "pr19609-1b" +run_dump_test "pr19609-1c" +run_dump_test "pr19609-1d" +run_dump_test "pr19609-1e" +run_dump_test "pr19609-1f" +run_dump_test "pr19609-1g" +run_dump_test "pr19609-1h" +run_dump_test "pr19609-1i" +run_dump_test "pr19609-1j" +run_dump_test "pr19609-1k" +run_dump_test "pr19609-1l" +run_dump_test "pr19609-1m" +run_dump_test "pr19609-2a" +run_dump_test "pr19609-2b" +run_dump_test "pr19609-2c" +run_dump_test "pr19609-2d" +run_dump_test "pr19609-3a" +run_dump_test "pr19609-3b" +run_dump_test "pr19609-4a" +run_dump_test "pr19609-4b" +run_dump_test "pr19609-4c" +run_dump_test "pr19609-4d" +run_dump_test "pr19609-4e" +run_dump_test "pr19609-5a" +run_dump_test "pr19609-5b" +run_dump_test "pr19609-5c" +run_dump_test "pr19609-5d" +run_dump_test "pr19609-5e" proc undefined_weak {cflags ldflags} { set testname "Undefined weak symbol" |