diff options
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-ia64')
32 files changed, 1250 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-ia64/ia64.exp b/binutils-2.21/ld/testsuite/ld-ia64/ia64.exp new file mode 100644 index 0000000..6d4860e --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/ia64.exp @@ -0,0 +1,64 @@ +# Expect script for ld-ia64 tests +# Copyright (C) 2002, 2003, 2005, 2007 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 ia64 linking; all types of relocs. This tests the assembler and +# tools like objdump as well as the linker. + +if { !([istarget "ia64-*-elf*"] + || [istarget "ia64-*-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 ia64tests { + {"TLS -fpic -shared" "-shared" + "-mtune=itanium1" {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"} + {"Helper shared library" "-shared" + "" {tlslib.s} {} "libtlslib.so"} + {"TLS -fpic and -fno-pic exec" + "tmpdir/libtlslib.so" "-mtune=itanium1" {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 in debug sections" "" + "" {tlsg.s} + {{objdump -sj.debug_foobar tlsg.sd}} "tlsg"} +} + +run_ld_link_tests $ia64tests + +set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] +foreach t $test_list { + # We need to strip the ".d", but can leave the dirname. + verbose [file rootname $t] + run_dump_test [file rootname $t] +} diff --git a/binutils-2.21/ld/testsuite/ld-ia64/line.exp b/binutils-2.21/ld/testsuite/ld-ia64/line.exp new file mode 100644 index 0000000..2ebc7d6 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/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 "ia64-*-elf*"] + || [istarget "ia64-*-linux*"]) } { + return +} + +set testline "undefined line" + +if ![ld_assemble $as "-x $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 -o tmpdir/undefined tmpdir/undefined.o\n" +set exec_output [run_host_cmd "$ld" "-e start -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 diff --git a/binutils-2.21/ld/testsuite/ld-ia64/link-order.d b/binutils-2.21/ld/testsuite/ld-ia64/link-order.d new file mode 100644 index 0000000..53a3794 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/link-order.d @@ -0,0 +1,9 @@ +#source: ../../../binutils/testsuite/binutils-all/link-order.s +#ld: -r +#readelf: -S --wide + +#... + \[[ ]+1\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX.* +#... + \[[ 0-9]+\] \.IA_64.unwind[ \t]+IA_64_UNWIND[ \t0-9a-f]+AL[ \t]+1[ \t]+1[ \t]+8 +#pass diff --git a/binutils-2.21/ld/testsuite/ld-ia64/local1.d b/binutils-2.21/ld/testsuite/ld-ia64/local1.d new file mode 100644 index 0000000..728faa2 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/local1.d @@ -0,0 +1,9 @@ +#as: -x +#ld: -shared --version-script local1.map +#readelf: -s --wide + +#... + .*: [0-9a-f]* +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9] +hidden +#... + .*: [0-9a-f]* +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9] +hidden +#... diff --git a/binutils-2.21/ld/testsuite/ld-ia64/local1.map b/binutils-2.21/ld/testsuite/ld-ia64/local1.map new file mode 100644 index 0000000..904d025 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/local1.map @@ -0,0 +1,6 @@ +{ +global: + *; +local: + hidden; +}; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/local1.s b/binutils-2.21/ld/testsuite/ld-ia64/local1.s new file mode 100644 index 0000000..2eacae1 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/local1.s @@ -0,0 +1,21 @@ + .pred.safe_across_calls p1-p5,p16-p63 + .global foo# + .section .sdata,"aw",@progbits + .align 8 + .type foo#, @object + .size foo#, 8 +foo: + data8 @fptr(hidden#) + .text + .align 16 + .global hidden# + .hidden hidden# + .proc hidden# +hidden: + .prologue + .body + .bbb + nop 0 + nop 0 + br.ret.sptk.many b0 + .endp hidden# diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge1.d b/binutils-2.21/ld/testsuite/ld-ia64/merge1.d new file mode 100644 index 0000000..39882b8 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge1.d @@ -0,0 +1,10 @@ +#source: merge1.s +#as: -x +#ld: -shared +#objdump: -d + +#... +0+1e0 <.text>: +[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; +[ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge1.s b/binutils-2.21/ld/testsuite/ld-ia64/merge1.s new file mode 100644 index 0000000..8998db4 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge1.s @@ -0,0 +1,12 @@ + .section .rodata.str1.8,"aMS", 1 +.LC1: .string "foo" +.LC2: .string "foo" + .section .data.rel.local,"aw" + .quad .LC2 + .section .rodata,"a" +.LC3: .string "bar" + .balign 8 + .space 0x400000 + .text + addl r12=@ltoffx(.LC1),r1 ;; + addl r12=@ltoffx(.LC3),r1 ;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge2.d b/binutils-2.21/ld/testsuite/ld-ia64/merge2.d new file mode 100644 index 0000000..dde3d09 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge2.d @@ -0,0 +1,10 @@ +#source: merge2.s +#as: -x +#ld: -shared +#objdump: -d + +#... +0+1e0 <.text>: +[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; +[ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge2.s b/binutils-2.21/ld/testsuite/ld-ia64/merge2.s new file mode 100644 index 0000000..6c85ac2 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge2.s @@ -0,0 +1,12 @@ + .section .rodata.str1.8,"aMS", 1 +.LC2: .string "foo" +.LC1: .string "foo" + .section .data.rel.local,"aw" + .quad .LC2 + .section .rodata,"a" +.LC3: .string "bar" + .balign 8 + .space 0x400000 + .text + addl r12=@ltoffx(.LC1),r1 ;; + addl r12=@ltoffx(.LC3),r1 ;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge3.d b/binutils-2.21/ld/testsuite/ld-ia64/merge3.d new file mode 100644 index 0000000..d0163f3 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge3.d @@ -0,0 +1,13 @@ +#source: merge3.s +#as: -x +#ld: -shared +#objdump: -d + +#... +0+210 <.text>: +[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; +[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; +[ ]*[a-f0-9]+: 01 60 60 02 00 24 \[MII\] addl r12=24,r1 +[ ]*[a-f0-9]+: 00 00 00 02 00 00 nop.i 0x0 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge3.s b/binutils-2.21/ld/testsuite/ld-ia64/merge3.s new file mode 100644 index 0000000..2442701 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge3.s @@ -0,0 +1,16 @@ + .section .rodata.str1.8,"aMS", 1 +.LC1: .string "foo" +.LC2: .string "foo" +.LC3: .string "bar" +.LC4: .string "bar" + .section .data.rel.local,"aw" + .quad .LC2 + .quad .LC3 + .section .rodata,"a" +.LC5: .string "mumble" + .balign 8 + .space 0x400000 + .text + addl r12=@ltoffx(.LC1),r1 ;; + addl r12=@ltoffx(.LC4),r1 ;; + addl r12=@ltoffx(.LC5),r1 ;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge4.d b/binutils-2.21/ld/testsuite/ld-ia64/merge4.d new file mode 100644 index 0000000..0ed5621 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge4.d @@ -0,0 +1,13 @@ +#source: merge4.s +#as: -x +#ld: -shared +#objdump: -d + +#... +0+240 <.text>: +[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; +[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; +[ ]*[a-f0-9]+: 0b 60 c0 02 00 24 \[MMI\] addl r12=48,r1;; +[ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge4.s b/binutils-2.21/ld/testsuite/ld-ia64/merge4.s new file mode 100644 index 0000000..c23b4d0 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge4.s @@ -0,0 +1,21 @@ + .section .rodata.str1.8,"aMS", 1 +.LC1: .string "foo" +.LC2: .string "foo" +.LC3: .string "bar" +.LC4: .string "bar" +.LC5: .string "baz" +.LC6: .string "baz" + .section .data.rel.local,"aw" + .quad .LC2 + .quad .LC4 + .quad .LC5 + .section .rodata,"a" +.LC7: .string "mumble" + .balign 8 + .space 0x400000 + .text + addl r12=@ltoffx(.LC1),r1 ;; + addl r12=@ltoffx(.LC3),r1 ;; + addl r12=@ltoffx(.LC6),r1 ;; + addl r12=@ltoffx(.LC7),r1 ;; + diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge5.d b/binutils-2.21/ld/testsuite/ld-ia64/merge5.d new file mode 100644 index 0000000..3adfa55 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge5.d @@ -0,0 +1,16 @@ +#source: merge5.s +#as: -x +#ld: -shared +#objdump: -d + +#... +0+270 <.text>: +[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; +[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; +[ ]*[a-f0-9]+: 0b 60 a0 02 00 24 \[MMI\] addl r12=40,r1;; +[ ]*[a-f0-9]+: c0 c0 05 00 48 00 addl r12=56,r1 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; +[ ]*[a-f0-9]+: 01 60 60 02 00 24 \[MII\] addl r12=24,r1 +[ ]*[a-f0-9]+: 00 00 00 02 00 00 nop.i 0x0 +[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/merge5.s b/binutils-2.21/ld/testsuite/ld-ia64/merge5.s new file mode 100644 index 0000000..81428c4 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/merge5.s @@ -0,0 +1,24 @@ + .section .rodata.str1.8,"aMS", 1 +.LC1: .string "foo" +.LC2: .string "foo" +.LC3: .string "bar" +.LC4: .string "bar" +.LC5: .string "bar" +.LC6: .string "bar" +.LC7: .string "baz" +.LC8: .string "baz" + .section .data.rel.local,"aw" + .quad .LC2 + .quad .LC4 + .quad .LC6 + .quad .LC7 + .section .rodata,"a" +.LC9: .string "mumble" + .balign 8 + .space 0x400000 + .text + addl r12=@ltoffx(.LC1),r1 ;; + addl r12=@ltoffx(.LC3),r1 ;; + addl r12=@ltoffx(.LC5),r1 ;; + addl r12=@ltoffx(.LC8),r1 ;; + addl r12=@ltoffx(.LC9),r1 ;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.dd b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.dd new file mode 100644 index 0000000..1c5bc2f --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.dd @@ -0,0 +1,74 @@ +#source: tlsbinpic.s +#source: tlsbin.s +#as: +#ld: -shared +#objdump: -drj.text +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Disassembly of section .text: + +40+1000 <fn2>: +40+1000: 10 10 15 06 80 05[ ]+\[MIB\][ ]+alloc r34=ar.pfs,5,3,0 +40+1006: 10 02 00 62 00 00[ ]+mov r33=b0 +40+100c: 00 00 00 20[ ]+nop.b 0x0 +40+1010: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 +40+1016: 00 00 00 02 00 e0[ ]+nop.f 0x0 +40+101c: .1 0. 00 90[ ]+addl r15=(24|32|40|48|56|64),r1;; +40+1020: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] +40+1026: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] +40+102c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+1030: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 +40+1036: 00 00 00 02 00 e0[ ]+nop.f 0x0 +40+103c: .1 0. 00 90[ ]+addl r15=(24|32|40|48|56|64),r1;; +40+1040: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] +40+1046: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] +40+104c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+1050: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 +40+1056: 00 00 00 02 00 80[ ]+nop.f 0x0 +40+105c: 14 02 00 90[ ]+mov r36=33;; +40+1060: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] +40+1066: 00 00 00 02 00 00[ ]+nop.f 0x0 +40+106c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+1070: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 +40+1076: 00 00 00 02 00 80[ ]+nop.f 0x0 +40+107c: 04 00 00 84[ ]+mov r36=r0;; +40+1080: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] +40+1086: 00 00 00 02 00 00[ ]+nop.f 0x0 +40+108c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+1090: 0b 10 00 10 00 21[ ]+\[MMI\][ ]+mov r2=r8;; +40+1096: e0 00 0a 00 48 e0[ ]+addl r14=64,r2 +40+109c: 61 14 00 90[ ]+addl r15=70,r2;; +40+10a0: 05 70 2c 11 00 21[ ]+\[MLX\][ ]+adds r14=75,r8 +40+10a6: 00 00 00 00 00 e0[ ]+movl r15=0x4d;; +40+10ac: d1 04 00 60 +40+10b0: 0a 78 3c 10 00 20[ ]+\[MMI\][ ]+add r15=r15,r8;; +40+10b6: 00 00 00 02 00 00[ ]+nop.m 0x0 +40+10bc: 20 02 aa 00[ ]+mov.i ar.pfs=r34 +40+10c0: 11 00 00 00 01 00[ ]+\[MIB\][ ]+nop.m 0x0 +40+10c6: 00 08 05 80 03 80[ ]+mov b0=r33 +40+10cc: 08 00 84 00[ ]+br.ret.sptk.many b0;; + +40+10d0 <_start>: +40+10d0: 0b 70 .0 0. 00 24[ ]+\[MMI\][ ]+addl r14=(24|32|40|48|56|64),r1;; +40+10d6: e0 00 38 30 20 00[ ]+ld8 r14=\[r14\] +40+10dc: 00 00 04 00[ ]+nop.i 0x0;; +40+10e0: 0b 70 38 1a 00 20[ ]+\[MMI\][ ]+add r14=r14,r13;; +40+10e6: e0 .0 0. 00 48 00[ ]+addl r14=(24|32|40|48|56|64),r1 +40+10ec: 00 00 04 00[ ]+nop.i 0x0;; +40+10f0: 0b 70 00 1c 18 10[ ]+\[MMI\][ ]+ld8 r14=\[r14\];; +40+10f6: e0 70 34 00 40 00[ ]+add r14=r14,r13 +40+10fc: 00 00 04 00[ ]+nop.i 0x0;; +40+1100: 0b 10 00 1a 00 21[ ]+\[MMI\][ ]+mov r2=r13;; +40+1106: e0 80 08 00 48 e0[ ]+addl r14=16,r2 +40+110c: 61 11 04 90[ ]+addl r15=150,r2;; +40+1110: 05 70 5c 1b 00 21[ ]+\[MLX\][ ]+adds r14=87,r13 +40+1116: 00 00 00 00 00 e0[ ]+movl r15=0x95;; +40+111c: 51 01 04 60 +40+1120: 0a 78 3c 1a 00 20[ ]+\[MMI\][ ]+add r15=r15,r13;; +40+1126: 00 00 00 02 00 00[ ]+nop.m 0x0 +40+112c: 00 00 04 00[ ]+nop.i 0x0 +40+1130: 1d 00 00 00 01 00[ ]+\[MFB\][ ]+nop.m 0x0 +40+1136: 00 00 00 02 00 80[ ]+nop.f 0x0 +40+113c: 08 00 84 00[ ]+br.ret.sptk.many b0;; diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.rd b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.rd new file mode 100644 index 0000000..0ad3a77 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.rd @@ -0,0 +1,136 @@ +#source: tlsbinpic.s +#source: tlsbin.s +#as: +#ld: -shared +#readelf: -WSsrl +#target: ia64-*-* + +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.IA_64.pltoff +.* + +\[[ 0-9]+\] .plt +.* + +\[[ 0-9]+\] .text +PROGBITS +40+1000 0+1000 0+140 00 +AX +0 +0 4096 + +\[[ 0-9]+\] .IA_64.unwind_info +.* + +\[[ 0-9]+\] .IA_64.unwind +.* + +\[[ 0-9]+\] .tdata +PROGBITS +60+1[0-9a-f]+ 0+1[0-9a-f]+ 0+60 00 WAT +0 +0 +4 + +\[[ 0-9]+\] .tbss +NOBITS +60+1[0-9a-f]+ 0+1[0-9a-f]+ 0+40 00 WAT +0 +0 +1 + +\[[ 0-9]+\] .dynamic +DYNAMIC +60+1[0-9a-f]+ 0+1[0-9a-f]+ 0+150 10 +WA +4 +0 +8 + +\[[ 0-9]+\] .got +PROGBITS +60+1318 0+1318 0+48 00 WAp +0 +0 +8 + +\[[ 0-9]+\] .IA_64.pltoff +.* + +\[[ 0-9]+\] .shstrtab +.* + +\[[ 0-9]+\] .symtab +.* + +\[[ 0-9]+\] .strtab +.* +#... + +Elf file type is EXEC \(Executable file\) +Entry point 0x40+10d0 +There are [0-9]+ program headers, starting at offset [0-9]+ + +Program Headers: + +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align + +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8 + +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 +.*Requesting program interpreter.* + +LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000 + +LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 + +DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW +0x8 + +TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4 + +IA_64_UNWIND .* R +0x8 +#... + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries: + +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend +[0-9a-f ]+R_IA64_TPREL64LSB +0+ sG2 \+ 0 +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ sG1 \+ 0 +[0-9a-f ]+R_IA64_DTPREL64LSB +0+ sG1 \+ 0 + +Relocation section '.rela.IA_64.pltoff' at offset 0x[0-9a-f]+ contains 1 entries: + +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend +[0-9a-f ]+R_IA64_IPLTLSB +0+ __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 sG2 +.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr +.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start +.* 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 * +.* SECTION +LOCAL +DEFAULT +14 * +.* SECTION +LOCAL +DEFAULT +15 * +.* TLS +LOCAL +DEFAULT +11 sl1 +.* TLS +LOCAL +DEFAULT +11 sl2 +.* TLS +LOCAL +DEFAULT +11 sl3 +.* TLS +LOCAL +DEFAULT +11 sl4 +.* TLS +LOCAL +DEFAULT +11 sl5 +.* TLS +LOCAL +DEFAULT +11 sl6 +.* TLS +LOCAL +DEFAULT +11 sl7 +.* TLS +LOCAL +DEFAULT +11 sl8 +.* TLS +LOCAL +DEFAULT +12 bl1 +.* TLS +LOCAL +DEFAULT +12 bl2 +.* TLS +LOCAL +DEFAULT +12 bl3 +.* TLS +LOCAL +DEFAULT +12 bl4 +.* TLS +LOCAL +DEFAULT +12 bl5 +.* TLS +LOCAL +DEFAULT +12 bl6 +.* TLS +LOCAL +DEFAULT +12 bl7 +.* TLS +LOCAL +DEFAULT +12 bl8 +.* OBJECT +LOCAL +DEFAULT +13 _DYNAMIC +.* OBJECT +LOCAL +DEFAULT +14 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL +DEFAULT +11 sg8 +.* TLS +GLOBAL +DEFAULT +12 bg8 +.* TLS +GLOBAL +DEFAULT +12 bg6 +.* TLS +GLOBAL +DEFAULT +12 bg3 +.* TLS +GLOBAL +DEFAULT +11 sg3 +.* TLS +GLOBAL +HIDDEN +11 sh3 +.* TLS +GLOBAL +DEFAULT +UND sG2 +.* TLS +GLOBAL +DEFAULT +11 sg4 +.* TLS +GLOBAL +DEFAULT +11 sg5 +.* TLS +GLOBAL +DEFAULT +12 bg5 +.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL +HIDDEN +11 sh7 +.* TLS +GLOBAL +HIDDEN +11 sh8 +.* TLS +GLOBAL +DEFAULT +11 sg1 +.* FUNC +GLOBAL +DEFAULT +8 _start +.* TLS +GLOBAL +HIDDEN +11 sh4 +.* TLS +GLOBAL +DEFAULT +12 bg7 +.* TLS +GLOBAL +HIDDEN +11 sh5 +.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start +.* FUNC +GLOBAL +DEFAULT +8 fn2 +.* TLS +GLOBAL +DEFAULT +11 sg2 +.* TLS +GLOBAL +DEFAULT +UND sG1 +.* TLS +GLOBAL +HIDDEN +11 sh1 +.* TLS +GLOBAL +DEFAULT +11 sg6 +.* TLS +GLOBAL +DEFAULT +11 sg7 +.* NOTYPE +GLOBAL +DEFAULT +ABS _edata +.* NOTYPE +GLOBAL +DEFAULT +ABS _end +.* TLS +GLOBAL +HIDDEN +11 sh2 +.* TLS +GLOBAL +HIDDEN +11 sh6 +.* TLS +GLOBAL +DEFAULT +12 bg2 +.* TLS +GLOBAL +DEFAULT +12 bg1 +.* TLS +GLOBAL +DEFAULT +12 bg4 diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.s b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.s new file mode 100644 index 0000000..7b5f34a --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.s @@ -0,0 +1,54 @@ + .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 + .explicit + .pred.safe_across_calls p1-p5,p16-p63 + .text + .globl _start# + .proc _start# +_start: + /* IE */ + addl r14 = @ltoff(@tprel(sG2#)), gp + ;; + ld8 r14 = [r14] + ;; + add r14 = r14, r13 + ;; + + /* IE against global symbol in exec */ + addl r14 = @ltoff(@tprel(bl1#)), gp + ;; + ld8 r14 = [r14] + ;; + add r14 = r14, r13 + ;; + + /* LE */ + mov r2 = r13 + ;; + addl r14 = @tprel(sg1#), r2 + addl r15 = @tprel(bl2#) + 2, r2 + ;; + adds r14 = @tprel(sh2#) + 3, r13 + movl r15 = @tprel(bl2#) + 1 + ;; + add r15 = r15, r13 + ;; + + br.ret.sptk.many b0 + .endp _start# diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.sd b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.sd new file mode 100644 index 0000000..411eedb --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.sd @@ -0,0 +1,15 @@ +#source: tlsbinpic.s +#source: tlsbin.s +#as: +#ld: -shared +#objdump: -sj.got +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Contents of section .got: + (60+)?1318 0+ 0+ 0+ 0+ .* + (60+)?1328 0+ 0+ 0+ 0+ .* + (60+)?1338 0+ 0+ 0+ 0+ .* + (60+)?1348 (00|01|24|90)000000 0+ (00|01|24|90)000000 0+ .* + (60+)?1358 (00|01|24|90)000000 0+ .* diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.td b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.td new file mode 100644 index 0000000..1e724e7 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbin.td @@ -0,0 +1,16 @@ +#source: tlsbinpic.s +#source: tlsbin.s +#as: +#ld: -shared +#objdump: -sj.tdata +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Contents of section .tdata: + (60+)?1[0-9a-f]+ 11000000 12000000 13000000 14000000 .* + (60+)?1[0-9a-f]+ 15000000 16000000 17000000 18000000 .* + (60+)?1[0-9a-f]+ 41000000 42000000 43000000 44000000 .* + (60+)?1[0-9a-f]+ 45000000 46000000 47000000 48000000 .* + (60+)?1[0-9a-f]+ 01010000 02010000 03010000 04010000 .* + (60+)?1[0-9a-f]+ 05010000 06010000 07010000 08010000 .* diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsbinpic.s b/binutils-2.21/ld/testsuite/ld-ia64/tlsbinpic.s new file mode 100644 index 0000000..f061343 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsbinpic.s @@ -0,0 +1,97 @@ + /* Force .data aligned to 4K, so that .got very likely gets at + 0x60000000000031b0 (0x60 bytes .tdata and 0x150 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 + .explicit + .pred.safe_across_calls p1-p5,p16-p63 + /* Force .text aligned to 4K, so it very likely gets at + 0x4000000000001000. */ + .text + .balign 4096 + .globl fn2# + .proc fn2# +fn2: + .prologue 12, 33 + .mib + .save ar.pfs, r34 + alloc r34 = ar.pfs, 0, 3, 2, 0 + .save rp, r33 + mov r33 = b0 + + /* GD */ + addl r14 = @ltoff(@dtpmod(sG1#)), gp + addl r15 = @ltoff(@dtprel(sG1#)), gp + ;; + ld8 out0 = [r14] + ld8 out1 = [r15] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* GD against local symbol */ + addl r14 = @ltoff(@dtpmod(sl2#)), gp + addl r15 = @ltoff(@dtprel(sl2#)), gp + ;; + ld8 out0 = [r14] + ld8 out1 = [r15] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* LD */ + addl r14 = @ltoff(@dtpmod(sl1#)), gp + addl out1 = @dtprel(sl1#) + 1, r0 + ;; + ld8 out0 = [r14] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* LD with 4 variables variables */ + addl r14 = @ltoff(@dtpmod(sh1#)), gp + mov out1 = r0 + ;; + ld8 out0 = [r14] + br.call.sptk.many b0 = __tls_get_addr# + ;; + mov r2 = r8 + ;; + addl r14 = @dtprel(sh1#), r2 + addl r15 = @dtprel(sh2#) + 2, r2 + ;; + adds r14 = @dtprel(sh3#) + 3, r8 + movl r15 = @dtprel(sh4#) + 1 + ;; + add r15 = r15, r8 + ;; + + mov ar.pfs = r34 + mov b0 = r33 + br.ret.sptk.many b0 + .endp fn2# diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsg.s b/binutils-2.21/ld/testsuite/ld-ia64/tlsg.s new file mode 100644 index 0000000..fa3fce0 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsg.s @@ -0,0 +1,14 @@ + .section .tbss,"awT",@nobits + .align 4 + .skip 24 + .type a#,@object + .size a#,4 +a: + data4 0 + .text + .globl _start# + .proc _start# +_start: + .endp _start# + .section .debug_foobar + data8 @dtprel(a#) diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlsg.sd b/binutils-2.21/ld/testsuite/ld-ia64/tlsg.sd new file mode 100644 index 0000000..67bc9cd --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlsg.sd @@ -0,0 +1,10 @@ +#source: tlsg.s +#as: +#ld: +#objdump: -sj.debug_foobar +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Contents of section .debug_foobar: + 0+ 18000000 0+ +.* diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlslib.s b/binutils-2.21/ld/testsuite/ld-ia64/tlslib.s new file mode 100644 index 0000000..d0e63fe --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/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# + .proc __tls_get_addr# +__tls_get_addr: + br.ret.sptk.many b0 + .endp __tls_get_addr# diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic.dd b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.dd new file mode 100644 index 0000000..32850f0 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.dd @@ -0,0 +1,64 @@ +#source: tlspic1.s +#source: tlspic2.s +#as: +#ld: +#objdump: -drj.text +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Disassembly of section .text: + +0+1000 <fn1>: + +1000: 10 10 15 06 80 05[ ]+\[MIB\] +alloc r34=ar.pfs,5,3,0 + +1006: 10 02 00 62 00 00[ ]+mov r33=b0 + +100c: 00 00 00 20[ ]+nop.b 0x0 + +1010: 0d 70 60 02 00 24[ ]+\[MFI\] +addl r14=24,r1 + +1016: 00 00 00 02 00 e0[ ]+nop.f 0x0 + +101c: 01 0a 00 90[ ]+addl r15=32,r1;; + +1020: 19 18 01 1c 18 10[ ]+\[MMB\] +ld8 r35=\[r14\] + +1026: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] + +102c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +1030: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 + +1036: 00 00 00 02 00 e0[ ]+nop.f 0x0 + +103c: 01 0c 00 90[ ]+addl r15=64,r1;; + +1040: 19 18 01 1c 18 10[ ]+\[MMB\] +ld8 r35=\[r14\] + +1046: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] + +104c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +1050: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 + +1056: 00 00 00 02 00 80[ ]+nop.f 0x0 + +105c: 14 02 00 90[ ]+mov r36=33;; + +1060: 1d 18 01 1c 18 10[ ]+\[MFB\] +ld8 r35=\[r14\] + +1066: 00 00 00 02 00 00[ ]+nop.f 0x0 + +106c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +1070: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 + +1076: 00 00 00 02 00 80[ ]+nop.f 0x0 + +107c: 04 00 00 84[ ]+mov r36=r0;; + +1080: 1d 18 01 1c 18 10[ ]+\[MFB\] +ld8 r35=\[r14\] + +1086: 00 00 00 02 00 00[ ]+nop.f 0x0 + +108c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +1090: 0b 10 00 10 00 21[ ]+\[MMI\] +mov r2=r8;; + +1096: e0 00 0a 00 48 e0[ ]+addl r14=64,r2 + +109c: 21 16 00 90[ ]+addl r15=98,r2;; + +10a0: 05 70 4c 11 00 21[ ]+\[MLX\] +adds r14=83,r8 + +10a6: 00 00 00 00 00 e0[ ]+movl r15=0x71;; + +10ac: 11 07 00 60 + +10b0: 0b 78 3c 10 00 20[ ]+\[MMI\] +add r15=r15,r8;; + +10b6: e0 40 05 00 48 00[ ]+addl r14=40,r1 + +10bc: 00 00 04 00[ ]+nop.i 0x0;; + +10c0: 0b 78 00 1c 18 10[ ]+\[MMI\] +ld8 r15=\[r14\];; + +10c6: e0 78 34 00 40 00[ ]+add r14=r15,r13 + +10cc: 00 00 04 00[ ]+nop.i 0x0;; + +10d0: 0d 70 20 03 00 24[ ]+\[MFI\] +addl r14=72,r1 + +10d6: 00 00 00 02 00 e0[ ]+nop.f 0x0 + +10dc: 81 0b 00 90[ ]+addl r15=56,r1;; + +10e0: 09 70 00 1c 18 10[ ]+\[MMI\] +ld8 r14=\[r14\] + +10e6: f0 00 3c 30 20 00[ ]+ld8 r15=\[r15\] + +10ec: 00 00 04 00[ ]+nop.i 0x0;; + +10f0: 02 70 38 1a 00 20[ ]+\[MII\] +add r14=r14,r13 + +10f6: f0 78 34 00 40 00[ ]+add r15=r15,r13;; + +10fc: 20 02 aa 00[ ]+mov.i ar.pfs=r34 + +1100: 11 00 00 00 01 00[ ]+\[MIB\] +nop.m 0x0 + +1106: 00 08 05 80 03 80[ ]+mov b0=r33 + +110c: 08 00 84 00[ ]+br.ret.sptk.many b0;; +#pass diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic.rd b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.rd new file mode 100644 index 0000000..8320365 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.rd @@ -0,0 +1,131 @@ +#source: tlspic1.s +#source: tlspic2.s +#as: +#ld: -shared +#readelf: -WSsrl +#target: ia64-*-* + +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.IA_64.pltoff +.* + +\[[ 0-9]+\] .plt +.* + +\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+110 00 +AX +0 +0 4096 + +\[[ 0-9]+\] .IA_64.unwind_info +.* + +\[[ 0-9]+\] .IA_64.unwind +.* + +\[[ 0-9]+\] .tdata +PROGBITS +0+11[0-9a-f]+ 0+1[0-9a-f]+ 0+60 00 WAT +0 +0 +4 + +\[[ 0-9]+\] .tbss +NOBITS +0+11[0-9a-f]+ 0+1[0-9a-f]+ 0+20 00 WAT +0 +0 +1 + +\[[ 0-9]+\] .dynamic +DYNAMIC +0+11[0-9a-f]+ 0+1[0-9a-f]+ 0+140 10 +WA +3 +0 +8 + +\[[ 0-9]+\] .got +PROGBITS +0+112d8 0+12d8 0+50 00 WAp +0 +0 +8 + +\[[ 0-9]+\] .IA_64.pltoff +.* + +\[[ 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+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000 + +LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 + +DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW +0x8 + +TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4 + +IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R +0x8 +#... + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 6 entries: + +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ sg1 \+ 0 +[0-9a-f ]+R_IA64_DTPREL64LSB +0+ sg1 \+ 0 +[0-9a-f ]+R_IA64_TPREL64LSB +0+4 sg2 \+ 0 +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ +[0-9a-f ]+R_IA64_TPREL64LSB +0+44 +[0-9a-f ]+R_IA64_TPREL64LSB +0+24 + +Relocation section '.rela.IA_64.pltoff' at offset 0x[0-9a-f]+ contains 1 entries: + +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend +[0-9a-f ]+R_IA64_IPLTLSB +0+ __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 +10 sg8 +.* TLS +GLOBAL +DEFAULT +10 sg3 +.* TLS +GLOBAL +DEFAULT +10 sg4 +.* TLS +GLOBAL +DEFAULT +10 sg5 +.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL +DEFAULT +10 sg1 +.* FUNC +GLOBAL +DEFAULT +7 fn1 +.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start +.* TLS +GLOBAL +DEFAULT +10 sg2 +.* TLS +GLOBAL +DEFAULT +10 sg6 +.* TLS +GLOBAL +DEFAULT +10 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 * +.* SECTION +LOCAL +DEFAULT +13 * +.* SECTION +LOCAL +DEFAULT +14 * +.* TLS +LOCAL +DEFAULT +10 sl1 +.* TLS +LOCAL +DEFAULT +10 sl2 +.* TLS +LOCAL +DEFAULT +10 sl3 +.* TLS +LOCAL +DEFAULT +10 sl4 +.* TLS +LOCAL +DEFAULT +10 sl5 +.* TLS +LOCAL +DEFAULT +10 sl6 +.* TLS +LOCAL +DEFAULT +10 sl7 +.* TLS +LOCAL +DEFAULT +10 sl8 +.* TLS +LOCAL +DEFAULT +11 sH1 +.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC +.* TLS +LOCAL +DEFAULT +10 sh3 +.* TLS +LOCAL +DEFAULT +11 sH2 +.* TLS +LOCAL +DEFAULT +11 sH7 +.* TLS +LOCAL +DEFAULT +10 sh7 +.* TLS +LOCAL +DEFAULT +10 sh8 +.* TLS +LOCAL +DEFAULT +11 sH4 +.* TLS +LOCAL +DEFAULT +10 sh4 +.* TLS +LOCAL +DEFAULT +11 sH3 +.* TLS +LOCAL +DEFAULT +10 sh5 +.* TLS +LOCAL +DEFAULT +11 sH5 +.* TLS +LOCAL +DEFAULT +11 sH6 +.* TLS +LOCAL +DEFAULT +11 sH8 +.* TLS +LOCAL +DEFAULT +10 sh1 +.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +DEFAULT +10 sh2 +.* TLS +LOCAL +DEFAULT +10 sh6 +.* TLS +GLOBAL +DEFAULT +10 sg8 +.* TLS +GLOBAL +DEFAULT +10 sg3 +.* TLS +GLOBAL +DEFAULT +10 sg4 +.* TLS +GLOBAL +DEFAULT +10 sg5 +.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL +DEFAULT +10 sg1 +.* FUNC +GLOBAL +DEFAULT +7 fn1 +.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start +.* TLS +GLOBAL +DEFAULT +10 sg2 +.* TLS +GLOBAL +DEFAULT +10 sg6 +.* TLS +GLOBAL +DEFAULT +10 sg7 +.* NOTYPE +GLOBAL +DEFAULT +ABS _edata +.* NOTYPE +GLOBAL +DEFAULT +ABS _end diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic.sd b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.sd new file mode 100644 index 0000000..7b03a08 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.sd @@ -0,0 +1,15 @@ +#source: tlspic1.s +#source: tlspic2.s +#as: +#ld: -shared +#objdump: -sj.got +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Contents of section .got: + 112d8 0+ 0+ 0+ 0+ .* + 112e8 0+ 0+ [0-9a-f]+ [0-9a-f]+ .* + 112f8 [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ .* + 11308 [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ .* + 11318 440+ 0+ [0-9a-f]+ [0-9a-f]+ .* diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic.td b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.td new file mode 100644 index 0000000..47b5b6c --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlspic.td @@ -0,0 +1,16 @@ +#source: tlspic1.s +#source: tlspic2.s +#as: +#ld: -shared +#objdump: -sj.tdata +#target: ia64-*-* + +.*: +file format elf..-ia64-.* + +Contents of section .tdata: + 11[0-9a-f]+ 11000000 12000000 13000000 14000000 .* + 11[0-9a-f]+ 15000000 16000000 17000000 18000000 .* + 11[0-9a-f]+ 41000000 42000000 43000000 44000000 .* + 11[0-9a-f]+ 45000000 46000000 47000000 48000000 .* + 11[0-9a-f]+ 01010000 02010000 03010000 04010000 .* + 11[0-9a-f]+ 05010000 06010000 07010000 08010000 .* diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic1.s b/binutils-2.21/ld/testsuite/ld-ia64/tlspic1.s new file mode 100644 index 0000000..5242d28 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/tlspic1.s @@ -0,0 +1,114 @@ + /* Force .data aligned to 4K, so .got very likely gets at 0x13190 + (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 + .explicit + .pred.safe_across_calls p1-p5,p16-p63 + /* Force .text aligned to 4K, so it very likely gets at 0x1000. */ + .text + .balign 4096 + .globl fn1# + .proc fn1# +fn1: + .prologue 12, 33 + .mib + .save ar.pfs, r34 + alloc r34 = ar.pfs, 0, 3, 2, 0 + .save rp, r33 + mov r33 = b0 + + /* GD */ + addl r14 = @ltoff(@dtpmod(sg1#)), gp + addl r15 = @ltoff(@dtprel(sg1#)), gp + ;; + ld8 out0 = [r14] + ld8 out1 = [r15] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* GD against hidden symbol */ + addl r14 = @ltoff(@dtpmod(sh2#)), gp + addl r15 = @ltoff(@dtprel(sh2#)), gp + ;; + ld8 out0 = [r14] + ld8 out1 = [r15] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* LD */ + addl r14 = @ltoff(@dtpmod(sl1#)), gp + addl out1 = @dtprel(sl1#) + 1, r0 + ;; + ld8 out0 = [r14] + br.call.sptk.many b0 = __tls_get_addr# + ;; + + /* LD with 4 variables variables */ + addl r14 = @ltoff(@dtpmod(sh1#)), gp + mov out1 = r0 + ;; + ld8 out0 = [r14] + br.call.sptk.many b0 = __tls_get_addr# + ;; + mov r2 = r8 + ;; + addl r14 = @dtprel(sh1#), r2 + addl r15 = @dtprel(sH1#) + 2, r2 + ;; + adds r14 = @dtprel(sh5#) + 3, r8 + movl r15 = @dtprel(sH5#) + 1 + ;; + add r15 = r15, r8 + ;; + + /* IE against global */ + addl r14 = @ltoff(@tprel(sg2#)), gp + ;; + ld8 r15 = [r14] + ;; + add r14 = r15, r13 + ;; + + /* IE against local and hidden */ + addl r14 = @ltoff(@tprel(sl2#)), gp + addl r15 = @ltoff(@tprel(sh2#)), gp + ;; + ld8 r14 = [r14] + ld8 r15 = [r15] + ;; + add r14 = r14, r13 + add r15 = r15, r13 + ;; + + mov ar.pfs = r34 + mov b0 = r33 + br.ret.sptk.many b0 + .endp fn1# diff --git a/binutils-2.21/ld/testsuite/ld-ia64/tlspic2.s b/binutils-2.21/ld/testsuite/ld-ia64/tlspic2.s new file mode 100644 index 0000000..5513f9b --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/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 diff --git a/binutils-2.21/ld/testsuite/ld-ia64/undefined.s b/binutils-2.21/ld/testsuite/ld-ia64/undefined.s new file mode 100644 index 0000000..d563c62 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ia64/undefined.s @@ -0,0 +1,152 @@ + .file "undefined.c" + .pred.safe_across_calls p1-p5,p16-p63 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .section .debug_info,"",@progbits +.Ldebug_info0: + .section .debug_line,"",@progbits +.Ldebug_line0: + .text +.Ltext0: + .align 16 + .global function# + .proc function# +function: +[.LFB2:] + .file 1 "undefined.c" + .loc 1 8 0 + .prologue 12, 32 + .mii + .save ar.pfs, r33 + alloc r33 = ar.pfs, 0, 3, 0, 0 + .save rp, r32 + mov r32 = b0 + mov r34 = r1 + .body + .loc 1 9 0 + ;; + .mib + nop 0 + nop 0 + br.call.sptk.many b0 = this_function_is_not_defined# + .loc 1 10 0 + ;; + .loc 1 9 0 + .mmi + nop 0 + mov r1 = r34 + .loc 1 10 0 + mov b0 = r32 + .mib + nop 0 + mov ar.pfs = r33 + br.ret.sptk.many b0 +.LFE2: + .endp function# +.Letext0: + .section .debug_info + data4.ua 0x4c + data2.ua 0x2 + data4.ua @secrel(.Ldebug_abbrev0) + data1 0x8 + .uleb128 0x1 + data4.ua @secrel(.Ldebug_line0) + data8.ua .Letext0 + data8.ua .Ltext0 + data4.ua @secrel(.LASF0) + data1 0x1 + data4.ua @secrel(.LASF1) + .uleb128 0x2 + data1 0x1 + data4.ua @secrel(.LASF2) + data1 0x1 + data1 0x8 + data4.ua 0x48 + data8.ua .LFB2 + data8.ua .LFE2 + data1 0x2 + data1 0x7c + .sleb128 16 + .uleb128 0x3 + stringz "int" + data1 0x4 + data1 0x5 + data1 0x0 + .section .debug_abbrev + .uleb128 0x1 + .uleb128 0x11 + data1 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 + data1 0x0 + data1 0x0 + .uleb128 0x2 + .uleb128 0x2e + data1 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 + data1 0x0 + data1 0x0 + .uleb128 0x3 + .uleb128 0x24 + data1 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + data1 0x0 + data1 0x0 + data1 0x0 + .section .debug_pubnames,"",@progbits + data4.ua 0x1b + data2.ua 0x2 + data4.ua @secrel(.Ldebug_info0) + data4.ua 0x50 + data4.ua 0x29 + stringz "function" + data4.ua 0x0 + .section .debug_aranges,"",@progbits + data4.ua 0x2c + data2.ua 0x2 + data4.ua @secrel(.Ldebug_info0) + data1 0x8 + data1 0x0 + data2.ua 0x0 + data2.ua 0x0 + data8.ua .Ltext0 + data8.ua .Letext0-.Ltext0 + data8.ua 0x0 + data8.ua 0x0 + .section .debug_str,"MS",@progbits,1 +.LASF0: + stringz "GNU C 4.1.2" +.LASF1: + stringz "undefined.c" +.LASF2: + stringz "function" |