summaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2013-07-05 09:51:00 +0000
committerAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2013-07-05 09:51:00 +0000
commit5d7b63c30b4b5c98f7873280aed40268be76c217 (patch)
treefb8ffddc8ab9faebf9a8e272dc62459602aeeba5 /ld/testsuite
parent34d61b64e28d133b963a517256935c23506f3ba2 (diff)
downloadbinutils-redhat-5d7b63c30b4b5c98f7873280aed40268be76c217.tar.gz
2013-07-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
bfd/ * elf32-s390.c: Rewrite GOT accesses using larl if possible. * elf64-s390.c: Likewise. ld/testsuite/ * ld-s390/gotreloc-1.s: New file. * ld-s390/gotreloc-1.ver: New file. * ld-s390/gotreloc_31-1.dd: New file. * ld-s390/gotreloc_64-1.dd: New file. * ld-s390/s390.exp: Run the new tests. Run 31 bit tests also on 64 bit.
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-s390/gotreloc-1.s11
-rw-r--r--ld/testsuite/ld-s390/gotreloc-1.ver1
-rw-r--r--ld/testsuite/ld-s390/gotreloc_31-1.dd14
-rw-r--r--ld/testsuite/ld-s390/gotreloc_64-1.dd12
-rw-r--r--ld/testsuite/ld-s390/s390.exp11
5 files changed, 49 insertions, 0 deletions
diff --git a/ld/testsuite/ld-s390/gotreloc-1.s b/ld/testsuite/ld-s390/gotreloc-1.s
new file mode 100644
index 0000000000..b60d6c1381
--- /dev/null
+++ b/ld/testsuite/ld-s390/gotreloc-1.s
@@ -0,0 +1,11 @@
+ .text
+ .globl foo
+foo:
+ lgrl %r1,bar@GOTENT
+ lg %r1,bar@GOT(%r12)
+ lrl %r1,bar@GOTENT
+ l %r1,bar@GOT(%r12)
+ ly %r1,bar@GOT(%r12)
+
+.globl bar
+bar: .long 0x123
diff --git a/ld/testsuite/ld-s390/gotreloc-1.ver b/ld/testsuite/ld-s390/gotreloc-1.ver
new file mode 100644
index 0000000000..1cb06d6986
--- /dev/null
+++ b/ld/testsuite/ld-s390/gotreloc-1.ver
@@ -0,0 +1 @@
+{ local: bar; };
diff --git a/ld/testsuite/ld-s390/gotreloc_31-1.dd b/ld/testsuite/ld-s390/gotreloc_31-1.dd
new file mode 100644
index 0000000000..4df4aa55b2
--- /dev/null
+++ b/ld/testsuite/ld-s390/gotreloc_31-1.dd
@@ -0,0 +1,14 @@
+
+tmpdir/gotreloc_31-1: file format elf32-s390
+
+Disassembly of section .text:
+
+.* <foo>:
+.*: c4 18 00 00 .long 0xc4180000
+.*: 08 4e e3 10 .long 0x084ee310
+.*: c0 0c 00 04 .long 0xc00c0004
+.*: c0 10 00 00 00 08 [ ]*larl %r1,168 <bar>
+.*: 58 10 c0 0c [ ]*l %r1,12\(%r12\)
+.*: c0 10 00 00 00 03 [ ]*larl %r1,168 <bar>
+.* <bar>:
+.*: 00 00 01 23 .long 0x00000123
diff --git a/ld/testsuite/ld-s390/gotreloc_64-1.dd b/ld/testsuite/ld-s390/gotreloc_64-1.dd
new file mode 100644
index 0000000000..8c8c619edf
--- /dev/null
+++ b/ld/testsuite/ld-s390/gotreloc_64-1.dd
@@ -0,0 +1,12 @@
+tmpdir/gotreloc_64-1: file format elf64-s390
+
+Disassembly of section .text:
+
+.* <foo>:
+.*: c0 10 00 00 00 0e [ ]*larl %r1,.* <bar>
+.*: c0 10 00 00 00 0b [ ]*larl %r1,.* <bar>
+.*: c4 1d 00 00 08 86 [ ]*lrl %r1,.* <_GLOBAL_OFFSET_TABLE_\+0x18>
+.*: 58 10 c0 18 [ ]*l %r1,24\(%r12\)
+.*: e3 10 c0 18 00 58 [ ]*ly %r1,24\(%r12\)
+.* <bar>:
+.*: 00 00 01 23 .long 0x00000123
diff --git a/ld/testsuite/ld-s390/s390.exp b/ld/testsuite/ld-s390/s390.exp
index 34c5b3336c..1ac11c7400 100644
--- a/ld/testsuite/ld-s390/s390.exp
+++ b/ld/testsuite/ld-s390/s390.exp
@@ -48,6 +48,11 @@ set s390tests {
{{readelf -Ssrl tlsbin.rd} {objdump -dzrj.text tlsbin.dd}
{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
"tlsbin"}
+ {"GOT: symbol address load from got to larl"
+ "-shared -melf_s390 --version-script=gotreloc-1.ver" ""
+ "-m31" {gotreloc-1.s}
+ {{objdump -dzrj.text gotreloc_31-1.dd}}
+ "gotreloc_31-1"}
}
set s390xtests {
@@ -64,6 +69,11 @@ set s390xtests {
{{readelf -WSsrl tlsbin_64.rd} {objdump -dzrj.text tlsbin_64.dd}
{objdump -sj.got tlsbin_64.sd} {objdump -sj.tdata tlsbin_64.td}}
"tlsbin_64"}
+ {"GOT: symbol address load from got to larl"
+ "-shared -melf64_s390 --version-script=gotreloc-1.ver" ""
+ "-m64" {gotreloc-1.s}
+ {{objdump -dzrj.text gotreloc_64-1.dd}}
+ "gotreloc_64-1"}
}
if [istarget "s390-*-*"] {
@@ -71,5 +81,6 @@ if [istarget "s390-*-*"] {
}
if [istarget "s390x-*-*"] {
+ run_ld_link_tests $s390tests
run_ld_link_tests $s390xtests
}