URL
https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk
Subversion Repositories open8_urisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/open8_urisc/trunk/gnu/binutils
- from Rev 127 to Rev 128
- ↔ Reverse comparison
Rev 127 → Rev 128
/ld/testsuite/ld-x86-64/ia32-3.d
0,0 → 1,4
#source: dummy.s |
#as: --32 |
#ld: -m elf_i386 tmpdir/start32.o tmpdir/foo64.o |
#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386 output |
/ld/testsuite/ld-x86-64/tlsgd2.d
0,0 → 1,4
#name: TLS GD->IE transition check |
#as: --64 |
#ld: -melf_x86_64 |
#error: .*TLS transition from R_X86_64_TLSGD to R_X86_64_GOTTPOFF against `foo'.*failed.* |
/ld/testsuite/ld-x86-64/tlspic2.s
0,0 → 1,11
.section ".tbss", "awT", @nobits |
.globl sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8 |
.hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8 |
sH1: .space 4 |
sH2: .space 4 |
sH3: .space 4 |
sH4: .space 4 |
sH5: .space 4 |
sH6: .space 4 |
sH7: .space 4 |
sH8: .space 4 |
/ld/testsuite/ld-x86-64/tlspie1.s
0,0 → 1,58
.text |
.globl __tls_get_addr |
.type __tls_get_addr, @function |
__tls_get_addr: |
ret |
.size __tls_get_addr, .-__tls_get_addr |
.globl _start |
.type _start, @function |
_start: |
movq foo3@GOTTPOFF(%rip), %rax |
pushq %rbx |
movl %fs:foo2@TPOFF, %ebx |
addl %fs:foo1@TPOFF, %ebx |
addl %fs:(%rax), %ebx |
leaq foo4@TLSLD(%rip), %rdi |
call __tls_get_addr@PLT |
addl foo4@DTPOFF(%rax), %ebx |
.byte 0x66 |
leaq foo5@TLSGD(%rip), %rdi |
.value 0x6666 |
rex64 |
call __tls_get_addr@PLT |
addl (%rax), %ebx |
movl %ebx, %eax |
popq %rbx |
ret |
.size _start, .-_start |
.globl foo1 |
.section .tbss,"awT",@nobits |
.align 4 |
.type foo1, @object |
.size foo1, 4 |
foo1: |
.zero 4 |
.globl foo2 |
.align 4 |
.type foo2, @object |
.size foo2, 4 |
foo2: |
.zero 4 |
.globl foo3 |
.align 4 |
.type foo3, @object |
.size foo3, 4 |
foo3: |
.zero 4 |
.globl foo4 |
.align 4 |
.type foo4, @object |
.size foo4, 4 |
foo4: |
.zero 4 |
.globl foo5 |
.align 4 |
.type foo5, @object |
.size foo5, 4 |
foo5: |
.zero 4 |
/ld/testsuite/ld-x86-64/dwarfreloc.exp
0,0 → 1,86
# Expect script for DWARF relocation test. |
# Copyright 2008 Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
# |
|
# |
# Written by Jan Kratochvil (jan.kratochvil@redhat.com) |
# |
# Test PR ld/3290 Comment 8+9. DW_FORM_ref_addr used in dwarfreloc2.s was left |
# unrelocated as its target symbol from dwarfreloc1.s became LOCAL due to its |
# `ld -r'. |
# |
# <1><57>: Abbrev Number: 2 (DW_TAG_variable) |
# <58> DW_AT_name : i2 |
# ... |
# <5d> DW_AT_type : <0x32> |
# vs. |
# <5d> DW_AT_type : <0x0> |
|
# Only the testcase .s files are arch-dependent, the relocations are cross-arch. |
if { !([istarget "x86_64-*-elf*"] |
|| [istarget "x86_64-*-linux*"]) } { |
return |
} |
|
set build_tests_ld { |
{"Build dwarfreloc1x.o" |
"-r" "" |
{dwarfreloc1.s} {} "dwarfreloc1x.o"} |
{"Build dwarfreloc2.o" |
"-r" "" |
{dwarfreloc2.s} {} "dwarfreloc2x.o"} |
} |
|
run_ld_link_tests $build_tests_ld |
|
set testname "Link dwarfreloc1x.o and dwarfreloc2x.o to dwarfreloc.o" |
if [ld_simple_link $ld "tmpdir/dwarfreloc.o" "-r tmpdir/dwarfreloc1x.o tmpdir/dwarfreloc2x.o"] { |
pass $testname |
} else { |
fail $testname |
} |
|
# The code is copied from `ld-lib.exp'. We cannot use the functions there as |
# they expect source (.s or .c) files while we to check a `ld -r' output (.o). |
|
set testname "Check dwarfreloc.o readelf" |
set dumpfile "dwarfreloc.rd" |
set cmd "$READELF --debug-dump=info tmpdir/dwarfreloc.o" |
set status [remote_exec host [concat sh -c [list "$cmd >dump.out 2>ld.stderr"]] "" "/dev/null"] |
send_log "$cmd\n" |
remote_upload host "ld.stderr" |
set comp_output [prune_warnings [file_contents "ld.stderr"]] |
remote_file host delete "ld.stderr" |
remote_file build delete "ld.stderr" |
|
if ![string match "" $comp_output] then { |
send_log "$comp_output\n" |
fail $testname |
} else { |
remote_upload host "dump.out" |
if { [regexp_diff "dump.out" "$srcdir/$subdir/$dumpfile"] } then { |
verbose "output is [file_contents "dump.out"]" 2 |
fail $testname |
} else { |
pass $testname |
} |
remote_file build delete "dump.out" |
remote_file host delete "dump.out" |
} |
/ld/testsuite/ld-x86-64/foo.s
0,0 → 1,3
.globl foo |
foo: |
mov %eax, %ebx |
/ld/testsuite/ld-x86-64/abs.d
0,0 → 1,10
#name: Absolute non-overflowing relocs |
#source: ../ld-i386/abs.s |
#source: ../ld-i386/zero.s |
#ld: |
#objdump: -rs |
|
.*: file format .* |
|
Contents of section \.text: |
[ ][0-9a-f]+ c800fff0 c8000110 c9c3.* |
/ld/testsuite/ld-x86-64/tlsie1.dd
0,0 → 1,16
#source: tlsie1.s |
#as: --64 |
#ld: -melf_x86_64 tmpdir/tlsie1 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 48 c7 c0 fc ff ff ff mov \$0xfffffffffffffffc,%rax |
[ ]*[a-f0-9]+: 48 8d 80 fc ff ff ff lea -0x4\(%rax\),%rax |
[ ]*[a-f0-9]+: 49 c7 c4 fc ff ff ff mov \$0xfffffffffffffffc,%r12 |
[ ]*[a-f0-9]+: 49 81 c4 fc ff ff ff add \$0xfffffffffffffffc,%r12 |
#pass |
/ld/testsuite/ld-x86-64/tlsbinpic.s
0,0 → 1,146
/* Force .data aligned to 4K, so that .got very likely gets at |
0x5021a0 (0x60 bytes .tdata and 0x140 bytes .dynamic) */ |
.data |
.balign 4096 |
.section ".tdata", "awT", @progbits |
.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 257 |
sh2: .long 258 |
sh3: .long 259 |
sh4: .long 260 |
sh5: .long 261 |
sh6: .long 262 |
sh7: .long 263 |
sh8: .long 264 |
/* Force .text aligned to 4K, so it very likely gets at 0x401000. */ |
.text |
.balign 4096 |
.globl fn2 |
.type fn2,@function |
fn2: |
pushq %rbp |
movq %rsp, %rbp |
|
/* GD -> IE because variable is not defined in executable */ |
.byte 0x66 |
leaq sG1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE because variable is not defined in executable where |
the variable is referenced through IE too */ |
.byte 0x66 |
leaq sG2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> LE with global variable defined in executable */ |
.byte 0x66 |
leaq sg1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> LE with local variable defined in executable */ |
.byte 0x66 |
leaq sl1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> LE with hidden variable defined in executable */ |
.byte 0x66 |
leaq sh1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* LD -> LE */ |
leaq sl1@tlsld(%rip), %rdi |
call __tls_get_addr@plt |
nop;nop |
leaq 1+sl1@dtpoff(%rax), %rdx |
nop;nop |
leaq sl2@dtpoff+2(%rax), %r9 |
nop;nop;nop;nop |
|
/* LD -> LE against hidden variables */ |
leaq sh1@tlsld(%rip), %rdi |
call __tls_get_addr@plt |
nop;nop |
leaq sh1@dtpoff(%rax), %rdx |
nop;nop |
leaq 3+sh2@dtpoff(%rax), %rcx |
nop;nop;nop;nop |
|
/* IE against global var */ |
movq %fs:0, %r9 |
nop;nop |
addq sG2@gottpoff(%rip), %r9 |
nop;nop;nop;nop |
|
/* IE -> LE against global var defined in exec */ |
movq %fs:0, %r10 |
nop;nop |
addq sg1@gottpoff(%rip), %r10 |
nop;nop;nop;nop |
|
/* IE -> LE against local var */ |
movq %fs:0, %rax |
nop;nop |
addq sl1@gottpoff(%rip), %rax |
nop;nop;nop;nop |
|
/* IE -> LE against hidden var */ |
movq %fs:0, %rcx |
nop;nop |
addq sh1@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* Direct access through %fs */ |
|
/* IE against global var */ |
movq sG5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
/* IE->LE against local var */ |
movq sl5@gottpoff(%rip), %r11 |
nop;nop |
movq %fs:(%r11), %r12 |
nop;nop;nop;nop |
|
/* IE->LE against hidden var */ |
movq sh5@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rdx |
nop;nop;nop;nop |
|
leave |
ret |
/ld/testsuite/ld-x86-64/nogot2.d
0,0 → 1,7
#ld: -pie -melf_x86_64 |
#readelf: -S --wide |
#as: --64 |
|
#... |
[ ]*\[.*\][ ]+.*\.got\.plt.* |
#pass |
/ld/testsuite/ld-x86-64/mixed2a.s
0,0 → 1,7
.text |
.p2align 4,,15 |
.globl _start |
.type _start, @function |
_start: |
movl foo(%rip), %eax |
.size _start, .-_start |
/ld/testsuite/ld-x86-64/protected1.d
0,0 → 1,3
#as: --64 |
#ld: -shared -melf_x86_64 |
#error: .*relocation R_X86_64_PC32 against protected symbol `foo' can not be used when making a shared object |
/ld/testsuite/ld-x86-64/abs-l1om.d
0,0 → 1,11
#name: Absolute non-overflowing relocs |
#source: ../ld-i386/abs.s |
#source: ../ld-i386/zero.s |
#as: --64 -march=l1om |
#ld: -m elf_l1om |
#objdump: -rs -j .text |
|
.*: file format .* |
|
Contents of section \.text: |
[ ][0-9a-f]+ c800fff0 c8000110 c9c3.* |
/ld/testsuite/ld-x86-64/start.s
0,0 → 1,3
.globl _start |
_start: |
jmp foo |
/ld/testsuite/ld-x86-64/protected3.d
0,0 → 1,13
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drw |
|
.*: +file format .* |
|
|
Disassembly of section .text: |
|
0+[a-f0-9]+ <bar>: |
[ ]*[a-f0-9]+: 8b 05 [a-f0-9][a-f0-9] 00 [a-f0-9][a-f0-9] 00 mov 0x[a-f0-9]+\(%rip\),%eax # [a-f0-9]+ <foo> |
[ ]*[a-f0-9]+: c3 retq |
#pass |
/ld/testsuite/ld-x86-64/tlsbin.rd
0,0 → 1,147
#source: tlsbinpic.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#readelf: -WSsrl |
#target: x86_64-*-* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .interp +.* |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .rela.plt +.* |
+\[[ 0-9]+\] .plt +.* |
+\[[ 0-9]+\] .text +PROGBITS +0+401000 0+1000 0+234 00 +AX +0 +0 +4096 |
+\[[ 0-9]+\] .tdata +PROGBITS +0+601234 0+1234 0+60 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .tbss +NOBITS +0+601294 0+1294 0+40 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+601298 0+1298 0+140 10 +WA +4 +0 +8 |
+\[[ 0-9]+\] .got +PROGBITS +0+6013d8 0+13d8 0+20 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .got.plt +PROGBITS +0+6013f8 0+13f8 0+20 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is EXEC \(Executable file\) |
Entry point 0x40113c |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
+PHDR.* |
+INTERP.* |
.*Requesting program interpreter.* |
+LOAD +0x0+ 0x0+400000 0x0+400000 0x0+1234 0x0+1234 R E 0x200000 |
+LOAD +0x0+1234 0x0+601234 0x0+601234 0x0+1e4 0x0+1e4 RW +0x200000 |
+DYNAMIC +0x0+1298 0x0+601298 0x0+601298 0x0+140 0x0+140 RW +0x8 |
+TLS +0x0+1234 0x0+601234 0x0+601234 0x0+60 0x0+a0 R +0x1 |
|
Section to Segment mapping: |
+Segment Sections... |
+00 * |
+01 +.interp * |
+02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * |
+03 +.tdata .dynamic .got .got.plt * |
+04 +.dynamic * |
+05 +.tdata .tbss * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG5 \+ 0 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG2 \+ 0 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG6 \+ 0 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG1 \+ 0 |
|
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f ]+R_X86_64_JUMP_SLOT[0-9a-f ]+__tls_get_addr \+ 0 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
.* NOTYPE +LOCAL +DEFAULT +UND * |
.* TLS +GLOBAL +DEFAULT +UND sG5 |
.* TLS +GLOBAL +DEFAULT +UND sG2 |
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr |
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
.* TLS +GLOBAL +DEFAULT +UND sG6 |
.* TLS +GLOBAL +DEFAULT +UND sG1 |
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata |
.* NOTYPE +GLOBAL +DEFAULT +ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
.* NOTYPE +LOCAL +DEFAULT +UND * |
.* SECTION +LOCAL +DEFAULT +1 * |
.* SECTION +LOCAL +DEFAULT +2 * |
.* SECTION +LOCAL +DEFAULT +3 * |
.* SECTION +LOCAL +DEFAULT +4 * |
.* SECTION +LOCAL +DEFAULT +5 * |
.* SECTION +LOCAL +DEFAULT +6 * |
.* SECTION +LOCAL +DEFAULT +7 * |
.* SECTION +LOCAL +DEFAULT +8 * |
.* SECTION +LOCAL +DEFAULT +9 * |
.* SECTION +LOCAL +DEFAULT +10 * |
.* SECTION +LOCAL +DEFAULT +11 * |
.* SECTION +LOCAL +DEFAULT +12 * |
.* SECTION +LOCAL +DEFAULT +13 * |
.* TLS +LOCAL +DEFAULT +9 sl1 |
.* TLS +LOCAL +DEFAULT +9 sl2 |
.* TLS +LOCAL +DEFAULT +9 sl3 |
.* TLS +LOCAL +DEFAULT +9 sl4 |
.* TLS +LOCAL +DEFAULT +9 sl5 |
.* TLS +LOCAL +DEFAULT +9 sl6 |
.* TLS +LOCAL +DEFAULT +9 sl7 |
.* TLS +LOCAL +DEFAULT +9 sl8 |
.* TLS +LOCAL +DEFAULT +10 bl1 |
.* TLS +LOCAL +DEFAULT +10 bl2 |
.* TLS +LOCAL +DEFAULT +10 bl3 |
.* TLS +LOCAL +DEFAULT +10 bl4 |
.* TLS +LOCAL +DEFAULT +10 bl5 |
.* TLS +LOCAL +DEFAULT +10 bl6 |
.* TLS +LOCAL +DEFAULT +10 bl7 |
.* TLS +LOCAL +DEFAULT +10 bl8 |
.* OBJECT +LOCAL +DEFAULT +11 _DYNAMIC |
.* OBJECT +LOCAL +DEFAULT +13 _GLOBAL_OFFSET_TABLE_ |
.* TLS +GLOBAL +DEFAULT +9 sg8 |
.* TLS +GLOBAL +DEFAULT +10 bg8 |
.* TLS +GLOBAL +DEFAULT +10 bg6 |
.* TLS +GLOBAL +DEFAULT +UND sG5 |
.* TLS +GLOBAL +DEFAULT +10 bg3 |
.* TLS +GLOBAL +DEFAULT +9 sg3 |
.* TLS +GLOBAL +HIDDEN +9 sh3 |
.* TLS +GLOBAL +DEFAULT +UND sG2 |
.* TLS +GLOBAL +DEFAULT +9 sg4 |
.* TLS +GLOBAL +DEFAULT +9 sg5 |
.* TLS +GLOBAL +DEFAULT +10 bg5 |
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr |
.* TLS +GLOBAL +HIDDEN +9 sh7 |
.* TLS +GLOBAL +HIDDEN +9 sh8 |
.* TLS +GLOBAL +DEFAULT +9 sg1 |
.* FUNC +GLOBAL +DEFAULT +8 _start |
.* TLS +GLOBAL +HIDDEN +9 sh4 |
.* TLS +GLOBAL +DEFAULT +10 bg7 |
.* TLS +GLOBAL +HIDDEN +9 sh5 |
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
.* TLS +GLOBAL +DEFAULT +UND sG6 |
.* FUNC +GLOBAL +DEFAULT +8 fn2 |
.* TLS +GLOBAL +DEFAULT +9 sg2 |
.* TLS +GLOBAL +DEFAULT +UND sG1 |
.* TLS +GLOBAL +HIDDEN +9 sh1 |
.* TLS +GLOBAL +DEFAULT +9 sg6 |
.* TLS +GLOBAL +DEFAULT +9 sg7 |
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata |
.* NOTYPE +GLOBAL +DEFAULT +ABS _end |
.* TLS +GLOBAL +HIDDEN +9 sh2 |
.* TLS +GLOBAL +HIDDEN +9 sh6 |
.* TLS +GLOBAL +DEFAULT +10 bg2 |
.* TLS +GLOBAL +DEFAULT +10 bg1 |
.* TLS +GLOBAL +DEFAULT +10 bg4 |
/ld/testsuite/ld-x86-64/hidden2.d
0,0 → 1,13
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drw |
|
.*: +file format .* |
|
|
Disassembly of section .text: |
|
[a-f0-9]+ <bar>: |
[ ]*[a-f0-9]+: e8 33 fe ff ff callq 0 .* |
[ ]*[a-f0-9]+: c3 retq |
#pass |
/ld/testsuite/ld-x86-64/tlsbindesc.sd
0,0 → 1,12
#source: tlsbindesc.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.got |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .got: |
601360 00000000 00000000 00000000 00000000 .* |
601370 00000000 00000000 00000000 00000000 .* |
/ld/testsuite/ld-x86-64/tlsgd2.s
0,0 → 1,5
.text |
.globl _start |
_start: |
leaq foo@TLSGD(%rip), %rdi |
call __tls_get_addr |
/ld/testsuite/ld-x86-64/tlsgd4.s
0,0 → 1,14
.text |
.globl _start |
_start: |
leaq foo@TLSGD(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/split-by-file2.s
0,0 → 1,6
.section ".foo", "axl" |
.global label2 |
label2: |
nop |
nop |
nop |
/ld/testsuite/ld-x86-64/protected2-l1om.d
0,0 → 1,17
#source: protected2.s |
#as: --64 -march=l1om |
#ld: -shared -melf_l1om |
#objdump: -drw --insn-width=7 |
|
.*: +file format .* |
|
|
Disassembly of section .text: |
|
0+[a-f0-9]+ <foo>: |
[ ]*[a-f0-9]+: c3 retq |
|
0+[a-f0-9]+ <bar>: |
[ ]*[a-f0-9]+: e8 fa ff ff ff callq [a-f0-9]+ <foo> |
[ ]*[a-f0-9]+: c3 retq |
#pass |
/ld/testsuite/ld-x86-64/tlsdesc.rd
0,0 → 1,160
#source: tlsdesc.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#readelf: -WSsrld |
#target: x86_64-*-* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .rela.plt +.* |
+\[[ 0-9]+\] .plt +PROGBITS +0+450 0+450 0+20 10 +AX +0 +0 +4 |
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+154 00 +AX +0 +0 4096 |
+\[[ 0-9]+\] .tdata +PROGBITS +0+201154 0+1154 0+60 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .tbss +NOBITS +0+2011b4 0+11b4 0+20 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+2011b8 0+11b8 0+150 10 +WA +3 +0 +8 |
+\[[ 0-9]+\] .got +PROGBITS +0+201308 0+1308 0+48 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .got.plt +PROGBITS +0+201350 0+1350 0+68 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is DYN \(Shared object file\) |
Entry point 0x1000 |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
+LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x200000 |
+LOAD +0x0+1154 0x0+201154 0x0+201154 0x0+264 0x0+264 RW +0x200000 |
+DYNAMIC +0x0+11b8 0x0+2011b8 0x0+2011b8 0x0+150 0x0+150 RW +0x8 |
+TLS +0x0+1154 0x0+201154 0x0+201154 0x0+60 0x0+80 R +0x1 |
|
Section to Segment mapping: |
+Segment Sections... |
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * |
+01 +.tdata .dynamic .got .got.plt * |
+02 +.dynamic * |
+03 +.tdata .tbss * |
|
Dynamic section at offset 0x[0-9a-f]+ contains 16 entries: |
+Tag +Type +Name/Value |
0x[0-9a-f]+ +\(HASH\).* |
0x[0-9a-f]+ +\(STRTAB\).* |
0x[0-9a-f]+ +\(SYMTAB\).* |
0x[0-9a-f]+ +\(STRSZ\).* |
0x[0-9a-f]+ +\(SYMENT\).* |
0x[0-9a-f]+ +\(PLTGOT\).* |
0x[0-9a-f]+ +\(PLTRELSZ\).* |
0x[0-9a-f]+ +\(PLTREL\).* |
0x[0-9a-f]+ +\(JMPREL\).* |
0x[0-9a-f]+ +\(TLSDESC_PLT\) +0x460 |
0x[0-9a-f]+ +\(TLSDESC_GOT\) +0x201348 |
0x[0-9a-f]+ +\(RELA\).* |
0x[0-9a-f]+ +\(RELASZ\).* |
0x[0-9a-f]+ +\(RELAENT\).* |
0x[0-9a-f]+ +\(FLAGS\).* |
0x[0-9a-f]+ +\(NULL\).* |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
0+201308 +[0-9a-f]+ R_X86_64_TPOFF64 +0+24 |
0+201310 +[0-9a-f]+ R_X86_64_TPOFF64 +0+30 |
0+201318 +[0-9a-f]+ R_X86_64_TPOFF64 +0+64 |
0+201328 +[0-9a-f]+ R_X86_64_TPOFF64 +0+50 |
0+201330 +[0-9a-f]+ R_X86_64_TPOFF64 +0+70 |
0+201340 +[0-9a-f]+ R_X86_64_TPOFF64 +0+44 |
0+201320 +[0-9a-f]+ R_X86_64_TPOFF64 +0+10 sg5 \+ 0 |
0+201338 +[0-9a-f]+ R_X86_64_TPOFF64 +0+4 sg2 \+ 0 |
|
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 5 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
0+201398 +[0-9a-f]+ R_X86_64_TLSDESC +0+ sg1 \+ 0 |
0+201368 +[0-9a-f]+ R_X86_64_TLSDESC +0+20 |
0+2013a8 +[0-9a-f]+ R_X86_64_TLSDESC +0+40 |
0+201378 +[0-9a-f]+ R_X86_64_TLSDESC +0+60 |
0+201388 +[0-9a-f]+ R_X86_64_TLSDESC +0+ |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 * |
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8 |
+[0-9]+: 0+8 +0 +TLS +GLOBAL +DEFAULT +8 sg3 |
+[0-9]+: 0+c +0 +TLS +GLOBAL +DEFAULT +8 sg4 |
+[0-9]+: 0+10 +0 +TLS +GLOBAL +DEFAULT +8 sg5 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +8 sg1 |
+[0-9]+: 0+1000 +0 +FUNC +GLOBAL +DEFAULT +7 fn1 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+4 +0 +TLS +GLOBAL +DEFAULT +8 sg2 |
+[0-9]+: 0+14 +0 +TLS +GLOBAL +DEFAULT +8 sg6 |
+[0-9]+: 0+18 +0 +TLS +GLOBAL +DEFAULT +8 sg7 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +12 * |
+[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +8 sl1 |
+[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +8 sl2 |
+[0-9]+: 0+28 +0 +TLS +LOCAL +DEFAULT +8 sl3 |
+[0-9]+: 0+2c +0 +TLS +LOCAL +DEFAULT +8 sl4 |
+[0-9]+: 0+30 +0 +TLS +LOCAL +DEFAULT +8 sl5 |
+[0-9]+: 0+34 +0 +TLS +LOCAL +DEFAULT +8 sl6 |
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +8 sl7 |
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +8 sl8 |
+[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1 |
+[0-9]+: 0+ +0 +TLS +LOCAL +DEFAULT +8 _TLS_MODULE_BASE_ |
+[0-9]+: 0+2011b8 +0 +OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC |
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +8 sh3 |
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +9 sH2 |
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +9 sH7 |
+[0-9]+: 0+58 +0 +TLS +LOCAL +DEFAULT +8 sh7 |
+[0-9]+: 0+5c +0 +TLS +LOCAL +DEFAULT +8 sh8 |
+[0-9]+: 0+6c +0 +TLS +LOCAL +DEFAULT +9 sH4 |
+[0-9]+: 0+4c +0 +TLS +LOCAL +DEFAULT +8 sh4 |
+[0-9]+: 0+68 +0 +TLS +LOCAL +DEFAULT +9 sH3 |
+[0-9]+: 0+50 +0 +TLS +LOCAL +DEFAULT +8 sh5 |
+[0-9]+: 0+70 +0 +TLS +LOCAL +DEFAULT +9 sH5 |
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +9 sH6 |
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +9 sH8 |
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +8 sh1 |
+[0-9]+: 0+201350 +0 +OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ |
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +8 sh2 |
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +8 sh6 |
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8 |
+[0-9]+: 0+8 +0 +TLS +GLOBAL +DEFAULT +8 sg3 |
+[0-9]+: 0+c +0 +TLS +GLOBAL +DEFAULT +8 sg4 |
+[0-9]+: 0+10 +0 +TLS +GLOBAL +DEFAULT +8 sg5 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +8 sg1 |
+[0-9]+: 0+1000 +0 +FUNC +GLOBAL +DEFAULT +7 fn1 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+4 +0 +TLS +GLOBAL +DEFAULT +8 sg2 |
+[0-9]+: 0+14 +0 +TLS +GLOBAL +DEFAULT +8 sg6 |
+[0-9]+: 0+18 +0 +TLS +GLOBAL +DEFAULT +8 sg7 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
/ld/testsuite/ld-x86-64/tlsgd5b.s
0,0 → 1,7
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlsld2.s
0,0 → 1,12
.text |
.globl _start |
_start: |
leaq foo@TLSLD(%rip), %rdi |
call __tls_get_addr |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/lp64-2.d
0,0 → 1,4
#source: dummy.s |
#as: --64 |
#ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foo32.o |
#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x86-64 output |
/ld/testsuite/ld-x86-64/nogot2.s
0,0 → 1,4
.text |
.globl _start |
_start: |
movq _GLOBAL_OFFSET_TABLE_(%rip), %rcx |
/ld/testsuite/ld-x86-64/ilp32-2.d
0,0 → 1,4
#source: dummy.s |
#as: --x32 |
#ld: -m elf32_x86_64 tmpdir/startx32.o tmpdir/foo32.o |
#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x64-32 output |
/ld/testsuite/ld-x86-64/protected1.s
0,0 → 1,13
.text |
.globl foo |
.protected foo |
.type foo, @function |
foo: |
ret |
.size foo, .-foo |
.globl bar |
.type bar, @function |
bar: |
leaq foo(%rip), %rax |
ret |
.size bar, .-bar |
/ld/testsuite/ld-x86-64/ilp32-4.d
0,0 → 1,36
#source: start.s |
#as: --x32 |
#ld: -m elf32_x86_64 -shared |
#readelf: -d -S --wide |
|
There are 10 section headers, starting at offset 0x22c: |
|
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 |
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: |
Tag Type Name/Value |
0x00000004 \(HASH\) 0x94 |
0x00000005 \(STRTAB\) 0x134 |
0x00000006 \(SYMTAB\) 0xc4 |
0x0000000a \(STRSZ\) 29 \(bytes\) |
0x0000000b \(SYMENT\) 16 \(bytes\) |
0x00000007 \(RELA\) 0x154 |
0x00000008 \(RELASZ\) 12 \(bytes\) |
0x00000009 \(RELAENT\) 12 \(bytes\) |
0x00000016 \(TEXTREL\) 0x0 |
0x00000000 \(NULL\) 0x0 |
/ld/testsuite/ld-x86-64/protected3.s
0,0 → 1,15
.protected foo |
.globl foo |
.data |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 1 |
.text |
.globl bar |
.type bar, @function |
bar: |
movl foo(%rip), %eax |
ret |
.size bar, .-bar |
/ld/testsuite/ld-x86-64/hidden2.s
0,0 → 1,9
.text |
.globl bar |
.type bar, @function |
bar: |
call foo |
ret |
.size bar, .-bar |
.weak foo |
.hidden foo |
/ld/testsuite/ld-x86-64/pcrel8.d
0,0 → 1,4
#name: PCREL8 overflow |
#source: ../ld-i386/pcrel8.s |
#ld: |
#error: .*relocation truncated to fit: R_X86_64_PC8 .* |
/ld/testsuite/ld-x86-64/tlsbindesc.dd
0,0 → 1,304
#source: tlsbindesc.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.text |
#target: x86_64-*-* |
|
# PT_TLS layout is: |
# Offset from Offset from Name |
# TCB base TCB end |
# 0x00 -0xa0 sg1..sg8 |
# 0x20 -0x80 sl1..sl8 |
# 0x40 -0x60 sh1..sh8 |
# 0x60 -0x40 bg1..bg8 |
# 0x80 -0x20 bl1..bl8 |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+401000 <fn2>: |
[0-9a-f]+: 55[ ]+push %rbp |
[0-9a-f]+: 48 89 e5[ ]+mov %rsp,%rbp |
# GD -> IE because variable is not defined in executable |
[0-9a-f]+: 48 8b 05 6d 03 20 00[ ]+mov 0x20036d\(%rip\),%rax +# 601378 <.*> |
# -> R_X86_64_TPOFF64 sG1 |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# GD -> IE because variable is not defined in executable where |
# the variable is referenced through IE too |
[0-9a-f]+: 48 8b 05 50 03 20 00[ ]+mov 0x200350\(%rip\),%rax +# 601368 <.*> |
# -> R_X86_64_TPOFF64 sG2 |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# GD -> LE with global variable defined in executable |
[0-9a-f]+: 48 c7 c0 60 ff ff ff[ ]+mov \$0xf+60,%rax |
# sg1 |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# GD -> LE with local variable defined in executable |
[0-9a-f]+: 48 c7 c0 80 ff ff ff[ ]+mov \$0xf+80,%rax |
# sl1 |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# GD -> LE with hidden variable defined in executable |
[0-9a-f]+: 48 c7 c0 a0 ff ff ff[ ]+mov \$0xf+a0,%rax |
# sh1 |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LD -> LE |
[0-9a-f]+: 48 c7 c0 00 00 00 00[ ]+mov \$0x0,%rax |
[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 90 81 ff ff ff[ ]+lea -0x7f\(%rax\),%rdx |
# sl1+1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 4c 8d 88 86 ff ff ff[ ]+lea -0x7a\(%rax\),%r9 |
# sl2+2 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LD -> LE against hidden variables |
[0-9a-f]+: 48 8d 90 a0 ff ff ff[ ]+lea -0x60\(%rax\),%rdx |
# sh1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 88 a7 ff ff ff[ ]+lea -0x59\(%rax\),%rcx |
# sh2+3 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE against global var |
[0-9a-f]+: 64 4c 8b 0c 25 00 00[ ]+mov %fs:0x0,%r9 |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 4c 03 0d de 02 20 00[ ]+add 0x2002de\(%rip\),%r9 +# 601368 <.*> |
# -> R_X86_64_TPOFF64 sG2 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against global var defined in exec |
[0-9a-f]+: 64 4c 8b 14 25 00 00[ ]+mov %fs:0x0,%r10 |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 4d 8d 92 60 ff ff ff[ ]+lea -0xa0\(%r10\),%r10 |
# sg1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against local var |
[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 80 80 ff ff ff[ ]+lea -0x80\(%rax\),%rax |
# sl1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against hidden var |
[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 89 a0 ff ff ff[ ]+lea -0x60\(%rcx\),%rcx |
# sh1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# Direct access through %fs |
# IE against global var |
[0-9a-f]+: 48 8b 0d 89 02 20 00[ ]+mov 0x200289\(%rip\),%rcx +# 601360 <.*> |
# -> R_X86_64_TPOFF64 sG5 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE->LE against local var |
[0-9a-f]+: 49 c7 c3 90 ff ff ff[ ]+mov \$0xf+90,%r11 |
# sl5 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 4d 8b 23[ ]+mov %fs:\(%r11\),%r12 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE->LE against hidden var |
[0-9a-f]+: 48 c7 c2 b0 ff ff ff[ ]+mov \$0xf+b0,%rdx |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx |
# sh5 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: c9[ ]+leaveq * |
[0-9a-f]+: c3[ ]+retq * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
|
[0-9a-f]+ <_start>: |
[0-9a-f]+: 55[ ]+push %rbp |
[0-9a-f]+: 48 89 e5[ ]+mov %rsp,%rbp |
# IE against global var |
[0-9a-f]+: 64 4c 8b 1c 25 00 00[ ]+mov %fs:0x0,%r11 |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 4c 03 1d 52 02 20 00[ ]+add 0x200252\(%rip\),%r11 +# 601370 <.*> |
# -> R_X86_64_TPOFF64 sG6 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against global var defined in exec |
[0-9a-f]+: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 92 d4 ff ff ff[ ]+lea -0x2c\(%rdx\),%rdx |
# bg6 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against local var |
[0-9a-f]+: 64 4c 8b 24 25 00 00[ ]+mov %fs:0x0,%r12 |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 49 81 c4 f4 ff ff ff[ ]+add \$0xf+f4,%r12 |
# bl6 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# direct %fs access IE -> LE against local var |
[0-9a-f]+: 48 c7 c2 fc ff ff ff[ ]+mov \$0xf+fc,%rdx |
# bl8 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# IE -> LE against hidden but not local var |
[0-9a-f]+: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 92 b4 ff ff ff[ ]+lea -0x4c\(%rdx\),%rdx |
# sh6 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# direct %fs access IE -> LE against hidden but not local var |
[0-9a-f]+: 48 c7 c2 bc ff ff ff[ ]+mov \$0xf+bc,%rdx |
# sh8 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, global var defined in exec |
[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 8d 90 64 ff ff ff[ ]+lea -0x9c\(%rax\),%rdx |
# sg2 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, local var, non-canonical sequence |
[0-9a-f]+: 49 c7 c1 e6 ff ff ff[ ]+mov \$0xf+e6,%r9 |
# bl2+2 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 4c 01 ca[ ]+add %r9,%rdx |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, hidden var defined in exec, non-canonical sequence |
[0-9a-f]+: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
[0-9a-f]+: 00 00 * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 48 81 c2 a5 ff ff ff[ ]+add \$0xf+a5,%rdx |
# sh2+1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# Direct %fs access |
# LE, global var defined in exec |
[0-9a-f]+: 64 48 8b 04 25 68 ff[ ]+mov %fs:0xf+68,%rax |
[0-9a-f]+: ff ff * |
# sg3 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, local var |
[0-9a-f]+: 64 4c 8b 14 25 eb ff[ ]+mov %fs:0xf+eb,%r10 |
[0-9a-f]+: ff ff * |
# bl3+3 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, hidden var defined in exec |
[0-9a-f]+: 64 48 8b 14 25 a9 ff[ ]+mov %fs:0xf+a9,%rdx |
[0-9a-f]+: ff ff * |
# sh3+1 |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
[0-9a-f]+: 90[ ]+nop * |
# LE, large model |
[0-9a-f]+: 48 ba a5 ff ff ff ff[ ]+movabs \$0xffffffffffffffa5,%rdx |
[0-9a-f]+: ff ff ff * |
[0-9a-f]+: c9[ ]+leaveq * |
[0-9a-f]+: c3[ ]+retq * |
/ld/testsuite/ld-x86-64/line.exp
0,0 → 1,57
# Test that the linker reports undefined symbol line number correctly. |
# |
# Copyright 2007 Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
|
if { !([istarget "x86_64-*-elf*"] |
|| [istarget "x86_64-*-linux*"]) } { |
return |
} |
|
set testline "undefined line" |
|
if ![ld_assemble $as "--64 $srcdir/$subdir/undefined.s" tmpdir/undefined.o] { |
verbose "Unable to assemble test file!" 1 |
unresolved $testline |
return |
} |
|
remote_file host delete "tmpdir/undefined" |
|
# Using -e start prevents the SunOS linker from trying to build a |
# shared library. |
send_log "$ld -e start -melf_x86_64 -o tmpdir/undefined tmpdir/undefined.o\n" |
set exec_output [run_host_cmd "$ld" "-e start -melf_x86_64 -o tmpdir/undefined tmpdir/undefined.o"] |
|
send_log "$exec_output\n" |
verbose "$exec_output" |
|
proc checkund { string testname } { |
global exec_output |
|
if [string match "*$string*" $exec_output] { |
pass $testname |
} else { |
fail $testname |
} |
} |
|
set ml "undefined.c:9: undefined reference to `*this_function_is_not_defined'" |
|
checkund $ml $testline |
/ld/testsuite/ld-x86-64/tlsie3.d
0,0 → 1,4
#name: TLS IE->LE transition check (%r12) |
#as: --64 |
#ld: -melf_x86_64 |
#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.* |
/ld/testsuite/ld-x86-64/tlsle1.d
0,0 → 1,6
#name: TLS LE with PIE |
#as: --64 |
#ld: -melf_x86_64 -pie |
#readelf: -r |
|
There are no relocations in this file. |
/ld/testsuite/ld-x86-64/mixed1a.s
0,0 → 1,6
.text |
.globl _start |
.type _start, @function |
_start: |
cmpq $0, foo(%rip) |
.size _start, .-_start |
/ld/testsuite/ld-x86-64/tlsgd6.dd
0,0 → 1,14
#source: tlsgd6a.s |
#as: --x32 |
#ld: -melf32_x86_64 tmpdir/tlsgd6 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 64 8b 04 25 00 00 00 00 mov %fs:0x0,%eax |
[ ]*[a-f0-9]+: 48 03 05 81 00 20 00 add 0x200081\(%rip\),%rax # 60022c <_DYNAMIC\+0x80> |
#pass |
/ld/testsuite/ld-x86-64/tlsie4.dd
0,0 → 1,18
#source: tlsie4.s |
#as: --x32 |
#ld: -melf32_x86_64 tmpdir/tlsie4 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: c7 c0 fc ff ff ff mov \$0xfffffffc,%eax |
[ ]*[a-f0-9]+: 8d 80 fc ff ff ff lea -0x4\(%rax\),%eax |
[ ]*[a-f0-9]+: 41 c7 c0 fc ff ff ff mov \$0xfffffffc,%r8d |
[ ]*[a-f0-9]+: 45 8d 80 fc ff ff ff lea -0x4\(%r8\),%r8d |
[ ]*[a-f0-9]+: 41 c7 c4 fc ff ff ff mov \$0xfffffffc,%r12d |
[ ]*[a-f0-9]+: 41 81 c4 fc ff ff ff add \$0xfffffffc,%r12d |
#pass |
/ld/testsuite/ld-x86-64/tlslib.s
0,0 → 1,18
.section ".tdata", "awT", @progbits |
.globl sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8 |
sG1: .long 513 |
sG2: .long 514 |
sG3: .long 515 |
sG4: .long 516 |
sG5: .long 517 |
sG6: .long 518 |
sG7: .long 519 |
sG8: .long 520 |
|
.text |
/* Dummy. */ |
.globl __tls_get_addr |
.type __tls_get_addr,@function |
__tls_get_addr: |
movq %rdi, %rax |
ret |
/ld/testsuite/ld-x86-64/tlsbindesc.s
0,0 → 1,128
/* Force .data aligned to 4K, so that .got very likely gets at |
0x5021a0 (0x60 bytes .tdata and 0x140 bytes .dynamic) */ |
.data |
.balign 4096 |
.section ".tdata", "awT", @progbits |
.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 257 |
sh2: .long 258 |
sh3: .long 259 |
sh4: .long 260 |
sh5: .long 261 |
sh6: .long 262 |
sh7: .long 263 |
sh8: .long 264 |
/* Force .text aligned to 4K, so it very likely gets at 0x401000. */ |
.text |
.balign 4096 |
.globl fn2 |
.type fn2,@function |
fn2: |
pushq %rbp |
movq %rsp, %rbp |
|
/* GD -> IE because variable is not defined in executable */ |
leaq sG1@tlsdesc(%rip), %rax |
call *sG1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE because variable is not defined in executable where |
the variable is referenced through IE too */ |
leaq sG2@tlsdesc(%rip), %rax |
call *sG2@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> LE with global variable defined in executable */ |
leaq sg1@tlsdesc(%rip), %rax |
call *sg1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> LE with local variable defined in executable */ |
leaq sl1@tlsdesc(%rip), %rax |
call *sl1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> LE with hidden variable defined in executable */ |
leaq sh1@tlsdesc(%rip), %rax |
call *sh1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* LD -> LE */ |
leaq _TLS_MODULE_BASE_@tlsdesc(%rip), %rax |
call *_TLS_MODULE_BASE_@tlscall(%rax) |
nop;nop |
leaq 1+sl1@dtpoff(%rax), %rdx |
nop;nop |
leaq sl2@dtpoff+2(%rax), %r9 |
nop;nop;nop;nop |
|
/* LD -> LE against hidden variables */ |
leaq sh1@dtpoff(%rax), %rdx |
nop;nop |
leaq 3+sh2@dtpoff(%rax), %rcx |
nop;nop;nop;nop |
|
/* IE against global var */ |
movq %fs:0, %r9 |
nop;nop |
addq sG2@gottpoff(%rip), %r9 |
nop;nop;nop;nop |
|
/* IE -> LE against global var defined in exec */ |
movq %fs:0, %r10 |
nop;nop |
addq sg1@gottpoff(%rip), %r10 |
nop;nop;nop;nop |
|
/* IE -> LE against local var */ |
movq %fs:0, %rax |
nop;nop |
addq sl1@gottpoff(%rip), %rax |
nop;nop;nop;nop |
|
/* IE -> LE against hidden var */ |
movq %fs:0, %rcx |
nop;nop |
addq sh1@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* Direct access through %fs */ |
|
/* IE against global var */ |
movq sG5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
/* IE->LE against local var */ |
movq sl5@gottpoff(%rip), %r11 |
nop;nop |
movq %fs:(%r11), %r12 |
nop;nop;nop;nop |
|
/* IE->LE against hidden var */ |
movq sh5@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rdx |
nop;nop;nop;nop |
|
leave |
ret |
/ld/testsuite/ld-x86-64/tlsbin.s
0,0 → 1,100
.section ".tbss", "awT", @nobits |
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8 |
bg1: .space 4 |
bg2: .space 4 |
bg3: .space 4 |
bg4: .space 4 |
bg5: .space 4 |
bg6: .space 4 |
bg7: .space 4 |
bg8: .space 4 |
bl1: .space 4 |
bl2: .space 4 |
bl3: .space 4 |
bl4: .space 4 |
bl5: .space 4 |
bl6: .space 4 |
bl7: .space 4 |
bl8: .space 4 |
.text |
.globl _start |
.type _start,@function |
_start: |
pushq %rbp |
movq %rsp, %rbp |
|
/* IE against global var */ |
movq %fs:0, %r11 |
nop;nop |
addq sG6@gottpoff(%rip), %r11 |
nop;nop;nop;nop |
|
/* IE -> LE against global var defined in exec */ |
movq %fs:0, %rdx |
nop;nop |
addq bg6@gottpoff(%rip), %rdx |
nop;nop;nop;nop |
|
/* IE -> LE against local var */ |
movq %fs:0, %r12 |
nop;nop |
addq bl6@gottpoff(%rip), %r12 |
nop;nop;nop;nop |
|
/* direct %fs access IE -> LE against local var */ |
movq bl8@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rax |
nop;nop;nop;nop |
|
/* IE -> LE against hidden but not local var */ |
movq %fs:0, %rdx |
nop;nop |
addq sh6@gottpoff(%rip), %rdx |
nop;nop;nop;nop |
|
/* direct %fs access IE -> LE against hidden but not local var */ |
movq sh8@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rax |
nop;nop;nop;nop |
|
/* LE, global var defined in exec */ |
movq %fs:0, %rax |
nop;nop |
leaq sg2@tpoff(%rax), %rdx |
nop;nop;nop;nop |
|
/* LE, local var, non-canonical sequence */ |
movq $2+bl2@tpoff, %r9 |
nop;nop |
movq %fs:0, %rdx |
nop;nop |
addq %r9, %rdx |
nop;nop;nop;nop |
|
/* LE, hidden var defined in exec, non-canonical sequence */ |
movq %fs:0, %rdx |
nop;nop |
addq $sh2@tpoff+1, %rdx |
nop;nop;nop;nop |
|
/* Direct %fs access */ |
|
/* LE, global var defined in exec */ |
movq %fs:sg3@tpoff, %rax |
nop;nop;nop;nop |
|
/* LE, local var */ |
movq %fs:bl3@tpoff+3, %r10 |
nop;nop;nop;nop |
|
/* LE, hidden var defined in exec */ |
movq %fs:1+sh3@tpoff, %rdx |
nop;nop;nop;nop |
|
/* LE, large model */ |
movabsq $sh2@tpoff+1, %rdx |
|
leave |
ret |
/ld/testsuite/ld-x86-64/dwarfreloc.rd
0,0 → 1,17
# Parenthesized `(...)' is the offset we cross-check. |
# The third parenthesized value was left unrelocated (0x0) before. |
#... |
.*Abbrev Number: .* \(DW_TAG_variable\).* |
#... |
.*DW_AT_type *: *<0x(32)>.* |
#... |
.*<(32)>: Abbrev Number: .* \(DW_TAG_base_type\).* |
#... |
.*Compilation Unit.* |
#... |
.*Abbrev Number: .* \(DW_TAG_compile_unit\).* |
#... |
.*Abbrev Number: .* \(DW_TAG_variable\).* |
#... |
.*DW_AT_type : <0x(32)>.* |
#... |
/ld/testsuite/ld-x86-64/tlsgdesc.dd
0,0 → 1,163
#source: tlsgdesc.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.text |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+[0-9a-f]+ <fc1>: |
+[0-9a-f]+: 55[ ]+push %rbp |
+[0-9a-f]+: 48 89 e5[ ]+mov %rsp,%rbp |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 5e 02 20 00[ ]+add 0x20025e\(%rip\),%rcx +# 200660 <.*> |
# -> R_X86_64_TPOFF64 sG3 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 68 02 20 00[ ]+add 0x200268\(%rip\),%rcx +# 200680 <.*> |
# -> R_X86_64_TPOFF64 sG4 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD, gd first |
+[0-9a-f]+: 66 48 8d 3d 6c 02 20[ ]+data32 lea 0x20026c\(%rip\),%rdi +# 200690 <.*> |
+[0-9a-f]+: 00 * |
# -> R_X86_64_DTPMOD64 sG1 |
+[0-9a-f]+: 66 66 48 e8 9c ff ff[ ]+data32 data32 callq [0-9a-f]+ <.*> |
+[0-9a-f]+: ff[ ]+ |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8d 05 a1 02 20 00[ ]+lea 0x2002a1\(%rip\),%rax +# 2006d8 <.*> |
# -> R_X86_64_TLSDESC sG1 |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD, desc first |
+[0-9a-f]+: 48 8d 05 84 02 20 00[ ]+lea 0x200284\(%rip\),%rax +# 2006c8 <.*> |
# -> R_X86_64_TLSDESC sG2 |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 66 48 8d 3d 1e 02 20[ ]+data32 lea 0x20021e\(%rip\),%rdi +# 200670 <.*> |
+[0-9a-f]+: 00 * |
# -> R_X86_64_DTPMOD64 sG2 |
+[0-9a-f]+: 66 66 48 e8 6e ff ff[ ]+data32 data32 callq [0-9a-f]+ <.*> |
+[0-9a-f]+: ff[ ]+ |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE, gd first, after IE use |
+[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 48 03 05 f2 01 20 00[ ]+add 0x2001f2\(%rip\),%rax +# 200660 <.*> |
# -> R_X86_64_TPOFF64 sG3 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8b 05 e7 01 20 00[ ]+mov 0x2001e7\(%rip\),%rax +# 200660 <.*> |
# -> R_X86_64_TPOFF64 sG3 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE, desc first, after IE use |
+[0-9a-f]+: 48 8b 05 fa 01 20 00[ ]+mov 0x2001fa\(%rip\),%rax +# 200680 <.*> |
# -> R_X86_64_TPOFF64 sG4 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 48 03 05 e4 01 20 00[ ]+add 0x2001e4\(%rip\),%rax +# 200680 <.*> |
# -> R_X86_64_TPOFF64 sG4 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE, gd first, before IE use |
+[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 48 03 05 b8 01 20 00[ ]+add 0x2001b8\(%rip\),%rax +# 200668 <.*> |
# -> R_X86_64_TPOFF64 sG5 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8b 05 ad 01 20 00[ ]+mov 0x2001ad\(%rip\),%rax +# 200668 <.*> |
# -> R_X86_64_TPOFF64 sG5 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE, desc first, before IE use |
+[0-9a-f]+: 48 8b 05 c0 01 20 00[ ]+mov 0x2001c0\(%rip\),%rax +# 200688 <.*> |
# -> R_X86_64_TPOFF64 sG6 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 48 03 05 aa 01 20 00[ ]+add 0x2001aa\(%rip\),%rax +# 200688 <.*> |
# -> R_X86_64_TPOFF64 sG6 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 74 01 20 00[ ]+add 0x200174\(%rip\),%rcx +# 200668 <.*> |
# -> R_X86_64_TPOFF64 sG5 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 7e 01 20 00[ ]+add 0x20017e\(%rip\),%rcx +# 200688 <.*> |
# -> R_X86_64_TPOFF64 sG6 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: c9[ ]+leaveq * |
+[0-9a-f]+: c3[ ]+retq * |
/ld/testsuite/ld-x86-64/tlsbin.sd
0,0 → 1,12
#source: tlsbinpic.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.got |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .got: |
6013d8 00000000 00000000 00000000 00000000 .* |
6013e8 00000000 00000000 00000000 00000000 .* |
/ld/testsuite/ld-x86-64/tlsbindesc.td
0,0 → 1,16
#source: tlsbindesc.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.tdata |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .tdata: |
601200 11000000 12000000 13000000 14000000 .* |
601210 15000000 16000000 17000000 18000000 .* |
601220 41000000 42000000 43000000 44000000 .* |
601230 45000000 46000000 47000000 48000000 .* |
601240 01010000 02010000 03010000 04010000 .* |
601250 05010000 06010000 07010000 08010000 .* |
/ld/testsuite/ld-x86-64/tlsie1.s
0,0 → 1,14
.text |
.globl _start |
_start: |
movq foo@GOTTPOFF(%rip), %rax |
addq foo@GOTTPOFF(%rip), %rax |
movq foo@GOTTPOFF(%rip), %r12 |
addq foo@GOTTPOFF(%rip), %r12 |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlspic.rd
0,0 → 1,144
#source: tlspic1.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#readelf: -WSsrl |
#target: x86_64-*-* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .rela.plt +.* |
+\[[ 0-9]+\] .plt +.* |
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1ac 00 +AX +0 +0 4096 |
+\[[ 0-9]+\] .tdata +PROGBITS +0+2011ac 0+11ac 0+60 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .tbss +NOBITS +0+20120c 0+120c 0+20 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+201210 0+1210 0+130 10 +WA +3 +0 +8 |
+\[[ 0-9]+\] .got +PROGBITS +0+201340 0+1340 0+90 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .got.plt +PROGBITS +0+2013d0 0+13d0 0+20 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is DYN \(Shared object file\) |
Entry point 0x1000 |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
+LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x200000 |
+LOAD +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+244 0x0+244 RW +0x200000 |
+DYNAMIC +0x0+1210 0x0+201210 0x0+201210 0x0+130 0x0+130 RW +0x8 |
+TLS +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+60 0x0+80 R +0x1 |
|
Section to Segment mapping: |
+Segment Sections... |
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * |
+01 +.tdata .dynamic .got .got.plt * |
+02 +.dynamic * |
+03 +.tdata .tbss * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f ]+R_X86_64_DTPMOD64 +0+ |
[0-9a-f ]+R_X86_64_TPOFF64 +0+24 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+30 |
[0-9a-f ]+R_X86_64_DTPMOD64 +0+ |
[0-9a-f ]+R_X86_64_DTPMOD64 +0+ |
[0-9a-f ]+R_X86_64_TPOFF64 +0+64 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+50 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+70 |
[0-9a-f ]+R_X86_64_DTPMOD64 +0+ |
[0-9a-f ]+R_X86_64_TPOFF64 +0+44 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+10 sg5 \+ 0 |
[0-9a-f ]+R_X86_64_DTPMOD64 +0+ sg1 \+ 0 |
[0-9a-f ]+R_X86_64_DTPOFF64 +0+ sg1 \+ 0 |
[0-9a-f ]+R_X86_64_TPOFF64 +0+4 sg2 \+ 0 |
|
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f ]+R_X86_64_JUMP_SLOT +0+ __tls_get_addr \+ 0 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
.* NOTYPE +LOCAL +DEFAULT +UND * |
.* SECTION +LOCAL +DEFAULT +7 * |
.* SECTION +LOCAL +DEFAULT +8 * |
.* TLS +GLOBAL +DEFAULT +8 sg8 |
.* TLS +GLOBAL +DEFAULT +8 sg3 |
.* TLS +GLOBAL +DEFAULT +8 sg4 |
.* TLS +GLOBAL +DEFAULT +8 sg5 |
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr |
.* TLS +GLOBAL +DEFAULT +8 sg1 |
.* FUNC +GLOBAL +DEFAULT +7 fn1 |
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
.* TLS +GLOBAL +DEFAULT +8 sg2 |
.* TLS +GLOBAL +DEFAULT +8 sg6 |
.* TLS +GLOBAL +DEFAULT +8 sg7 |
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata |
.* NOTYPE +GLOBAL +DEFAULT +ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
.* NOTYPE +LOCAL +DEFAULT +UND * |
.* SECTION +LOCAL +DEFAULT +1 * |
.* SECTION +LOCAL +DEFAULT +2 * |
.* SECTION +LOCAL +DEFAULT +3 * |
.* SECTION +LOCAL +DEFAULT +4 * |
.* SECTION +LOCAL +DEFAULT +5 * |
.* SECTION +LOCAL +DEFAULT +6 * |
.* SECTION +LOCAL +DEFAULT +7 * |
.* SECTION +LOCAL +DEFAULT +8 * |
.* SECTION +LOCAL +DEFAULT +9 * |
.* SECTION +LOCAL +DEFAULT +10 * |
.* SECTION +LOCAL +DEFAULT +11 * |
.* SECTION +LOCAL +DEFAULT +12 * |
.* TLS +LOCAL +DEFAULT +8 sl1 |
.* TLS +LOCAL +DEFAULT +8 sl2 |
.* TLS +LOCAL +DEFAULT +8 sl3 |
.* TLS +LOCAL +DEFAULT +8 sl4 |
.* TLS +LOCAL +DEFAULT +8 sl5 |
.* TLS +LOCAL +DEFAULT +8 sl6 |
.* TLS +LOCAL +DEFAULT +8 sl7 |
.* TLS +LOCAL +DEFAULT +8 sl8 |
.* TLS +LOCAL +DEFAULT +9 sH1 |
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC |
.* TLS +LOCAL +DEFAULT +8 sh3 |
.* TLS +LOCAL +DEFAULT +9 sH2 |
.* TLS +LOCAL +DEFAULT +9 sH7 |
.* TLS +LOCAL +DEFAULT +8 sh7 |
.* TLS +LOCAL +DEFAULT +8 sh8 |
.* TLS +LOCAL +DEFAULT +9 sH4 |
.* TLS +LOCAL +DEFAULT +8 sh4 |
.* TLS +LOCAL +DEFAULT +9 sH3 |
.* TLS +LOCAL +DEFAULT +8 sh5 |
.* TLS +LOCAL +DEFAULT +9 sH5 |
.* TLS +LOCAL +DEFAULT +9 sH6 |
.* TLS +LOCAL +DEFAULT +9 sH8 |
.* TLS +LOCAL +DEFAULT +8 sh1 |
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ |
.* TLS +LOCAL +DEFAULT +8 sh2 |
.* TLS +LOCAL +DEFAULT +8 sh6 |
.* TLS +GLOBAL +DEFAULT +8 sg8 |
.* TLS +GLOBAL +DEFAULT +8 sg3 |
.* TLS +GLOBAL +DEFAULT +8 sg4 |
.* TLS +GLOBAL +DEFAULT +8 sg5 |
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr |
.* TLS +GLOBAL +DEFAULT +8 sg1 |
.* FUNC +GLOBAL +DEFAULT +7 fn1 |
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
.* TLS +GLOBAL +DEFAULT +8 sg2 |
.* TLS +GLOBAL +DEFAULT +8 sg6 |
.* TLS +GLOBAL +DEFAULT +8 sg7 |
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata |
.* NOTYPE +GLOBAL +DEFAULT +ABS _end |
/ld/testsuite/ld-x86-64/tlsie3.s
0,0 → 1,12
.text |
.globl _start |
_start: |
leaq foo@GOTTPOFF(%rip), %r12 |
movq (%r12), %r12 |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlsgd6a.s
0,0 → 1,7
.text |
.globl _start |
_start: |
leaq foo@TLSGD(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr |
/ld/testsuite/ld-x86-64/tlsle1.s
0,0 → 1,11
.text |
.globl _start |
_start: |
movl $0, %fs:foo@TPOFF |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlsdesc.sd
0,0 → 1,23
#source: tlsdesc.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -s -j.got -j.got.plt |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section \.got: |
201308 00000000 00000000 00000000 00000000 .* |
201318 00000000 00000000 00000000 00000000 .* |
201328 00000000 00000000 00000000 00000000 .* |
201338 00000000 00000000 00000000 00000000 .* |
201348 00000000 00000000 .* |
Contents of section \.got\.plt: |
201350 b8112000 00000000 00000000 00000000 .* |
201360 00000000 00000000 00000000 00000000 .* |
201370 00000000 00000000 00000000 00000000 .* |
201380 00000000 00000000 00000000 00000000 .* |
201390 00000000 00000000 00000000 00000000 .* |
2013a0 00000000 00000000 00000000 00000000 .* |
2013b0 00000000 00000000 .* |
/ld/testsuite/ld-x86-64/x86-64.exp
0,0 → 1,205
# Expect script for ld-x86_64 tests |
# Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
# Free Software Foundation |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
# |
|
# Test x86_64 linking; all types of relocs. This tests the assembler and |
# tools like objdump as well as the linker. |
|
if { !([istarget "x86_64-*-elf*"] |
|| [istarget "x86_64-*-linux*"]) } { |
return |
} |
|
# List contains test-items with 3 items followed by 2 lists: |
# 0:name 1:ld options 2:assembler options |
# 3:filenames of assembler files 4: action and options. 5: name of output file |
|
# Actions: |
# objdump: Apply objdump options on result. Compare with regex (last arg). |
# nm: Apply nm options on result. Compare with regex (last arg). |
# readelf: Apply readelf options on result. Compare with regex (last arg). |
|
set x86_64tests { |
{"TLS -fpic -shared transitions" "-shared -melf_x86_64" |
"--64" {tlspic1.s tlspic2.s} |
{{readelf -WSsrl tlspic.rd} {objdump -drj.text tlspic.dd} |
{objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}} |
"libtlspic.so"} |
{"TLS descriptor -fpic -shared transitions" "-shared -melf_x86_64" |
"--64" {tlsdesc.s tlspic2.s} |
{{readelf -WSsrld tlsdesc.rd} {objdump -drj.text tlsdesc.dd} |
{objdump "-s -j.got -j.got.plt" tlsdesc.sd} {objdump -sj.tdata tlsdesc.td} |
{objdump -drj.plt tlsdesc.pd}} "libtlsdesc.so"} |
{"Helper shared library" "-shared -melf_x86_64" |
"--64" {tlslib.s} {} "libtlslib.so"} |
{"TLS -fpic and -fno-pic exec transitions" |
"-melf_x86_64 tmpdir/libtlslib.so" "--64" {tlsbinpic.s tlsbin.s} |
{{readelf -WSsrl tlsbin.rd} {objdump -drj.text tlsbin.dd} |
{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}} |
"tlsbin"} |
{"TLS descriptor -fpic and -fno-pic exec transitions" |
"-melf_x86_64 tmpdir/libtlslib.so" "--64" {tlsbindesc.s tlsbin.s} |
{{readelf -WSsrl tlsbindesc.rd} {objdump -drj.text tlsbindesc.dd} |
{objdump -sj.got tlsbindesc.sd} {objdump -sj.tdata tlsbindesc.td}} |
"tlsbindesc"} |
{"TLS with global dynamic and descriptors" |
"-shared -melf_x86_64" "--64" {tlsgdesc.s} |
{{readelf -WSsrl tlsgdesc.rd} {objdump -drj.text tlsgdesc.dd}} |
"libtlsgdesc.so"} |
{"TLS in debug sections" "-melf_x86_64" |
"--64" {tlsg.s} |
{{objdump -sj.debug_foobar tlsg.sd}} "tlsg"} |
{"TLS GD->LE transition" "-melf_x86_64" |
"--64" {tlsgd1.s} |
{{objdump -dwr tlsgd1.dd}} "tlsgd1"} |
{"TLS LD->LE transition" "-melf_x86_64" |
"--64" {tlsld1.s} |
{{objdump -dwr tlsld1.dd}} "tlsld1"} |
{"TLS IE->LE transition" "-melf_x86_64" |
"--64" {tlsie1.s} |
{{objdump -dwr tlsie1.dd}} "tlsie1"} |
{"Helper 64bit object 1" "-r -melf_x86_64" |
"--64" {mixed1a.s} {} "libmixe1a.o"} |
{"Helper 32bit object 1" "-r -melf_i386" |
"--32" {mixed1b.s} {} "libmixe1b.o"} |
{"Helper 64bit object 2" "-r -melf_x86_64" |
"--64" {mixed2a.s} {} "libmixe2a.o"} |
{"Helper 32bit object 2" "-r -melf_i386" |
"--32" {mixed2b.s} {} "libmixe2b.o"} |
{"Split by file with 'l' flag on section." "-split-by-file -r" |
"--64" {split-by-file1.s split-by-file2.s} |
{{readelf -SW split-by-file.rd}} "split-by-file.o"} |
{"TLS X32 IE->LE transition" "-melf32_x86_64" |
"--x32" {tlsie4.s} |
{{objdump -dwr tlsie4.dd}} "tlsie4"} |
{"TLS X32 GD->LE transition" "-melf32_x86_64" |
"--x32" {tlsgd4.s} |
{{objdump -dwr tlsgd4.dd}} "tlsgd4"} |
{"Helper TLS GD->IE transition DSO" "-shared -melf_x86_64" |
"--64" {tlsgd5b.s} {} "libtlsgd5.so"} |
{"TLS GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so" |
"--64" {tlsgd5a.s} |
{{objdump -dwr tlsgd5.dd}} "tlsgd5"} |
{"Helper TLS X32 GD->IE transition DSO" "-shared -melf32_x86_64" |
"--x32" {tlsgd6b.s} {} "libtlsgd6.so"} |
{"TLS X32 GD->IE transition" "-melf32_x86_64 tmpdir/libtlsgd6.so" |
"--x32" {tlsgd6a.s} |
{{objdump -dwr tlsgd6.dd}} "tlsgd6"} |
{"TLS X32 LD->LE transition" "-melf32_x86_64" |
"--x32" {tlsld2.s} |
{{objdump -dwr tlsld2.dd}} "tlsld2"} |
} |
|
run_ld_link_tests $x86_64tests |
|
global link_output |
global ld |
|
set test_name "Mixed x86_64 and i386 input test 1" |
set test mixed1 |
if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 tmpdir/${test}a.o tmpdir/${test}b.o"] } { |
if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] { |
pass "$test_name" |
} { |
fail "$test_name" |
} |
} |
|
set test_name "Mixed x86_64 and i386 input test 2" |
set test mixed2 |
if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 tmpdir/${test}a.o tmpdir/${test}b.o"] } { |
if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] { |
pass "$test_name" |
} { |
fail "$test_name" |
} |
} |
|
run_dump_test "abs" |
run_dump_test "abs-l1om" |
run_dump_test "pcrel8" |
run_dump_test "pcrel16" |
run_dump_test "tlsgd2" |
run_dump_test "tlsgd3" |
run_dump_test "tlsie2" |
run_dump_test "tlsie3" |
run_dump_test "hidden1" |
run_dump_test "hidden2" |
run_dump_test "hidden3" |
run_dump_test "protected1" |
run_dump_test "protected2" |
run_dump_test "protected2-l1om" |
run_dump_test "protected3" |
run_dump_test "protected3-l1om" |
run_dump_test "tlsle1" |
run_dump_test "tlspie1" |
run_dump_test "unique1" |
run_dump_test "nogot1" |
run_dump_test "nogot2" |
run_dump_test "discarded1" |
run_dump_test "pr12718" |
|
if { ![istarget "x86_64-*-linux*"] } { |
return |
} |
|
if ![ld_assemble $as "--x32 $srcdir/$subdir/start.s" tmpdir/startx32.o] { |
unresolved "Build ILP32 start.o" |
return |
} |
|
if ![ld_assemble $as "--32 $srcdir/$subdir/start.s" tmpdir/start32.o] { |
unresolved "Build ia32 start.o" |
return |
} |
|
if ![ld_assemble $as "--64 $srcdir/$subdir/start.s" tmpdir/start64.o] { |
unresolved "Build LP64 start.o" |
return |
} |
|
if ![ld_assemble $as "--x32 $srcdir/$subdir/foo.s" tmpdir/foox32.o] { |
unresolved "Build ILP32 foo.o" |
return |
} |
|
if ![ld_assemble $as "--32 $srcdir/$subdir/foo.s" tmpdir/foo32.o] { |
unresolved "Build ia32 foo.o" |
return |
} |
|
if ![ld_assemble $as "--64 $srcdir/$subdir/foo.s" tmpdir/foo64.o] { |
unresolved "Build LP64 foo.o" |
return |
} |
|
run_dump_test "compressed1" |
run_dump_test "ilp32-1" |
run_dump_test "ilp32-2" |
run_dump_test "ilp32-3" |
run_dump_test "ilp32-4" |
run_dump_test "ilp32-5" |
run_dump_test "ia32-1" |
run_dump_test "ia32-2" |
run_dump_test "ia32-3" |
run_dump_test "lp64-1" |
run_dump_test "lp64-2" |
run_dump_test "lp64-3" |
/ld/testsuite/ld-x86-64/dwarfreloc1.s
0,0 → 1,101
.file 1 "dwarfreloc1.c" |
.comm i1,4,4 |
.section .debug_line,"",@progbits |
.Ldebug_line0: |
.section .debug_info |
.Ldebug_info0: |
.long .Ldebug_info_end - .Ldebug_info_start |
.Ldebug_info_start: |
.value 0x2 |
.long .Ldebug_abbrev0 |
.byte 0x8 |
|
.uleb128 0x1 /* DW_TAG_compile_unit */ |
.long .LASF0 /* DW_AT_producer */ |
.byte 0x1 /* DW_AT_language */ |
.long .LASF1 /* DW_AT_name */ |
.long .LASF2 /* DW_AT_comp_dir */ |
.long .Ldebug_line0 /* DW_AT_stmt_list */ |
|
.uleb128 0x2 /* DW_TAG_variable */ |
.string "i1" /* DW_AT_name */ |
.byte 0x1 /* DW_AT_decl_file */ |
.byte 0x1 /* DW_AT_decl_line */ |
.long .dwarfreloc1.0.2 - .Ldebug_info0 /* DW_AT_type (DW_FORM_ref4) */ |
.byte 0x1 /* DW_AT_external */ |
.byte 0x9 /* DW_AT_location: length */ |
.byte 0x3 /* DW_AT_location: DW_OP_addr */ |
.quad i1 /* DW_AT_location: DW_OP_addr: address */ |
|
/* DWARF3 Page 224 (236/267) |
<prefix>.<file-designator>.<gid-number>.<die-number> */ |
.globl .dwarfreloc1.0.2 |
.dwarfreloc1.0.2: |
.uleb128 0x3 /* DW_TAG_base_type */ |
.byte 0x4 /* DW_AT_byte_size */ |
.byte 0x5 /* DW_AT_encoding */ |
.string "int" /* DW_AT_name */ |
|
.byte 0x0 |
.Ldebug_info_end: |
|
.section .debug_abbrev |
.Ldebug_abbrev0: |
.uleb128 0x1 |
.uleb128 0x11 |
|
.byte 0x1 |
.uleb128 0x25 /* DW_AT_producer */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x13 /* DW_AT_language */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x1b /* DW_AT_comp_dir */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x10 /* DW_AT_stmt_list */ |
.uleb128 0x6 /* DW_FORM_data4 */ |
.byte 0x0 |
.byte 0x0 |
|
.uleb128 0x2 |
.uleb128 0x34 /* DW_TAG_variable */ |
.byte 0x0 |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0x8 /* DW_FORM_string */ |
.uleb128 0x3a /* DW_AT_decl_file */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3b /* DW_AT_decl_line */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x49 /* DW_AT_type */ |
.uleb128 0x13 /* DW_FORM_ref4 */ |
.uleb128 0x3f /* DW_AT_external */ |
.uleb128 0xc /* DW_FORM_flag */ |
.uleb128 0x2 /* DW_AT_location */ |
.uleb128 0xa /* DW_FORM_block1 */ |
.byte 0x0 |
.byte 0x0 |
|
.uleb128 0x3 |
.uleb128 0x24 /* DW_TAG_base_type */ |
.byte 0x0 |
.uleb128 0xb /* DW_AT_byte_size */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3e /* DW_AT_encoding */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0x8 /* DW_FORM_string */ |
.byte 0x0 |
.byte 0x0 |
|
.byte 0x0 |
|
.section .debug_str,"MS",@progbits,1 |
.LASF1: |
.string "dwarfreloc1.c" |
.LASF0: |
.string "GNU C 4.3.1 20080801 (Red Hat 4.3.1-6)" |
.LASF2: |
.string "/" |
.ident "GCC: (GNU) 4.3.1 20080801 (Red Hat 4.3.1-6)" |
.section .note.GNU-stack,"",@progbits |
/ld/testsuite/ld-x86-64/tlsg.sd
0,0 → 1,10
#source: tlsg.s |
#as: --64 |
#ld: -melf_x86_64 |
#objdump: -sj.debug_foobar |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .debug_foobar: |
0+ 18000000 0+ +.* |
/ld/testsuite/ld-x86-64/ia32-2.d
0,0 → 1,4
#source: dummy.s |
#as: --32 |
#ld: -m elf_i386 tmpdir/start32.o tmpdir/foox32.o |
#error: .*i386:x64-32 architecture of input file `tmpdir/foox32.o' is incompatible with i386 output |
/ld/testsuite/ld-x86-64/tlspic1.s
0,0 → 1,187
/* Force .data aligned to 4K, so .got very likely gets at 0x102190 |
(0x60 bytes .tdata and 0x130 bytes .dynamic) */ |
.data |
.balign 4096 |
.section ".tdata", "awT", @progbits |
.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 257 |
sh2: .long 258 |
sh3: .long 259 |
sh4: .long 260 |
sh5: .long 261 |
sh6: .long 262 |
sh7: .long 263 |
sh8: .long 264 |
/* Force .text aligned to 4K, so it very likely gets at 0x1000. */ |
.text |
.balign 4096 |
.globl fn1 |
.type fn1,@function |
fn1: |
pushq %rbp |
movq %rsp, %rbp |
nop;nop;nop;nop |
|
/* GD */ |
.byte 0x66 |
leaq sg1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE because variable is referenced through IE too */ |
.byte 0x66 |
leaq sg2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD against local variable */ |
.byte 0x66 |
leaq sl1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE against local variable referenced through IE too */ |
.byte 0x66 |
leaq sl2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD against hidden and local variable */ |
.byte 0x66 |
leaq sh1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE against hidden and local variable referenced through |
IE too */ |
.byte 0x66 |
leaq sh2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD against hidden but not local variable */ |
.byte 0x66 |
leaq sH1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE against hidden but not local variable referenced through |
IE too */ |
.byte 0x66 |
leaq sH2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* LD */ |
leaq sl1@tlsld(%rip), %rdi |
call __tls_get_addr@plt |
nop;nop |
leaq sl1@dtpoff(%rax), %rdx |
nop;nop |
leaq 2+sl2@dtpoff(%rax), %r9 |
nop;nop;nop;nop |
|
/* LD against hidden and local variables */ |
leaq sh1@tlsld(%rip), %rdi |
call __tls_get_addr@plt |
nop;nop |
leaq sh1@dtpoff(%rax), %rdx |
nop;nop |
leaq sh2@dtpoff+3(%rax), %rcx |
nop;nop;nop;nop |
|
/* LD against hidden but not local variables */ |
leaq sH1@tlsld(%rip), %rdi |
call __tls_get_addr@plt |
nop;nop |
leaq sH1@dtpoff(%rax), %r12 |
nop;nop |
leaq sH2@dtpoff+1(%rax), %rcx |
nop;nop |
|
/* IE against global var */ |
movq %fs:0, %rcx |
nop;nop |
addq sg2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against local var */ |
movq %fs:0, %r14 |
nop;nop |
addq sl2@gottpoff(%rip), %r14 |
nop;nop;nop;nop |
|
/* IE against hidden and local var */ |
movq %fs:0, %rcx |
nop;nop |
addq sh2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against hidden but not local var */ |
movq %fs:0, %rcx |
nop;nop |
addq sH2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* Direct access through %fs */ |
|
/* IE against global var */ |
movq sg5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
/* IE against local var */ |
movq sl5@gottpoff(%rip), %r10 |
nop;nop |
movq %fs:(%r10), %r12 |
nop;nop;nop;nop |
|
/* IE against hidden and local var */ |
movq sh5@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rdx |
nop;nop;nop;nop |
|
/* IE against hidden but not local var */ |
movq sH5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
leave |
ret |
/ld/testsuite/ld-x86-64/tlsbin.dd
0,0 → 1,313
#source: tlsbinpic.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.text |
#target: x86_64-*-* |
|
# PT_TLS layout is: |
# Offset from Offset from Name |
# TCB base TCB end |
# 0x00 -0xa0 sg1..sg8 |
# 0x20 -0x80 sl1..sl8 |
# 0x40 -0x60 sh1..sh8 |
# 0x60 -0x40 bg1..bg8 |
# 0x80 -0x20 bl1..bl8 |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+401000 <fn2>: |
401000: 55[ ]+push %rbp |
401001: 48 89 e5[ ]+mov %rsp,%rbp |
# GD -> IE because variable is not defined in executable |
401004: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
40100b: 00 00 * |
40100d: 48 03 05 dc 03 20 00[ ]+add 0x2003dc\(%rip\),%rax +# 6013f0 <.*> |
# -> R_X86_64_TPOFF64 sG1 |
401014: 90[ ]+nop * |
401015: 90[ ]+nop * |
401016: 90[ ]+nop * |
401017: 90[ ]+nop * |
# GD -> IE because variable is not defined in executable where |
# the variable is referenced through IE too |
401018: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
40101f: 00 00 * |
401021: 48 03 05 b8 03 20 00[ ]+add 0x2003b8\(%rip\),%rax +# 6013e0 <.*> |
# -> R_X86_64_TPOFF64 sG2 |
401028: 90[ ]+nop * |
401029: 90[ ]+nop * |
40102a: 90[ ]+nop * |
40102b: 90[ ]+nop * |
# GD -> LE with global variable defined in executable |
40102c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
401033: 00 00 * |
401035: 48 8d 80 60 ff ff ff[ ]+lea -0xa0\(%rax\),%rax |
# sg1 |
40103c: 90[ ]+nop * |
40103d: 90[ ]+nop * |
40103e: 90[ ]+nop * |
40103f: 90[ ]+nop * |
# GD -> LE with local variable defined in executable |
401040: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
401047: 00 00 * |
401049: 48 8d 80 80 ff ff ff[ ]+lea -0x80\(%rax\),%rax |
# sl1 |
401050: 90[ ]+nop * |
401051: 90[ ]+nop * |
401052: 90[ ]+nop * |
401053: 90[ ]+nop * |
# GD -> LE with hidden variable defined in executable |
401054: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
40105b: 00 00 * |
40105d: 48 8d 80 a0 ff ff ff[ ]+lea -0x60\(%rax\),%rax |
# sh1 |
401064: 90[ ]+nop * |
401065: 90[ ]+nop * |
401066: 90[ ]+nop * |
401067: 90[ ]+nop * |
# LD -> LE |
401068: 66 66 66 64 48 8b 04[ ]+data32 data32 data32 mov %fs:0x0,%rax |
40106f: 25 00 00 00 00 * |
401074: 90[ ]+nop * |
401075: 90[ ]+nop * |
401076: 48 8d 90 81 ff ff ff[ ]+lea -0x7f\(%rax\),%rdx |
# sl1+1 |
40107d: 90[ ]+nop * |
40107e: 90[ ]+nop * |
40107f: 4c 8d 88 86 ff ff ff[ ]+lea -0x7a\(%rax\),%r9 |
# sl2+2 |
401086: 90[ ]+nop * |
401087: 90[ ]+nop * |
401088: 90[ ]+nop * |
401089: 90[ ]+nop * |
# LD -> LE against hidden variables |
40108a: 66 66 66 64 48 8b 04[ ]+data32 data32 data32 mov %fs:0x0,%rax |
401091: 25 00 00 00 00 * |
401096: 90[ ]+nop * |
401097: 90[ ]+nop * |
401098: 48 8d 90 a0 ff ff ff[ ]+lea -0x60\(%rax\),%rdx |
# sh1 |
40109f: 90[ ]+nop * |
4010a0: 90[ ]+nop * |
4010a1: 48 8d 88 a7 ff ff ff[ ]+lea -0x59\(%rax\),%rcx |
# sh2+3 |
4010a8: 90[ ]+nop * |
4010a9: 90[ ]+nop * |
4010aa: 90[ ]+nop * |
4010ab: 90[ ]+nop * |
# IE against global var |
4010ac: 64 4c 8b 0c 25 00 00[ ]+mov %fs:0x0,%r9 |
4010b3: 00 00 * |
4010b5: 90[ ]+nop * |
4010b6: 90[ ]+nop * |
4010b7: 4c 03 0d 22 03 20 00[ ]+add 0x200322\(%rip\),%r9 +# 6013e0 <.*> |
# -> R_X86_64_TPOFF64 sG2 |
4010be: 90[ ]+nop * |
4010bf: 90[ ]+nop * |
4010c0: 90[ ]+nop * |
4010c1: 90[ ]+nop * |
# IE -> LE against global var defined in exec |
4010c2: 64 4c 8b 14 25 00 00[ ]+mov %fs:0x0,%r10 |
4010c9: 00 00 * |
4010cb: 90[ ]+nop * |
4010cc: 90[ ]+nop * |
4010cd: 4d 8d 92 60 ff ff ff[ ]+lea -0xa0\(%r10\),%r10 |
# sg1 |
4010d4: 90[ ]+nop * |
4010d5: 90[ ]+nop * |
4010d6: 90[ ]+nop * |
4010d7: 90[ ]+nop * |
# IE -> LE against local var |
4010d8: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
4010df: 00 00 * |
4010e1: 90[ ]+nop * |
4010e2: 90[ ]+nop * |
4010e3: 48 8d 80 80 ff ff ff[ ]+lea -0x80\(%rax\),%rax |
# sl1 |
4010ea: 90[ ]+nop * |
4010eb: 90[ ]+nop * |
4010ec: 90[ ]+nop * |
4010ed: 90[ ]+nop * |
# IE -> LE against hidden var |
4010ee: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
4010f5: 00 00 * |
4010f7: 90[ ]+nop * |
4010f8: 90[ ]+nop * |
4010f9: 48 8d 89 a0 ff ff ff[ ]+lea -0x60\(%rcx\),%rcx |
# sh1 |
401100: 90[ ]+nop * |
401101: 90[ ]+nop * |
401102: 90[ ]+nop * |
401103: 90[ ]+nop * |
# Direct access through %fs |
# IE against global var |
401104: 48 8b 0d cd 02 20 00[ ]+mov 0x2002cd\(%rip\),%rcx +# 6013d8 <.*> |
# -> R_X86_64_TPOFF64 sG5 |
40110b: 90[ ]+nop * |
40110c: 90[ ]+nop * |
40110d: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
401111: 90[ ]+nop * |
401112: 90[ ]+nop * |
401113: 90[ ]+nop * |
401114: 90[ ]+nop * |
# IE->LE against local var |
401115: 49 c7 c3 90 ff ff ff[ ]+mov \$0xf+90,%r11 |
# sl5 |
40111c: 90[ ]+nop * |
40111d: 90[ ]+nop * |
40111e: 64 4d 8b 23[ ]+mov %fs:\(%r11\),%r12 |
401122: 90[ ]+nop * |
401123: 90[ ]+nop * |
401124: 90[ ]+nop * |
401125: 90[ ]+nop * |
# IE->LE against hidden var |
401126: 48 c7 c2 b0 ff ff ff[ ]+mov \$0xf+b0,%rdx |
40112d: 90[ ]+nop * |
40112e: 90[ ]+nop * |
40112f: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx |
# sh5 |
401133: 90[ ]+nop * |
401134: 90[ ]+nop * |
401135: 90[ ]+nop * |
401136: 90[ ]+nop * |
401137: c9[ ]+leaveq * |
401138: c3[ ]+retq * |
401139: 90[ ]+nop * |
40113a: 90[ ]+nop * |
40113b: 90[ ]+nop * |
|
0+40113c <_start>: |
40113c: 55[ ]+push %rbp |
40113d: 48 89 e5[ ]+mov %rsp,%rbp |
# IE against global var |
401140: 64 4c 8b 1c 25 00 00[ ]+mov %fs:0x0,%r11 |
401147: 00 00 * |
401149: 90[ ]+nop * |
40114a: 90[ ]+nop * |
40114b: 4c 03 1d 96 02 20 00[ ]+add 0x200296\(%rip\),%r11 +# 6013e8 <.*> |
# -> R_X86_64_TPOFF64 sG6 |
401152: 90[ ]+nop * |
401153: 90[ ]+nop * |
401154: 90[ ]+nop * |
401155: 90[ ]+nop * |
# IE -> LE against global var defined in exec |
401156: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
40115d: 00 00 * |
40115f: 90[ ]+nop * |
401160: 90[ ]+nop * |
401161: 48 8d 92 d4 ff ff ff[ ]+lea -0x2c\(%rdx\),%rdx |
# bg6 |
401168: 90[ ]+nop * |
401169: 90[ ]+nop * |
40116a: 90[ ]+nop * |
40116b: 90[ ]+nop * |
# IE -> LE against local var |
40116c: 64 4c 8b 24 25 00 00[ ]+mov %fs:0x0,%r12 |
401173: 00 00 * |
401175: 90[ ]+nop * |
401176: 90[ ]+nop * |
401177: 49 81 c4 f4 ff ff ff[ ]+add \$0xf+f4,%r12 |
# bl6 |
40117e: 90[ ]+nop * |
40117f: 90[ ]+nop * |
401180: 90[ ]+nop * |
401181: 90[ ]+nop * |
# direct %fs access IE -> LE against local var |
401182: 48 c7 c2 fc ff ff ff[ ]+mov \$0xf+fc,%rdx |
# bl8 |
401189: 90[ ]+nop * |
40118a: 90[ ]+nop * |
40118b: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax |
40118f: 90[ ]+nop * |
401190: 90[ ]+nop * |
401191: 90[ ]+nop * |
401192: 90[ ]+nop * |
# IE -> LE against hidden but not local var |
401193: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
40119a: 00 00 * |
40119c: 90[ ]+nop * |
40119d: 90[ ]+nop * |
40119e: 48 8d 92 b4 ff ff ff[ ]+lea -0x4c\(%rdx\),%rdx |
# sh6 |
4011a5: 90[ ]+nop * |
4011a6: 90[ ]+nop * |
4011a7: 90[ ]+nop * |
4011a8: 90[ ]+nop * |
# direct %fs access IE -> LE against hidden but not local var |
4011a9: 48 c7 c2 bc ff ff ff[ ]+mov \$0xf+bc,%rdx |
# sh8 |
4011b0: 90[ ]+nop * |
4011b1: 90[ ]+nop * |
4011b2: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax |
4011b6: 90[ ]+nop * |
4011b7: 90[ ]+nop * |
4011b8: 90[ ]+nop * |
4011b9: 90[ ]+nop * |
# LE, global var defined in exec |
4011ba: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
4011c1: 00 00 * |
4011c3: 90[ ]+nop * |
4011c4: 90[ ]+nop * |
4011c5: 48 8d 90 64 ff ff ff[ ]+lea -0x9c\(%rax\),%rdx |
# sg2 |
4011cc: 90[ ]+nop * |
4011cd: 90[ ]+nop * |
4011ce: 90[ ]+nop * |
4011cf: 90[ ]+nop * |
# LE, local var, non-canonical sequence |
4011d0: 49 c7 c1 e6 ff ff ff[ ]+mov \$0xf+e6,%r9 |
# bl2+2 |
4011d7: 90[ ]+nop * |
4011d8: 90[ ]+nop * |
4011d9: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
4011e0: 00 00 * |
4011e2: 90[ ]+nop * |
4011e3: 90[ ]+nop * |
4011e4: 4c 01 ca[ ]+add %r9,%rdx |
4011e7: 90[ ]+nop * |
4011e8: 90[ ]+nop * |
4011e9: 90[ ]+nop * |
4011ea: 90[ ]+nop * |
# LE, hidden var defined in exec, non-canonical sequence |
4011eb: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx |
4011f2: 00 00 * |
4011f4: 90[ ]+nop * |
4011f5: 90[ ]+nop * |
4011f6: 48 81 c2 a5 ff ff ff[ ]+add \$0xf+a5,%rdx |
# sh2+1 |
4011fd: 90[ ]+nop * |
4011fe: 90[ ]+nop * |
4011ff: 90[ ]+nop * |
401200: 90[ ]+nop * |
# Direct %fs access |
# LE, global var defined in exec |
401201: 64 48 8b 04 25 68 ff[ ]+mov %fs:0xf+68,%rax |
401208: ff ff * |
# sg3 |
40120a: 90[ ]+nop * |
40120b: 90[ ]+nop * |
40120c: 90[ ]+nop * |
40120d: 90[ ]+nop * |
# LE, local var |
40120e: 64 4c 8b 14 25 eb ff[ ]+mov %fs:0xf+eb,%r10 |
401215: ff ff * |
# bl3+3 |
401217: 90[ ]+nop * |
401218: 90[ ]+nop * |
401219: 90[ ]+nop * |
40121a: 90[ ]+nop * |
# LE, hidden var defined in exec |
40121b: 64 48 8b 14 25 a9 ff[ ]+mov %fs:0xf+a9,%rdx |
401222: ff ff * |
# sh3+1 |
401224: 90[ ]+nop * |
401225: 90[ ]+nop * |
401226: 90[ ]+nop * |
401227: 90[ ]+nop * |
# LE, large model |
401228: 48 ba a5 ff ff ff ff[ ]+movabs \$0xffffffffffffffa5,%rdx |
40122f: ff ff ff * |
401232: c9[ ]+leaveq * |
401233: c3[ ]+retq * |
/ld/testsuite/ld-x86-64/tlsgd3.d
0,0 → 1,4
#name: TLS GD->LE transition check |
#as: --64 |
#ld: -melf_x86_64 |
#error: .*TLS transition from R_X86_64_TLSGD to R_X86_64_TPOFF32 against `foo'.*failed.* |
/ld/testsuite/ld-x86-64/split-by-file.rd
0,0 → 1,17
There are 9 section headers, starting at offset 0x80: |
|
Section Headers: |
\[Nr\] Name Type Address Off Size ES Flg Lk Inf Al |
\[ 0\] NULL 0000000000000000 000000 000000 00 0 0 0 |
\[ 1\] .text PROGBITS 0000000000000000 000040 000000 00 AX 0 0 4 |
\[ 2\] .foo PROGBITS 0000000000000000 000040 000003 00 AXl 0 0 1 |
\[ 3\] .data PROGBITS 0000000000000000 000044 000000 00 WA 0 0 4 |
\[ 4\] .bss NOBITS 0000000000000000 000044 000000 00 WA 0 0 4 |
\[ 5\] .foo.0 PROGBITS 0000000000000003 000044 000003 00 AXl 0 0 1 |
\[ 6\] .shstrtab STRTAB 0000000000000000 000047 000038 00 0 0 1 |
\[ 7\] .symtab SYMTAB 0000000000000000 0002c0 0000d8 18 8 6 8 |
\[ 8\] .strtab STRTAB 0000000000000000 000398 000016 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\) |
/ld/testsuite/ld-x86-64/tlsgd1.dd
0,0 → 1,14
#source: tlsgd1.s |
#as: --64 |
#ld: -melf_x86_64 tmpdir/tlsgd1 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 64 48 8b 04 25 00 00 00 00 mov %fs:0x0,%rax |
[ ]*[a-f0-9]+: 48 8d 80 fc ff ff ff lea -0x4\(%rax\),%rax |
#pass |
/ld/testsuite/ld-x86-64/tlsdesc.dd
0,0 → 1,200
#source: tlsdesc.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.text |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+[0-9a-f]+ <fn1>: |
+[0-9a-f]+: 55[ ]+push %rbp |
+[0-9a-f]+: 48 89 e5[ ]+mov %rsp,%rbp |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD |
+[0-9a-f]+: 48 8d 05 89 03 20 00[ ]+lea 0x200389\(%rip\),%rax +# 201398 <.*> |
# -> R_X86_64_TLSDESC sg1 |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE because variable is referenced through IE too |
+[0-9a-f]+: 48 8b 05 1c 03 20 00[ ]+mov 0x20031c\(%rip\),%rax +# 201338 <.*> |
# -> R_X86_64_TPOFF64 sg2 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD against local variable |
+[0-9a-f]+: 48 8d 05 3f 03 20 00[ ]+lea 0x20033f\(%rip\),%rax +# 201368 <.*> |
# -> R_X86_64_TLSDESC [0 0x2000000000000000] |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE against local variable referenced through IE too |
+[0-9a-f]+: 48 8b 05 d2 02 20 00[ ]+mov 0x2002d2\(%rip\),%rax +# 201308 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x24 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD against hidden and local variable |
+[0-9a-f]+: 48 8d 05 65 03 20 00[ ]+lea 0x200365\(%rip\),%rax +# 2013a8 <.*> |
# -> R_X86_64_TLSDESC [0 0x4000000000000000] |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE against hidden and local variable referenced through IE too |
+[0-9a-f]+: 48 8b 05 f0 02 20 00[ ]+mov 0x2002f0\(%rip\),%rax +# 201340 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x44 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD against hidden but not local variable |
+[0-9a-f]+: 48 8d 05 1b 03 20 00[ ]+lea 0x20031b\(%rip\),%rax +# 201378 <.*> |
# -> R_X86_64_TLSDESC [0 0x6000000000000000] |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# GD -> IE against hidden but not local variable referenced through IE too |
+[0-9a-f]+: 48 8b 05 ae 02 20 00[ ]+mov 0x2002ae\(%rip\),%rax +# 201318 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x64 |
+[0-9a-f]+: 66 90[ ]+xchg %ax,%ax |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# LD |
+[0-9a-f]+: 48 8d 05 11 03 20 00[ ]+lea 0x200311\(%rip\),%rax +# 201388 <.*> |
# -> R_X86_64_TLSDESC [0 0x000000000000000] |
+[0-9a-f]+: ff 10[ ]+callq \*\(%rax\) |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8d 90 20 00 00 00[ ]+lea 0x20\(%rax\),%rdx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 4c 8d 88 26 00 00 00[ ]+lea 0x26\(%rax\),%r9 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# LD against hidden and local variables |
+[0-9a-f]+: 48 8d 90 40 00 00 00[ ]+lea 0x40\(%rax\),%rdx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8d 88 47 00 00 00[ ]+lea 0x47\(%rax\),%rcx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# LD against hidden but not local variables |
+[0-9a-f]+: 4c 8d a0 60 00 00 00[ ]+lea 0x60\(%rax\),%r12 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 8d 88 65 00 00 00[ ]+lea 0x65\(%rax\),%rcx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against global var |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 71 02 20 00[ ]+add 0x200271\(%rip\),%rcx +# 201338 <.*> |
# -> R_X86_64_TPOFF64 sg2 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against local var |
+[0-9a-f]+: 64 4c 8b 34 25 00 00[ ]+mov %fs:0x0,%r14 |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 4c 03 35 2b 02 20 00[ ]+add 0x20022b\(%rip\),%r14 +# 201308 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x24 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against hidden and local var |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 4d 02 20 00[ ]+add 0x20024d\(%rip\),%rcx +# 201340 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x44 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against hidden but not local var |
+[0-9a-f]+: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+[0-9a-f]+: 00 00 * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 48 03 0d 0f 02 20 00[ ]+add 0x20020f\(%rip\),%rcx +# 201318 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x64 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# Direct access through %fs |
# IE against global var |
+[0-9a-f]+: 48 8b 0d 0c 02 20 00[ ]+mov 0x20020c\(%rip\),%rcx +# 201320 <.*> |
# -> R_X86_64_TPOFF64 sg5 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against local var |
+[0-9a-f]+: 4c 8b 15 eb 01 20 00[ ]+mov 0x2001eb\(%rip\),%r10 +# 201310 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x30 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 4d 8b 22[ ]+mov %fs:\(%r10\),%r12 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against hidden and local var |
+[0-9a-f]+: 48 8b 15 f2 01 20 00[ ]+mov 0x2001f2\(%rip\),%rdx +# 201328 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x50 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
# IE against hidden but not local var |
+[0-9a-f]+: 48 8b 0d e9 01 20 00[ ]+mov 0x2001e9\(%rip\),%rcx +# 201330 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x70 |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: 90[ ]+nop * |
+[0-9a-f]+: c9[ ]+leaveq * |
+[0-9a-f]+: c3[ ]+retq * |
+[0-9a-f]+: 90[ ]+nop * |
/ld/testsuite/ld-x86-64/tlsgd5.dd
0,0 → 1,14
#source: tlsgd5a.s |
#as: --64 |
#ld: -melf_x86_64 tmpdir/tlsgd5 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 64 48 8b 04 25 00 00 00 00 mov %fs:0x0,%rax |
[ ]*[a-f0-9]+: 48 03 05 00 01 20 00 add 0x200100\(%rip\),%rax # 600368 <_DYNAMIC\+0x100> |
#pass |
/ld/testsuite/ld-x86-64/nogot1.d
0,0 → 1,8
#ld: --shared -melf_x86_64 |
#readelf: -S --wide |
#as: --64 |
|
#... |
[ ]*\[.*\][ ]+\.dynamic[ ]+DYNAMIC.* |
[ ]*\[.*\][ ]+.*STRTAB.* |
#pass |
/ld/testsuite/ld-x86-64/tlsld2.dd
0,0 → 1,14
#source: tlsld2.s |
#as: --x32 |
#ld: -melf32_x86_64 tmpdir/tlsld2 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\) |
[ ]*[a-f0-9]+: 64 8b 04 25 00 00 00 00 mov %fs:0x0,%eax |
#pass |
/ld/testsuite/ld-x86-64/mixed2b.s
0,0 → 1,7
.globl foo |
.data |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 1 |
/ld/testsuite/ld-x86-64/dummy.s
0,0 → 1,7
# Dummy |
/ld/testsuite/ld-x86-64/protected2.d
0,0 → 1,16
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drw |
|
.*: +file format .* |
|
|
Disassembly of section .text: |
|
0+[a-f0-9]+ <foo>: |
[ ]*[a-f0-9]+: c3 retq |
|
0+[a-f0-9]+ <bar>: |
[ ]*[a-f0-9]+: e8 fa ff ff ff callq [a-f0-9]+ <foo> |
[ ]*[a-f0-9]+: c3 retq |
#pass |
/ld/testsuite/ld-x86-64/hidden1.d
0,0 → 1,3
#as: --64 |
#ld: -shared -melf_x86_64 |
#error: .*relocation R_X86_64_PC32 against undefined hidden symbol `foo' can not be used when making a shared object |
/ld/testsuite/ld-x86-64/tlsgd1.s
0,0 → 1,15
.text |
.globl _start |
_start: |
.byte 0x66 |
leaq foo@TLSGD(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/hidden3.d
0,0 → 1,3
#as: --64 |
#ld: -shared -melf_x86_64 |
#error: .*relocation R_X86_64_PC32 against undefined hidden symbol `foo' can not be used when making a shared object |
/ld/testsuite/ld-x86-64/tlsbin.td
0,0 → 1,16
#source: tlsbinpic.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.tdata |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .tdata: |
601234 11000000 12000000 13000000 14000000 .* |
601244 15000000 16000000 17000000 18000000 .* |
601254 41000000 42000000 43000000 44000000 .* |
601264 45000000 46000000 47000000 48000000 .* |
601274 01010000 02010000 03010000 04010000 .* |
601284 05010000 06010000 07010000 08010000 .* |
/ld/testsuite/ld-x86-64/tlsgd3.s
0,0 → 1,11
.text |
.globl _start |
_start: |
leaq foo@TLSGD(%rip), %rdi |
call __tls_get_addr |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/split-by-file1.s
0,0 → 1,7
.section ".foo", "axl" |
.global label1 |
label1: |
nop |
nop |
nop |
|
/ld/testsuite/ld-x86-64/tlsdesc.pd
0,0 → 1,20
#source: tlsdesc.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.plt |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .plt: |
|
[0-9a-f]+ <.*@plt-0x10>: |
[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\) |
|
/ld/testsuite/ld-x86-64/tlspic.sd
0,0 → 1,19
#source: tlspic1.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.got |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .got: |
201340 00000000 00000000 20000000 00000000 .* |
201350 00000000 00000000 00000000 00000000 .* |
201360 00000000 00000000 00000000 00000000 .* |
201370 00000000 00000000 60000000 00000000 .* |
201380 00000000 00000000 00000000 00000000 .* |
201390 00000000 00000000 00000000 00000000 .* |
2013a0 00000000 00000000 00000000 00000000 .* |
2013b0 00000000 00000000 00000000 00000000 .* |
2013c0 40000000 00000000 00000000 00000000 .* |
/ld/testsuite/ld-x86-64/tlsgd5a.s
0,0 → 1,8
.text |
.globl _start |
_start: |
.byte 0x66 |
leaq foo@TLSGD(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr |
/ld/testsuite/ld-x86-64/tlsld1.s
0,0 → 1,12
.text |
.globl _start |
_start: |
leaq foo@TLSLD(%rip), %rdi |
call __tls_get_addr |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/lp64-1.d
0,0 → 1,16
#source: dummy.s |
#as: --64 |
#ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foo64.o |
#readelf: -h |
|
ELF Header: |
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |
Class: ELF64 |
Data: 2's complement, little endian |
Version: 1 \(current\) |
OS/ABI: UNIX - System V |
ABI Version: 0 |
Type: EXEC \(Executable file\) |
Machine: Advanced Micro Devices X86-64 |
Version: 0x1 |
#pass |
/ld/testsuite/ld-x86-64/pr12718.d
0,0 → 1,19
#name: PR ld/12718 |
#as: --64 |
#ld: -melf_x86_64 |
#readelf: -S --wide |
|
There are 5 section headers, starting at offset 0xa0: |
|
Section Headers: |
\[Nr\] Name Type Address Off Size ES Flg Lk Inf Al |
\[ 0\] NULL 0000000000000000 000000 000000 00 0 0 0 |
\[ 1\] .text PROGBITS 0000000000400078 000078 000006 00 AX 0 0 4 |
\[ 2\] .shstrtab STRTAB 0000000000000000 00007e 000021 00 0 0 1 |
\[ 3\] .symtab SYMTAB 0000000000000000 0001e0 0000a8 18 4 2 8 |
\[ 4\] .strtab STRTAB 0000000000000000 000288 000024 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\) |
#pass |
/ld/testsuite/ld-x86-64/compressed1.d
0,0 → 1,9
#name: undefined symbol with compressed debug sections |
#as: --64 |
#ld: -e foo -melf_x86_64 --noinhibit-exec |
#warning: .*/compressed1.c:13: undefined reference to .bar. |
#nm: -n |
|
#... |
[ \t]+U bar |
#pass |
/ld/testsuite/ld-x86-64/lp64-3.d
0,0 → 1,4
#source: dummy.s |
#as: --64 |
#ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foox32.o |
#error: .*i386:x64-32 architecture of input file `tmpdir/foox32.o' is incompatible with i386:x86-64 output |
/ld/testsuite/ld-x86-64/tlsdesc.td
0,0 → 1,16
#source: tlsdesc.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.tdata |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .tdata: |
201154 11000000 12000000 13000000 14000000 .* |
201164 15000000 16000000 17000000 18000000 .* |
201174 41000000 42000000 43000000 44000000 .* |
201184 45000000 46000000 47000000 48000000 .* |
201194 01010000 02010000 03010000 04010000 .* |
2011a4 05010000 06010000 07010000 08010000 .* |
/ld/testsuite/ld-x86-64/nogot1.s
0,0 → 1,10
.type bar, @function |
bar: |
ret |
.size bar, .-bar |
.globl foo |
.type foo, @function |
foo: |
leaq bar(%rip), %rax |
ret |
.size foo, .-foo |
/ld/testsuite/ld-x86-64/ilp32-1.d
0,0 → 1,16
#source: dummy.s |
#as: --x32 |
#ld: -m elf32_x86_64 tmpdir/startx32.o tmpdir/foox32.o |
#readelf: -h |
|
ELF Header: |
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |
Class: ELF32 |
Data: 2's complement, little endian |
Version: 1 \(current\) |
OS/ABI: UNIX - System V |
ABI Version: 0 |
Type: EXEC \(Executable file\) |
Machine: Advanced Micro Devices X86-64 |
Version: 0x1 |
#pass |
/ld/testsuite/ld-x86-64/unique1.d
0,0 → 1,10
#name: STB_GNU_UNIQUE with -Bsymbolic |
#as: --64 |
#ld: -melf_x86_64 -shared -Bsymbolic |
#readelf: -rs --wide |
|
#... |
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ bar \+ 0 |
#... |
+[0-9]+: +[0-9a-f]+ +8 +OBJECT +UNIQUE +DEFAULT +[0-9]+ bar |
#pass |
/ld/testsuite/ld-x86-64/ilp32-3.d
0,0 → 1,4
#source: dummy.s |
#as: --x32 |
#ld: -m elf32_x86_64 tmpdir/startx32.o tmpdir/foo64.o |
#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386:x64-32 output |
/ld/testsuite/ld-x86-64/protected2.s
0,0 → 1,13
.text |
.globl foo |
.protected foo |
.type foo, @function |
foo: |
ret |
.size foo, .-foo |
.globl bar |
.type bar, @function |
bar: |
call foo |
ret |
.size bar, .-bar |
/ld/testsuite/ld-x86-64/hidden1.s
0,0 → 1,9
.text |
.globl bar |
.type bar, @function |
bar: |
leaq foo(%rip), %rax |
ret |
.size bar, .-bar |
.weak foo |
.hidden foo |
/ld/testsuite/ld-x86-64/ilp32-5.d
0,0 → 1,8
#as: --x32 |
#ld: -m elf32_x86_64 -shared |
#readelf: -r --wide |
|
#... |
[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_32 +[0-9a-f]+ +foo \+ 0 |
/ld/testsuite/ld-x86-64/hidden3.s
0,0 → 1,8
.text |
.globl bar |
.type bar, @function |
bar: |
leaq foo(%rip), %rax |
ret |
.size bar, .-bar |
.hidden foo |
/ld/testsuite/ld-x86-64/tlsie2.d
0,0 → 1,4
#name: TLS IE->LE transition check |
#as: --64 |
#ld: -melf_x86_64 |
#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.* |
/ld/testsuite/ld-x86-64/tlspic.dd
0,0 → 1,230
#source: tlspic1.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -drj.text |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+1000 <fn1>: |
+1000: 55[ ]+push %rbp |
+1001: 48 89 e5[ ]+mov %rsp,%rbp |
+1004: 90[ ]+nop * |
+1005: 90[ ]+nop * |
+1006: 90[ ]+nop * |
+1007: 90[ ]+nop * |
# GD |
+1008: 66 48 8d 3d 80 03 20[ ]+data32 lea 0x200380\(%rip\),%rdi +# 201390 <.*> |
+100f: 00 * |
# -> R_X86_64_DTPMOD64 sg1 |
+1010: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+1017: [0-9a-f ]+ |
+1018: 90[ ]+nop * |
+1019: 90[ ]+nop * |
+101a: 90[ ]+nop * |
+101b: 90[ ]+nop * |
# GD -> IE because variable is referenced through IE too |
+101c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+1023: 00 00 * |
+1025: 48 03 05 84 03 20 00[ ]+add 0x200384\(%rip\),%rax +# 2013b0 <.*> |
# -> R_X86_64_TPOFF64 sg2 |
+102c: 90[ ]+nop * |
+102d: 90[ ]+nop * |
+102e: 90[ ]+nop * |
+102f: 90[ ]+nop * |
# GD against local variable |
+1030: 66 48 8d 3d 08 03 20[ ]+data32 lea 0x200308\(%rip\),%rdi +# 201340 <.*> |
+1037: 00 * |
# -> R_X86_64_DTPMOD64 [0 0x2000000000000000] |
+1038: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+103f: [0-9a-f ]+ |
+1040: 90[ ]+nop * |
+1041: 90[ ]+nop * |
+1042: 90[ ]+nop * |
+1043: 90[ ]+nop * |
# GD -> IE against local variable referenced through IE too |
+1044: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+104b: 00 00 * |
+104d: 48 03 05 fc 02 20 00[ ]+add 0x2002fc\(%rip\),%rax +# 201350 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x24 |
+1054: 90[ ]+nop * |
+1055: 90[ ]+nop * |
+1056: 90[ ]+nop * |
+1057: 90[ ]+nop * |
# GD against hidden and local variable |
+1058: 66 48 8d 3d 58 03 20[ ]+data32 lea 0x200358\(%rip\),%rdi +# 2013b8 <.*> |
+105f: 00 * |
# -> R_X86_64_DTPMOD64 [0 0x4000000000000000] |
+1060: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+1067: [0-9a-f ]+ |
+1068: 90[ ]+nop * |
+1069: 90[ ]+nop * |
+106a: 90[ ]+nop * |
+106b: 90[ ]+nop * |
# GD -> IE against hidden and local variable referenced through IE too |
+106c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+1073: 00 00 * |
+1075: 48 03 05 4c 03 20 00[ ]+add 0x20034c\(%rip\),%rax +# 2013c8 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x44 |
+107c: 90[ ]+nop * |
+107d: 90[ ]+nop * |
+107e: 90[ ]+nop * |
+107f: 90[ ]+nop * |
# GD against hidden but not local variable |
+1080: 66 48 8d 3d e8 02 20[ ]+data32 lea 0x2002e8\(%rip\),%rdi +# 201370 <.*> |
+1087: 00 * |
# -> R_X86_64_DTPMOD64 [0 0x6000000000000000] |
+1088: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+108f: [0-9a-f ]+ |
+1090: 90[ ]+nop * |
+1091: 90[ ]+nop * |
+1092: 90[ ]+nop * |
+1093: 90[ ]+nop * |
# GD -> IE against hidden but not local variable referenced through IE too |
+1094: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
+109b: 00 00 * |
+109d: 48 03 05 dc 02 20 00[ ]+add 0x2002dc\(%rip\),%rax +# 201380 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x64 |
+10a4: 90[ ]+nop * |
+10a5: 90[ ]+nop * |
+10a6: 90[ ]+nop * |
+10a7: 90[ ]+nop * |
# LD |
+10a8: 48 8d 3d b1 02 20 00[ ]+lea 0x2002b1\(%rip\),%rdi +# 201360 <.*> |
# -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
+10af: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+10b4: 90[ ]+nop * |
+10b5: 90[ ]+nop * |
+10b6: 48 8d 90 20 00 00 00[ ]+lea 0x20\(%rax\),%rdx |
+10bd: 90[ ]+nop * |
+10be: 90[ ]+nop * |
+10bf: 4c 8d 88 26 00 00 00[ ]+lea 0x26\(%rax\),%r9 |
+10c6: 90[ ]+nop * |
+10c7: 90[ ]+nop * |
+10c8: 90[ ]+nop * |
+10c9: 90[ ]+nop * |
# LD against hidden and local variables |
+10ca: 48 8d 3d 8f 02 20 00[ ]+lea 0x20028f\(%rip\),%rdi +# 201360 <.*> |
# -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
+10d1: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+10d6: 90[ ]+nop * |
+10d7: 90[ ]+nop * |
+10d8: 48 8d 90 40 00 00 00[ ]+lea 0x40\(%rax\),%rdx |
+10df: 90[ ]+nop * |
+10e0: 90[ ]+nop * |
+10e1: 48 8d 88 47 00 00 00[ ]+lea 0x47\(%rax\),%rcx |
+10e8: 90[ ]+nop * |
+10e9: 90[ ]+nop * |
+10ea: 90[ ]+nop * |
+10eb: 90[ ]+nop * |
# LD against hidden but not local variables |
+10ec: 48 8d 3d 6d 02 20 00[ ]+lea 0x20026d\(%rip\),%rdi +# 201360 <.*> |
# -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
+10f3: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
# -> R_X86_64_JUMP_SLOT __tls_get_addr |
+10f8: 90[ ]+nop * |
+10f9: 90[ ]+nop * |
+10fa: 4c 8d a0 60 00 00 00[ ]+lea 0x60\(%rax\),%r12 |
+1101: 90[ ]+nop * |
+1102: 90[ ]+nop * |
+1103: 48 8d 88 65 00 00 00[ ]+lea 0x65\(%rax\),%rcx |
+110a: 90[ ]+nop * |
+110b: 90[ ]+nop * |
# IE against global var |
+110c: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+1113: 00 00 * |
+1115: 90[ ]+nop * |
+1116: 90[ ]+nop * |
+1117: 48 03 0d 92 02 20 00[ ]+add 0x200292\(%rip\),%rcx +# 2013b0 <.*> |
# -> R_X86_64_TPOFF64 sg2 |
+111e: 90[ ]+nop * |
+111f: 90[ ]+nop * |
+1120: 90[ ]+nop * |
+1121: 90[ ]+nop * |
# IE against local var |
+1122: 64 4c 8b 34 25 00 00[ ]+mov %fs:0x0,%r14 |
+1129: 00 00 * |
+112b: 90[ ]+nop * |
+112c: 90[ ]+nop * |
+112d: 4c 03 35 1c 02 20 00[ ]+add 0x20021c\(%rip\),%r14 +# 201350 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x24 |
+1134: 90[ ]+nop * |
+1135: 90[ ]+nop * |
+1136: 90[ ]+nop * |
+1137: 90[ ]+nop * |
# IE against hidden and local var |
+1138: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+113f: 00 00 * |
+1141: 90[ ]+nop * |
+1142: 90[ ]+nop * |
+1143: 48 03 0d 7e 02 20 00[ ]+add 0x20027e\(%rip\),%rcx +# 2013c8 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x44 |
+114a: 90[ ]+nop * |
+114b: 90[ ]+nop * |
+114c: 90[ ]+nop * |
+114d: 90[ ]+nop * |
# IE against hidden but not local var |
+114e: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
+1155: 00 00 * |
+1157: 90[ ]+nop * |
+1158: 90[ ]+nop * |
+1159: 48 03 0d 20 02 20 00[ ]+add 0x200220\(%rip\),%rcx +# 201380 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x64 |
+1160: 90[ ]+nop * |
+1161: 90[ ]+nop * |
+1162: 90[ ]+nop * |
+1163: 90[ ]+nop * |
# Direct access through %fs |
# IE against global var |
+1164: 48 8b 0d 1d 02 20 00[ ]+mov 0x20021d\(%rip\),%rcx +# 201388 <.*> |
# -> R_X86_64_TPOFF64 sg5 |
+116b: 90[ ]+nop * |
+116c: 90[ ]+nop * |
+116d: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
+1171: 90[ ]+nop * |
+1172: 90[ ]+nop * |
+1173: 90[ ]+nop * |
+1174: 90[ ]+nop * |
# IE against local var |
+1175: 4c 8b 15 dc 01 20 00[ ]+mov 0x2001dc\(%rip\),%r10 +# 201358 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x30 |
+117c: 90[ ]+nop * |
+117d: 90[ ]+nop * |
+117e: 64 4d 8b 22[ ]+mov %fs:\(%r10\),%r12 |
+1182: 90[ ]+nop * |
+1183: 90[ ]+nop * |
+1184: 90[ ]+nop * |
+1185: 90[ ]+nop * |
# IE against hidden and local var |
+1186: 48 8b 15 13 02 20 00[ ]+mov 0x200213\(%rip\),%rdx +# 2013a0 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x50 |
+118d: 90[ ]+nop * |
+118e: 90[ ]+nop * |
+118f: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx |
+1193: 90[ ]+nop * |
+1194: 90[ ]+nop * |
+1195: 90[ ]+nop * |
+1196: 90[ ]+nop * |
# IE against hidden but not local var |
+1197: 48 8b 0d 0a 02 20 00[ ]+mov 0x20020a\(%rip\),%rcx +# 2013a8 <.*> |
# -> R_X86_64_TPOFF64 *ABS*+0x70 |
+119e: 90[ ]+nop * |
+119f: 90[ ]+nop * |
+11a0: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
+11a4: 90[ ]+nop * |
+11a5: 90[ ]+nop * |
+11a6: 90[ ]+nop * |
+11a7: 90[ ]+nop * |
+11a8: c9[ ]+leaveq * |
+11a9: c3[ ]+retq * |
+11aa: 90[ ]+nop * |
+11ab: 90[ ]+nop * |
/ld/testsuite/ld-x86-64/pr12718.s
0,0 → 1,4
.globl foo |
foo: ret |
.globl _start |
_start: call foo |
/ld/testsuite/ld-x86-64/discarded1.d
0,0 → 1,3
#as: --64 |
#ld: -melf_x86_64 -T discarded1.t |
#error: .*discarded output section: `.got.plt' |
/ld/testsuite/ld-x86-64/compressed1.s
0,0 → 1,176
.file "compressed1.c" |
.section .debug_abbrev,"",@progbits |
.Ldebug_abbrev0: |
.section .debug_info,"",@progbits |
.Ldebug_info0: |
.section .debug_line,"",@progbits |
.Ldebug_line0: |
.text |
.Ltext0: |
.cfi_sections .debug_frame |
.p2align 4,,15 |
.globl foo |
.type foo, @function |
foo: |
.LFB0: |
.file 1 "compressed1.c" |
.loc 1 12 0 |
.cfi_startproc |
.loc 1 13 0 |
jmp bar |
.cfi_endproc |
.LFE0: |
.size foo, .-foo |
.Letext0: |
.section .debug_info |
.long 0x6e |
.value 0x3 |
.long .Ldebug_abbrev0 |
.byte 0x8 |
.uleb128 0x1 |
.long .LASF5 |
.byte 0x1 |
.long .LASF6 |
.long .LASF7 |
.quad .Ltext0 |
.quad .Letext0 |
.long .Ldebug_line0 |
.uleb128 0x2 |
.byte 0x1 |
.byte 0x6 |
.long .LASF0 |
.uleb128 0x2 |
.byte 0x2 |
.byte 0x5 |
.long .LASF1 |
.uleb128 0x3 |
.byte 0x4 |
.byte 0x5 |
.string "int" |
.uleb128 0x2 |
.byte 0x8 |
.byte 0x5 |
.long .LASF2 |
.uleb128 0x2 |
.byte 0x1 |
.byte 0x8 |
.long .LASF3 |
.uleb128 0x2 |
.byte 0x2 |
.byte 0x7 |
.long .LASF4 |
.uleb128 0x4 |
.byte 0x1 |
.string "foo" |
.byte 0x1 |
.byte 0xb |
.quad .LFB0 |
.quad .LFE0 |
.byte 0x1 |
.byte 0x9c |
.byte 0x0 |
.section .debug_abbrev |
.uleb128 0x1 |
.uleb128 0x11 |
.byte 0x1 |
.uleb128 0x25 |
.uleb128 0xe |
.uleb128 0x13 |
.uleb128 0xb |
.uleb128 0x3 |
.uleb128 0xe |
.uleb128 0x1b |
.uleb128 0xe |
.uleb128 0x11 |
.uleb128 0x1 |
.uleb128 0x12 |
.uleb128 0x1 |
.uleb128 0x10 |
.uleb128 0x6 |
.byte 0x0 |
.byte 0x0 |
.uleb128 0x2 |
.uleb128 0x24 |
.byte 0x0 |
.uleb128 0xb |
.uleb128 0xb |
.uleb128 0x3e |
.uleb128 0xb |
.uleb128 0x3 |
.uleb128 0xe |
.byte 0x0 |
.byte 0x0 |
.uleb128 0x3 |
.uleb128 0x24 |
.byte 0x0 |
.uleb128 0xb |
.uleb128 0xb |
.uleb128 0x3e |
.uleb128 0xb |
.uleb128 0x3 |
.uleb128 0x8 |
.byte 0x0 |
.byte 0x0 |
.uleb128 0x4 |
.uleb128 0x2e |
.byte 0x0 |
.uleb128 0x3f |
.uleb128 0xc |
.uleb128 0x3 |
.uleb128 0x8 |
.uleb128 0x3a |
.uleb128 0xb |
.uleb128 0x3b |
.uleb128 0xb |
.uleb128 0x11 |
.uleb128 0x1 |
.uleb128 0x12 |
.uleb128 0x1 |
.uleb128 0x40 |
.uleb128 0xa |
.byte 0x0 |
.byte 0x0 |
.byte 0x0 |
.section .debug_pubnames,"",@progbits |
.long 0x16 |
.value 0x2 |
.long .Ldebug_info0 |
.long 0x72 |
.long 0x57 |
.string "foo" |
.long 0x0 |
.section .debug_pubtypes,"",@progbits |
.long 0xe |
.value 0x2 |
.long .Ldebug_info0 |
.long 0x72 |
.long 0x0 |
.section .debug_aranges,"",@progbits |
.long 0x2c |
.value 0x2 |
.long .Ldebug_info0 |
.byte 0x8 |
.byte 0x0 |
.value 0x0 |
.value 0x0 |
.quad .Ltext0 |
.quad .Letext0-.Ltext0 |
.quad 0x0 |
.quad 0x0 |
.section .debug_str,"MS",@progbits,1 |
.LASF0: |
.string "signed char" |
.LASF1: |
.string "short int" |
.LASF6: |
.string "compressed1.c" |
.LASF5: |
.string "GNU C 4.4.4" |
.LASF7: |
.string "." |
.LASF3: |
.string "unsigned char" |
.LASF2: |
.string "long int" |
.LASF4: |
.string "short unsigned int" |
/ld/testsuite/ld-x86-64/tlsgd4.dd
0,0 → 1,10
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 64 8b 04 25 00 00 00 00 mov %fs:0x0,%eax |
[ ]*[a-f0-9]+: 48 8d 80 fc ff ff ff lea -0x4\(%rax\),%rax |
#pass |
/ld/testsuite/ld-x86-64/unique1.s
0,0 → 1,9
.text |
foo: |
movq bar@GOTPCREL(%rip), %rbp |
.weak bar |
.data |
.type bar, @gnu_unique_object |
.size bar, 8 |
bar: |
.quad 8 |
/ld/testsuite/ld-x86-64/tlsld1.dd
0,0 → 1,13
#source: tlsld1.s |
#as: --64 |
#ld: -melf_x86_64 tmpdir/tlsld1 |
#objdump: -drw |
#target: x86_64-*-linux* |
|
.*: +file format .* |
|
Disassembly of section .text: |
|
[a-f0-9]+ <_start>: |
[ ]*[a-f0-9]+: 66 66 66 64 48 8b 04 25 00 00 00 00 data32 data32 data32 mov %fs:0x0,%rax |
#pass |
/ld/testsuite/ld-x86-64/mixed1b.s
0,0 → 1,10
.globl foo |
.section .rodata.str1.1,"aMS",@progbits,1 |
.LC0: |
.string "Hello" |
.data |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long .LC0 |
/ld/testsuite/ld-x86-64/ilp32-5.s
0,0 → 1,8
.globl bar |
bar: |
mov foo(%rip), %rax |
|
.data |
xxx: |
.long foo |
.long xxx |
/ld/testsuite/ld-x86-64/tlsbindesc.rd
0,0 → 1,138
#source: tlsbindesc.s |
#source: tlsbin.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#readelf: -WSsrl |
#target: x86_64-*-* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .interp +.* |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .text +PROGBITS +0+401000 0+1000 0+200 00 +AX +0 +0 +4096 |
+\[[ 0-9]+\] .tdata +PROGBITS +0+601200 0+1200 0+60 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .tbss +NOBITS +0+601260 0+1260 0+40 00 WAT +0 +0 +1 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+601260 0+1260 0+100 10 +WA +4 +0 +8 |
+\[[ 0-9]+\] .got +PROGBITS +0+601360 0+1360 0+20 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .got.plt +PROGBITS +0+601380 0+1380 0+18 08 +WA +0 +0 +8 |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is EXEC \(Executable file\) |
Entry point 0x401108 |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
+PHDR.* |
+INTERP.* |
.*Requesting program interpreter.* |
+LOAD +0x0+ 0x0+400000 0x0+400000 0x0+1200 0x0+1200 R E 0x200000 |
+LOAD +0x0+1200 0x0+601200 0x0+601200 0x0+198 0x0+198 RW +0x200000 |
+DYNAMIC +0x0+1260 0x0+601260 0x0+601260 0x0+100 0x0+100 RW +0x8 |
+TLS +0x0+1200 0x0+601200 0x0+601200 0x0+60 0x0+a0 R +0x1 |
|
Section to Segment mapping: |
+Segment Sections... |
+00 * |
+01 +.interp * |
+02 +.interp .hash .dynsym .dynstr .rela.dyn .text * |
+03 +.tdata .dynamic .got .got.plt * |
+04 +.dynamic * |
+05 +.tdata .tbss * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
0+601360 +0+100000012 R_X86_64_TPOFF64 +0+ sG5 \+ 0 |
0+601368 +0+200000012 R_X86_64_TPOFF64 +0+ sG2 \+ 0 |
0+601370 +0+400000012 R_X86_64_TPOFF64 +0+ sG6 \+ 0 |
0+601378 +0+500000012 R_X86_64_TPOFF64 +0+ sG1 \+ 0 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG5 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG2 |
+[0-9]+: 0+[0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG6 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG1 |
+[0-9]+: 0+[0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: 0+[0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 * |
+[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +7 sl1 |
+[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +7 sl2 |
+[0-9]+: 0+28 +0 +TLS +LOCAL +DEFAULT +7 sl3 |
+[0-9]+: 0+2c +0 +TLS +LOCAL +DEFAULT +7 sl4 |
+[0-9]+: 0+30 +0 +TLS +LOCAL +DEFAULT +7 sl5 |
+[0-9]+: 0+34 +0 +TLS +LOCAL +DEFAULT +7 sl6 |
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +7 sl7 |
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +7 sl8 |
+[0-9]+: 0+80 +0 +TLS +LOCAL +DEFAULT +8 bl1 |
+[0-9]+: 0+84 +0 +TLS +LOCAL +DEFAULT +8 bl2 |
+[0-9]+: 0+88 +0 +TLS +LOCAL +DEFAULT +8 bl3 |
+[0-9]+: 0+8c +0 +TLS +LOCAL +DEFAULT +8 bl4 |
+[0-9]+: 0+90 +0 +TLS +LOCAL +DEFAULT +8 bl5 |
+[0-9]+: 0+94 +0 +TLS +LOCAL +DEFAULT +8 bl6 |
+[0-9]+: 0+98 +0 +TLS +LOCAL +DEFAULT +8 bl7 |
+[0-9]+: 0+9c +0 +TLS +LOCAL +DEFAULT +8 bl8 |
+[0-9]+: 0+a0 +0 +TLS +LOCAL +DEFAULT +7 _TLS_MODULE_BASE_ |
+[0-9]+: 0+601260 +0 +OBJECT +LOCAL +DEFAULT +9 _DYNAMIC |
+[0-9]+: 0+601380 +0 +OBJECT +LOCAL +DEFAULT +11 _GLOBAL_OFFSET_TABLE_ |
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +7 sg8 |
+[0-9]+: 0+7c +0 +TLS +GLOBAL +DEFAULT +8 bg8 |
+[0-9]+: 0+74 +0 +TLS +GLOBAL +DEFAULT +8 bg6 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG5 |
+[0-9]+: 0+68 +0 +TLS +GLOBAL +DEFAULT +8 bg3 |
+[0-9]+: 0+8 +0 +TLS +GLOBAL +DEFAULT +7 sg3 |
+[0-9]+: 0+48 +0 +TLS +GLOBAL +HIDDEN +7 sh3 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG2 |
+[0-9]+: 0+c +0 +TLS +GLOBAL +DEFAULT +7 sg4 |
+[0-9]+: 0+10 +0 +TLS +GLOBAL +DEFAULT +7 sg5 |
+[0-9]+: 0+70 +0 +TLS +GLOBAL +DEFAULT +8 bg5 |
+[0-9]+: 0+58 +0 +TLS +GLOBAL +HIDDEN +7 sh7 |
+[0-9]+: 0+5c +0 +TLS +GLOBAL +HIDDEN +7 sh8 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +7 sg1 |
+[0-9]+: 0+401108 +0 +FUNC +GLOBAL +DEFAULT +6 _start |
+[0-9]+: 0+4c +0 +TLS +GLOBAL +HIDDEN +7 sh4 |
+[0-9]+: 0+78 +0 +TLS +GLOBAL +DEFAULT +8 bg7 |
+[0-9]+: 0+50 +0 +TLS +GLOBAL +HIDDEN +7 sh5 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG6 |
+[0-9]+: 0+401000 +0 +FUNC +GLOBAL +DEFAULT +6 fn2 |
+[0-9]+: 0+4 +0 +TLS +GLOBAL +DEFAULT +7 sg2 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG1 |
+[0-9]+: 0+40 +0 +TLS +GLOBAL +HIDDEN +7 sh1 |
+[0-9]+: 0+14 +0 +TLS +GLOBAL +DEFAULT +7 sg6 |
+[0-9]+: 0+18 +0 +TLS +GLOBAL +DEFAULT +7 sg7 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
+[0-9]+: 0+44 +0 +TLS +GLOBAL +HIDDEN +7 sh2 |
+[0-9]+: 0+54 +0 +TLS +GLOBAL +HIDDEN +7 sh6 |
+[0-9]+: 0+64 +0 +TLS +GLOBAL +DEFAULT +8 bg2 |
+[0-9]+: 0+60 +0 +TLS +GLOBAL +DEFAULT +8 bg1 |
+[0-9]+: 0+6c +0 +TLS +GLOBAL +DEFAULT +8 bg4 |
/ld/testsuite/ld-x86-64/pcrel16.d
0,0 → 1,15
#name: PCREL16 overflow |
#source: ../ld-i386/pcrel16.s |
#ld: -Ttext 0x0 |
#objdump: -drj.text -m i8086 |
|
.*: +file format elf64-x86-64 |
|
Disassembly of section .text: |
|
0+ <_start>: |
... |
420: cd 42[ ]+int \$0x42 |
422: ca 02 00[ ]+lret \$0x2 |
... |
f065: e9 b8 13[ ]+jmp 420 <_start\+0x420> |
/ld/testsuite/ld-x86-64/tlsdesc.s
0,0 → 1,157
/* Force .data aligned to 4K, so .got very likely gets at 0x102190 |
(0x60 bytes .tdata and 0x130 bytes .dynamic) */ |
.data |
.balign 4096 |
.section ".tdata", "awT", @progbits |
.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 257 |
sh2: .long 258 |
sh3: .long 259 |
sh4: .long 260 |
sh5: .long 261 |
sh6: .long 262 |
sh7: .long 263 |
sh8: .long 264 |
/* Force .text aligned to 4K, so it very likely gets at 0x1000. */ |
.text |
.balign 4096 |
.globl fn1 |
.type fn1,@function |
fn1: |
pushq %rbp |
movq %rsp, %rbp |
nop;nop;nop;nop |
|
/* GD */ |
leaq sg1@tlsdesc(%rip), %rax |
call *sg1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE because variable is referenced through IE too */ |
leaq sg2@tlsdesc(%rip), %rax |
call *sg2@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD against local variable */ |
leaq sl1@tlsdesc(%rip), %rax |
call *sl1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE against local variable referenced through IE too */ |
leaq sl2@tlsdesc(%rip), %rax |
call *sl2@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD against hidden and local variable */ |
leaq sh1@tlsdesc(%rip), %rax |
call *sh1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE against hidden and local variable referenced through |
IE too */ |
leaq sh2@tlsdesc(%rip), %rax |
call *sh2@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD against hidden but not local variable */ |
leaq sH1@tlsdesc(%rip), %rax |
call *sH1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE against hidden but not local variable referenced through |
IE too */ |
leaq sH2@tlsdesc(%rip), %rax |
call *sH2@tlscall(%rax) |
nop;nop;nop;nop |
|
/* LD */ |
leaq _TLS_MODULE_BASE_@tlsdesc(%rip), %rax |
call *_TLS_MODULE_BASE_@tlscall(%rax) |
nop;nop |
leaq sl1@dtpoff(%rax), %rdx |
nop;nop |
leaq 2+sl2@dtpoff(%rax), %r9 |
nop;nop;nop;nop |
|
/* LD against hidden and local variables */ |
leaq sh1@dtpoff(%rax), %rdx |
nop;nop |
leaq sh2@dtpoff+3(%rax), %rcx |
nop;nop;nop;nop |
|
/* LD against hidden but not local variables */ |
leaq sH1@dtpoff(%rax), %r12 |
nop;nop |
leaq sH2@dtpoff+1(%rax), %rcx |
nop;nop |
|
/* IE against global var */ |
movq %fs:0, %rcx |
nop;nop |
addq sg2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against local var */ |
movq %fs:0, %r14 |
nop;nop |
addq sl2@gottpoff(%rip), %r14 |
nop;nop;nop;nop |
|
/* IE against hidden and local var */ |
movq %fs:0, %rcx |
nop;nop |
addq sh2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against hidden but not local var */ |
movq %fs:0, %rcx |
nop;nop |
addq sH2@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* Direct access through %fs */ |
|
/* IE against global var */ |
movq sg5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
/* IE against local var */ |
movq sl5@gottpoff(%rip), %r10 |
nop;nop |
movq %fs:(%r10), %r12 |
nop;nop;nop;nop |
|
/* IE against hidden and local var */ |
movq sh5@gottpoff(%rip), %rdx |
nop;nop |
movq %fs:(%rdx), %rdx |
nop;nop;nop;nop |
|
/* IE against hidden but not local var */ |
movq sH5@gottpoff(%rip), %rcx |
nop;nop |
movq %fs:(%rcx), %rdx |
nop;nop;nop;nop |
|
leave |
ret |
/ld/testsuite/ld-x86-64/undefined.s
0,0 → 1,154
.file "undefined.c" |
.section .debug_abbrev,"",@progbits |
.Ldebug_abbrev0: |
.section .debug_info,"",@progbits |
.Ldebug_info0: |
.section .debug_line,"",@progbits |
.Ldebug_line0: |
.text |
.Ltext0: |
.p2align 4,,15 |
.globl function |
.type function, @function |
function: |
.LFB2: |
.file 1 "undefined.c" |
.loc 1 8 0 |
.loc 1 9 0 |
xorl %eax, %eax |
jmp this_function_is_not_defined |
.LFE2: |
.size function, .-function |
.section .debug_frame,"",@progbits |
.Lframe0: |
.long .LECIE0-.LSCIE0 |
.LSCIE0: |
.long 0xffffffff |
.byte 0x1 |
.string "" |
.uleb128 0x1 |
.sleb128 -8 |
.byte 0x10 |
.byte 0xc |
.uleb128 0x7 |
.uleb128 0x8 |
.byte 0x90 |
.uleb128 0x1 |
.align 8 |
.LECIE0: |
.LSFDE0: |
.long .LEFDE0-.LASFDE0 |
.LASFDE0: |
.long .Lframe0 |
.quad .LFB2 |
.quad .LFE2-.LFB2 |
.align 8 |
.LEFDE0: |
.text |
.Letext0: |
.section .debug_info |
.long 0x4c |
.value 0x2 |
.long .Ldebug_abbrev0 |
.byte 0x8 |
.uleb128 0x1 |
.long .Ldebug_line0 |
.quad .Letext0 |
.quad .Ltext0 |
.long .LASF0 |
.byte 0x1 |
.long .LASF1 |
.uleb128 0x2 |
.byte 0x1 |
.long .LASF2 |
.byte 0x1 |
.byte 0x8 |
.long 0x48 |
.quad .LFB2 |
.quad .LFE2 |
.byte 0x2 |
.byte 0x77 |
.sleb128 8 |
.uleb128 0x3 |
.string "int" |
.byte 0x4 |
.byte 0x5 |
.byte 0x0 |
.section .debug_abbrev |
.uleb128 0x1 |
.uleb128 0x11 |
.byte 0x1 |
.uleb128 0x10 |
.uleb128 0x6 |
.uleb128 0x12 |
.uleb128 0x1 |
.uleb128 0x11 |
.uleb128 0x1 |
.uleb128 0x25 |
.uleb128 0xe |
.uleb128 0x13 |
.uleb128 0xb |
.uleb128 0x3 |
.uleb128 0xe |
.byte 0x0 |
.byte 0x0 |
.uleb128 0x2 |
.uleb128 0x2e |
.byte 0x0 |
.uleb128 0x3f |
.uleb128 0xc |
.uleb128 0x3 |
.uleb128 0xe |
.uleb128 0x3a |
.uleb128 0xb |
.uleb128 0x3b |
.uleb128 0xb |
.uleb128 0x49 |
.uleb128 0x13 |
.uleb128 0x11 |
.uleb128 0x1 |
.uleb128 0x12 |
.uleb128 0x1 |
.uleb128 0x40 |
.uleb128 0xa |
.byte 0x0 |
.byte 0x0 |
.uleb128 0x3 |
.uleb128 0x24 |
.byte 0x0 |
.uleb128 0x3 |
.uleb128 0x8 |
.uleb128 0xb |
.uleb128 0xb |
.uleb128 0x3e |
.uleb128 0xb |
.byte 0x0 |
.byte 0x0 |
.byte 0x0 |
.section .debug_pubnames,"",@progbits |
.long 0x1b |
.value 0x2 |
.long .Ldebug_info0 |
.long 0x50 |
.long 0x29 |
.string "function" |
.long 0x0 |
.section .debug_aranges,"",@progbits |
.long 0x2c |
.value 0x2 |
.long .Ldebug_info0 |
.byte 0x8 |
.byte 0x0 |
.value 0x0 |
.value 0x0 |
.quad .Ltext0 |
.quad .Letext0-.Ltext0 |
.quad 0x0 |
.quad 0x0 |
.section .debug_str,"MS",@progbits,1 |
.LASF0: |
.string "GNU C 3.4.6" |
.LASF1: |
.string "undefined.c" |
.LASF2: |
.string "function" |
/ld/testsuite/ld-x86-64/tlsie2.s
0,0 → 1,12
.text |
.globl _start |
_start: |
leaq foo@GOTTPOFF(%rip), %rax |
movq (%rax), %rax |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlspie1.d
0,0 → 1,6
#name: TLS with PIE |
#as: --64 |
#ld: -melf_x86_64 -pie |
#readelf: -r |
|
There are no relocations in this file. |
/ld/testsuite/ld-x86-64/protected3-l1om.d
0,0 → 1,16
#source: protected3.s |
#as: --64 -march=l1om |
#ld: -shared -melf_l1om |
#readelf: -h |
|
ELF Header: |
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |
Class: ELF64 |
Data: 2's complement, little endian |
Version: 1 \(current\) |
OS/ABI: UNIX - System V |
ABI Version: 0 |
Type: DYN \(Shared object file\) |
Machine: Intel L1OM |
Version: 0x1 |
#pass |
/ld/testsuite/ld-x86-64/discarded1.s
0,0 → 1,13
.text |
.globl _start |
.type _start, @function |
_start: |
movq x@GOTPCREL(%rip), %rax |
.size _start, .-_start |
.globl x |
.data |
.align 4 |
.type x, @object |
.size x, 4 |
x: |
.long 2 |
/ld/testsuite/ld-x86-64/tlspic.td
0,0 → 1,16
#source: tlspic1.s |
#source: tlspic2.s |
#as: --64 |
#ld: -shared -melf_x86_64 |
#objdump: -sj.tdata |
#target: x86_64-*-* |
|
.*: +file format elf64-x86-64 |
|
Contents of section .tdata: |
2011ac 11000000 12000000 13000000 14000000 .* |
2011bc 15000000 16000000 17000000 18000000 .* |
2011cc 41000000 42000000 43000000 44000000 .* |
2011dc 45000000 46000000 47000000 48000000 .* |
2011ec 01010000 02010000 03010000 04010000 .* |
2011fc 05010000 06010000 07010000 08010000 .* |
/ld/testsuite/ld-x86-64/discarded1.t
0,0 → 1,7
ENTRY(_start) |
SECTIONS |
{ |
.text : {*(.text)} |
.data : {*(.data)} |
/DISCARD/ : {*(*)} |
} |
/ld/testsuite/ld-x86-64/tlsie4.s
0,0 → 1,16
.text |
.globl _start |
_start: |
mov foo@GOTTPOFF(%rip), %eax |
add foo@GOTTPOFF(%rip), %eax |
mov foo@GOTTPOFF(%rip), %r8d |
add foo@GOTTPOFF(%rip), %r8d |
mov foo@GOTTPOFF(%rip), %r12d |
add foo@GOTTPOFF(%rip), %r12d |
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlsgd6b.s
0,0 → 1,7
.globl foo |
.section .tdata,"awT",@progbits |
.align 4 |
.type foo, @object |
.size foo, 4 |
foo: |
.long 100 |
/ld/testsuite/ld-x86-64/tlsgdesc.s
0,0 → 1,106
.text |
.globl fc1 |
.type fc1,@function |
fc1: |
pushq %rbp |
movq %rsp, %rbp |
nop;nop;nop;nop |
|
/* IE against global var. */ |
movq %fs:0, %rcx |
nop;nop |
addq sG3@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against global var. */ |
movq %fs:0, %rcx |
nop;nop |
addq sG4@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* GD, gd first. */ |
.byte 0x66 |
leaq sG1@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
leaq sG1@tlsdesc(%rip), %rax |
call *sG1@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD, desc first. */ |
leaq sG2@tlsdesc(%rip), %rax |
call *sG2@tlscall(%rax) |
nop;nop;nop;nop |
|
.byte 0x66 |
leaq sG2@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE, gd first, after IE use. */ |
.byte 0x66 |
leaq sG3@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
leaq sG3@tlsdesc(%rip), %rax |
call *sG3@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE, desc first, after IE use. */ |
leaq sG4@tlsdesc(%rip), %rax |
call *sG4@tlscall(%rax) |
nop;nop;nop;nop |
|
.byte 0x66 |
leaq sG4@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* GD -> IE, gd first, before IE use. */ |
.byte 0x66 |
leaq sG5@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
leaq sG5@tlsdesc(%rip), %rax |
call *sG5@tlscall(%rax) |
nop;nop;nop;nop |
|
/* GD -> IE, desc first, before IE use. */ |
leaq sG6@tlsdesc(%rip), %rax |
call *sG6@tlscall(%rax) |
nop;nop;nop;nop |
|
.byte 0x66 |
leaq sG6@tlsgd(%rip), %rdi |
.word 0x6666 |
rex64 |
call __tls_get_addr@plt |
nop;nop;nop;nop |
|
/* IE against global var. */ |
movq %fs:0, %rcx |
nop;nop |
addq sG5@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
/* IE against global var. */ |
movq %fs:0, %rcx |
nop;nop |
addq sG6@gottpoff(%rip), %rcx |
nop;nop;nop;nop |
|
leave |
ret |
/ld/testsuite/ld-x86-64/tlsg.s
0,0 → 1,12
.section .tbss,"awT",@nobits |
.align 4 |
.skip 24 |
.type a,@object |
.size a,4 |
a: |
.zero 4 |
.text |
.globl _start |
_start: |
.section .debug_foobar |
.long a@dtpoff, 0 |
/ld/testsuite/ld-x86-64/dwarfreloc2.s
0,0 → 1,94
.file 1 "dwarfreloc2.c" |
.comm i2,4,4 |
.section .debug_line,"",@progbits |
.Ldebug_line0: |
.section .debug_info |
.Ldebug_info0: |
.long .Ldebug_info_end - .Ldebug_info_start |
.Ldebug_info_start: |
.value 0x2 |
.long .Ldebug_abbrev0 |
.byte 0x8 |
|
.uleb128 0x1 /* DW_TAG_compile_unit */ |
.long .LASF0 /* DW_AT_producer */ |
.byte 0x1 /* DW_AT_language */ |
.long .LASF1 /* DW_AT_name */ |
.long .LASF2 /* DW_AT_comp_dir */ |
.long .Ldebug_line0 /* DW_AT_stmt_list */ |
|
.uleb128 0x2 /* DW_TAG_variable */ |
.string "i2" /* DW_AT_name */ |
.byte 0x1 /* DW_AT_decl_file */ |
.byte 0x1 /* DW_AT_decl_line */ |
/* DWARF3 Page 224 (236/267) |
<prefix>.<file-designator>.<gid-number>.<die-number> */ |
.quad .dwarfreloc1.0.2 /* DW_AT_type (DW_FORM_ref_addr) */ |
.byte 0x1 /* DW_AT_external */ |
.byte 0x9 /* DW_AT_location: length */ |
.byte 0x3 /* DW_AT_location: DW_OP_addr */ |
.quad i2 /* DW_AT_location: DW_OP_addr: address */ |
|
.byte 0x0 |
.Ldebug_info_end: |
|
.section .debug_abbrev |
.Ldebug_abbrev0: |
.uleb128 0x1 |
.uleb128 0x11 |
|
.byte 0x1 |
.uleb128 0x25 /* DW_AT_producer */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x13 /* DW_AT_language */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x1b /* DW_AT_comp_dir */ |
.uleb128 0xe /* DW_FORM_strp */ |
.uleb128 0x10 /* DW_AT_stmt_list */ |
.uleb128 0x6 /* DW_FORM_data4 */ |
.byte 0x0 |
.byte 0x0 |
|
.uleb128 0x2 |
.uleb128 0x34 /* DW_TAG_variable */ |
.byte 0x0 |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0x8 /* DW_FORM_string */ |
.uleb128 0x3a /* DW_AT_decl_file */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3b /* DW_AT_decl_line */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x49 /* DW_AT_type */ |
.uleb128 0x10 /* DW_FORM_ref_addr */ |
.uleb128 0x3f /* DW_AT_external */ |
.uleb128 0xc /* DW_FORM_flag */ |
.uleb128 0x2 /* DW_AT_location */ |
.uleb128 0xa /* DW_FORM_block1 */ |
.byte 0x0 |
.byte 0x0 |
|
.uleb128 0x3 |
.uleb128 0x24 /* DW_TAG_base_type */ |
.byte 0x0 |
.uleb128 0xb /* DW_AT_byte_size */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3e /* DW_AT_encoding */ |
.uleb128 0xb /* DW_FORM_data1 */ |
.uleb128 0x3 /* DW_AT_name */ |
.uleb128 0x8 /* DW_FORM_string */ |
.byte 0x0 |
.byte 0x0 |
|
.byte 0x0 |
|
.section .debug_str,"MS",@progbits,1 |
.LASF1: |
.string "dwarfreloc2.c" |
.LASF0: |
.string "GNU C 4.3.1 20080801 (Red Hat 4.3.1-6)" |
.LASF2: |
.string "/" |
.ident "GCC: (GNU) 4.3.1 20080801 (Red Hat 4.3.1-6)" |
.section .note.GNU-stack,"",@progbits |
/ld/testsuite/ld-x86-64/tlsgdesc.rd
0,0 → 1,104
#source: tlsgdesc.s |
#as: --64 |
#ld: -shared -melf64_x86_64 |
#readelf: -WSsrl |
#target: x86_64-*-* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 |
+\[[ 0-9]+\] \.hash +.* |
+\[[ 0-9]+\] \.dynsym +.* |
+\[[ 0-9]+\] \.dynstr +.* |
+\[[ 0-9]+\] \.rela.dyn +.* |
+\[[ 0-9]+\] \.rela.plt +.* |
+\[[ 0-9]+\] \.plt +.* |
+\[[ 0-9]+\] \.text +.* |
+\[[ 0-9]+\] \.dynamic +.* |
+\[[ 0-9]+\] \.got +.* |
+\[[ 0-9]+\] \.got.plt +.* |
+\[[ 0-9]+\] \.shstrtab +.* |
+\[[ 0-9]+\] \.symtab +.* |
+\[[ 0-9]+\] \.strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is DYN \(Shared object file\) |
Entry point 0x[0-9a-f]+ |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
+LOAD.* |
+LOAD.* |
+DYNAMIC.* |
|
Section to Segment mapping: |
+Segment Sections... |
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * |
+01 +.dynamic .got .got.plt * |
+02 +.dynamic * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f]+ +0+200000012 R_X86_64_TPOFF64 +0+ sG3 \+ 0 |
[0-9a-f]+ +0+300000012 R_X86_64_TPOFF64 +0+ sG5 \+ 0 |
[0-9a-f]+ +0+400000010 R_X86_64_DTPMOD64 +0+ sG2 \+ 0 |
[0-9a-f]+ +0+400000011 R_X86_64_DTPOFF64 +0+ sG2 \+ 0 |
[0-9a-f]+ +0+500000012 R_X86_64_TPOFF64 +0+ sG4 \+ 0 |
[0-9a-f]+ +0+800000012 R_X86_64_TPOFF64 +0+ sG6 \+ 0 |
[0-9a-f]+ +0+a00000010 R_X86_64_DTPMOD64 +0+ sG1 \+ 0 |
[0-9a-f]+ +0+a00000011 R_X86_64_DTPOFF64 +0+ sG1 \+ 0 |
|
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 3 entries: |
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend |
[0-9a-f]+ +0+600000007 R_X86_64_JUMP_SLOT +0+ __tls_get_addr \+ 0 |
[0-9a-f]+ +0+a00000024 R_X86_64_TLSDESC +0+ sG1 \+ 0 |
[0-9a-f]+ +0+400000024 R_X86_64_TLSDESC +0+ sG2 \+ 0 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 * |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG3 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG5 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG2 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG4 |
+[0-9]+: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG6 |
+[0-9]+: [0-9a-f]+ +0 +FUNC +GLOBAL +DEFAULT +7 fc1 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG1 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name |
+[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 * |
+[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 * |
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC |
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG3 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG5 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG2 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG4 |
+[0-9]+: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS __bss_start |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG6 |
+[0-9]+: [0-9a-f]+ +0 +FUNC +GLOBAL +DEFAULT +7 fc1 |
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG1 |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _edata |
+[0-9]+: [0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +ABS _end |
/ld/testsuite/ld-x86-64/ia32-1.d
0,0 → 1,16
#source: dummy.s |
#as: --32 |
#ld: -m elf_i386 tmpdir/start32.o tmpdir/foo32.o |
#readelf: -h |
|
ELF Header: |
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |
Class: ELF32 |
Data: 2's complement, little endian |
Version: 1 \(current\) |
OS/ABI: UNIX - System V |
ABI Version: 0 |
Type: EXEC \(Executable file\) |
Machine: Intel 80386 |
Version: 0x1 |
#pass |