aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ChangeLog8
-rw-r--r--ld/testsuite/ld-arm/arm-dyn.ld2
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp6
-rw-r--r--ld/testsuite/ld-arm/arm-lib.ld2
-rw-r--r--ld/testsuite/ld-arm/tls-app.d18
-rw-r--r--ld/testsuite/ld-arm/tls-app.r12
-rw-r--r--ld/testsuite/ld-arm/tls-app.s34
-rw-r--r--ld/testsuite/ld-arm/tls-lib.d15
-rw-r--r--ld/testsuite/ld-arm/tls-lib.r10
-rw-r--r--ld/testsuite/ld-arm/tls-lib.s22
10 files changed, 127 insertions, 2 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 9ae7391..cd9ca63 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2005-03-29 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * ld-arm/tls-lib.s, ld-arm/tls-lib.d, ld-arm/tls-lib.r,
+ ld-arm/tls-app.s, ld-arm/tls-app.d, ld-arm/tls-app.r: New files.
+ * ld-arm/arm-lib.ld, ld-arm/arm-dyn.ld: Increase data segment
+ alignment.
+ * ld-arm/arm-elf.exp: Run TLS tests.
+
2005-03-28 H.J. Lu <hongjiu.lu@intel.com>
PR 803
diff --git a/ld/testsuite/ld-arm/arm-dyn.ld b/ld/testsuite/ld-arm/arm-dyn.ld
index 20b9613..96bc10c 100644
--- a/ld/testsuite/ld-arm/arm-dyn.ld
+++ b/ld/testsuite/ld-arm/arm-dyn.ld
@@ -76,7 +76,7 @@ SECTIONS
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
- . = ALIGN(256) + (. & (256 - 1));
+ . = ALIGN (0x8000) - ((0x8000 - .) & (0x8000 - 1)); . = DATA_SEGMENT_ALIGN (0x8000, 0x1000);
/* Exception handling */
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 3e747ca..1a0e5b9 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -75,6 +75,12 @@ set armelftests {
{"arm-rel31" "-static -T arm.ld" "" {arm-rel31.s}
{{objdump -s arm-rel31.d}}
"arm-rel31"}
+ {"TLS shared library" "-shared -T arm-lib.ld" "" {tls-lib.s}
+ {{objdump -fdw tls-lib.d} {objdump -Rw tls-lib.r}}
+ "tls-lib.so"}
+ {"TLS dynamic application" "-T arm-dyn.ld tmpdir/tls-lib.so" "" {tls-app.s}
+ {{objdump -fdw tls-app.d} {objdump -Rw tls-app.r}}
+ "tls-app"}
}
run_ld_link_tests $armelftests
diff --git a/ld/testsuite/ld-arm/arm-lib.ld b/ld/testsuite/ld-arm/arm-lib.ld
index 075eaa4..0415d20 100644
--- a/ld/testsuite/ld-arm/arm-lib.ld
+++ b/ld/testsuite/ld-arm/arm-lib.ld
@@ -75,7 +75,7 @@ SECTIONS
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
- . = ALIGN(256) + (. & (256 - 1));
+ . = ALIGN (0x8000) - ((0x8000 - .) & (0x8000 - 1)); . = DATA_SEGMENT_ALIGN (0x8000, 0x1000);
/* Exception handling */
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
diff --git a/ld/testsuite/ld-arm/tls-app.d b/ld/testsuite/ld-arm/tls-app.d
new file mode 100644
index 0000000..7f486ef
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-app.d
@@ -0,0 +1,18 @@
+
+.*: file format elf32-.*arm
+architecture: arm, flags 0x00000112:
+EXEC_P, HAS_SYMS, D_PAGED
+start address 0x00008274
+
+Disassembly of section .text:
+
+00008274 <foo>:
+ 8274: e1a00000 nop \(mov r0,r0\)
+ 8278: e1a00000 nop \(mov r0,r0\)
+ 827c: e1a0f00e mov pc, lr
+ 8280: 000080bc streqh r8, \[r0\], -ip
+ 8284: 000080b4 streqh r8, \[r0\], -r4
+ 8288: 000080ac andeq r8, r0, ip, lsr #1
+ 828c: 00000004 andeq r0, r0, r4
+ 8290: 000080c4 andeq r8, r0, r4, asr #1
+ 8294: 00000014 andeq r0, r0, r4, lsl r0
diff --git a/ld/testsuite/ld-arm/tls-app.r b/ld/testsuite/ld-arm/tls-app.r
new file mode 100644
index 0000000..3f02397
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-app.r
@@ -0,0 +1,12 @@
+
+.*: file format elf32-.*arm
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+00010334 R_ARM_TLS_DTPMOD32 app_gd
+00010338 R_ARM_TLS_DTPOFF32 app_gd
+0001033c R_ARM_TLS_DTPMOD32 lib_gd
+00010340 R_ARM_TLS_DTPOFF32 lib_gd
+00010344 R_ARM_TLS_TPOFF32 app_ie
+
+
diff --git a/ld/testsuite/ld-arm/tls-app.s b/ld/testsuite/ld-arm/tls-app.s
new file mode 100644
index 0000000..d505295
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-app.s
@@ -0,0 +1,34 @@
+ .text
+ .globl foo
+ .type foo, %function
+foo:
+ nop
+.L2:
+ nop
+ mov pc, lr
+
+.Lpool:
+ .word lib_gd(tlsgd) + (. - .L2 - 8)
+ .word app_gd(tlsgd) + (. - .L2 - 8)
+ .word app_ld(tlsldm) + (. - .L2 - 8)
+ .word app_ld(tlsldo)
+ .word app_ie(gottpoff) + (. - .L2 - 8)
+ .word app_le(tpoff)
+
+ .section .tdata,"awT"
+ .global app_gd
+app_gd:
+ .space 4
+
+ .global app_ld
+app_ld:
+ .space 4
+
+ .section .tbss,"awT",%nobits
+ .global app_ie
+app_ie:
+ .space 4
+
+ .global app_le
+app_le:
+ .space 4
diff --git a/ld/testsuite/ld-arm/tls-lib.d b/ld/testsuite/ld-arm/tls-lib.d
new file mode 100644
index 0000000..0492877
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-lib.d
@@ -0,0 +1,15 @@
+
+.*: file format elf32-.*arm
+architecture: arm, flags 0x00000150:
+HAS_SYMS, DYNAMIC, D_PAGED
+start address 0x.*
+
+Disassembly of section .text:
+
+00000328 <foo>:
+ 328: e1a00000 nop \(mov r0,r0\)
+ 32c: e1a00000 nop \(mov r0,r0\)
+ 330: e1a0f00e mov pc, lr
+ 334: 00008098 muleq r0, r8, r0
+ 338: 0000808c andeq r8, r0, ip, lsl #1
+ 33c: 00000004 andeq r0, r0, r4
diff --git a/ld/testsuite/ld-arm/tls-lib.r b/ld/testsuite/ld-arm/tls-lib.r
new file mode 100644
index 0000000..c0bf4bf
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-lib.r
@@ -0,0 +1,10 @@
+
+.*: file format elf32-.*arm
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+000083c4 R_ARM_TLS_DTPMOD32 \*ABS\*
+000083cc R_ARM_TLS_DTPMOD32 lib_gd
+000083d0 R_ARM_TLS_DTPOFF32 lib_gd
+
+
diff --git a/ld/testsuite/ld-arm/tls-lib.s b/ld/testsuite/ld-arm/tls-lib.s
new file mode 100644
index 0000000..fa928c0
--- /dev/null
+++ b/ld/testsuite/ld-arm/tls-lib.s
@@ -0,0 +1,22 @@
+ .text
+ .globl foo
+ .type foo, %function
+foo:
+ nop
+.L2:
+ nop
+ mov pc, lr
+
+.Lpool:
+ .word lib_gd(tlsgd) + (. - .L2 - 8)
+ .word lib_ld(tlsldm) + (. - .L2 - 8)
+ .word lib_ld(tlsldo)
+
+ .section .tdata,"awT"
+ .global lib_gd
+lib_gd:
+ .space 4
+
+ .global lib_ld
+lib_ld:
+ .space 4