summaryrefslogtreecommitdiffstats
path: root/binutils-2.21/ld/testsuite/ld-ia64
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-ia64')
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/ia64.exp64
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/line.exp57
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/link-order.d9
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/local1.d9
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/local1.map6
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/local1.s21
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge1.d10
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge1.s12
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge2.d10
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge2.s12
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge3.d13
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge3.s16
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge4.d13
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge4.s21
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge5.d16
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/merge5.s24
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbin.dd74
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbin.rd136
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbin.s54
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbin.sd15
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbin.td16
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsbinpic.s97
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsg.s14
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlsg.sd10
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlslib.s18
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic.dd64
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic.rd131
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic.sd15
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic.td16
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic1.s114
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/tlspic2.s11
-rw-r--r--binutils-2.21/ld/testsuite/ld-ia64/undefined.s152
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"