aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-m68k/m68k-got.exp
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2008-07-11 17:19:00 +0000
committerH.J. Lu <hjl.tools@gmail.com>2008-07-11 17:19:00 +0000
commit851b0ff7c6dbfc792aeb32a0953d4445d7e5f964 (patch)
tree05ad545f9ebe436209034ae812df44c4be8ba754 /ld/testsuite/ld-m68k/m68k-got.exp
parent14032a66f195a775441d5c9ec66fe36a8e54d635 (diff)
downloadgdb-851b0ff7c6dbfc792aeb32a0953d4445d7e5f964.zip
gdb-851b0ff7c6dbfc792aeb32a0953d4445d7e5f964.tar.gz
gdb-851b0ff7c6dbfc792aeb32a0953d4445d7e5f964.tar.bz2
2008-07-11 H.J. Lu <hongjiu.lu@intel.com>
* ld-m68k/got-12.s: Removed. * ld-m68k/got-13.s: Likewise. * ld-m68k/got-14.s: Likewise. * ld-m68k/got-15.s: Likewise. * ld-m68k/got-34.s: Likewise. * ld-m68k/got-35.s: Likewise. * ld-m68k/xgot-15.s: Likewise. * ld-m68k/got-multigot-12-13-14-34-35-ok.d: Remove #source and expected relocations. * ld-m68k/got-multigot-14-ok.d: Likewise. * ld-m68k/got-negative-12-13-14-34-ok.d: Likewise. * ld-m68k/got-negative-14-ok.d: Likewise. * ld-m68k/got-single-12-ok.d: Likewise. * ld-m68k/got-xgot-12-13-14-15-34-35-ok.d: Likewise. * ld-m68k/got-xgot-15-ok.d: Likewise. * ld-m68k/got-multigot-15-er.d: Remove #source. * ld-m68k/got-negative-12-13-14-35-er.d: Likewise. * ld-m68k/got-negative-15-er.d: Likewise. * ld-m68k/got-single-13-er.d: Likewise. * ld-m68k/m68k.exp: Move GOT tests to ... * ld-m68k/m68k-got.exp: This. New.
Diffstat (limited to 'ld/testsuite/ld-m68k/m68k-got.exp')
-rw-r--r--ld/testsuite/ld-m68k/m68k-got.exp250
1 files changed, 250 insertions, 0 deletions
diff --git a/ld/testsuite/ld-m68k/m68k-got.exp b/ld/testsuite/ld-m68k/m68k-got.exp
new file mode 100644
index 0000000..4902eac
--- /dev/null
+++ b/ld/testsuite/ld-m68k/m68k-got.exp
@@ -0,0 +1,250 @@
+# Expect script for run_dump_test based ld-m68k GOT tests.
+# Copyright 008 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 { ![is_elf_format] || ![istarget m68k-*-*] } {
+ return
+}
+
+# 1 - 1
+# 2 - 8189
+# 3 - 8190
+# 4 - 16384
+# 5 - 16385
+
+proc gen_got_test { testname } {
+ global srcdir
+ global subdir
+
+ if [catch { set ofd [open "tmpdir/$testname.s" w] } msg] {
+ perror "$msg"
+ unresolved $testname
+ return
+ }
+
+ switch -- $testname {
+ "got-12" {
+ set start 1
+ set count 8189
+ set xgot 0
+ }
+ "got-13" {
+ set start 1
+ set count 8190
+ set xgot 0
+ }
+ "got-14" {
+ set start 1
+ set count 16384
+ set xgot 0
+ }
+ "got-15" {
+ set start 1
+ set count 16385
+ set xgot 0
+ }
+ "got-34" {
+ set start 8190
+ set count 16384
+ set xgot 0
+ }
+ "got-35" {
+ set start 8190
+ set count 16385
+ set xgot 0
+ }
+ "xgot-15" {
+ set start 1
+ set count 16385
+ set xgot 1
+ }
+ }
+
+ set func [format "sum_%05d_%05d" $start $count]
+ puts $ofd "\t.text"
+ puts $ofd "\t.align 2"
+ puts $ofd "\t.globl $func"
+ puts $ofd "\t.type $func,@function"
+ puts $ofd "$func:"
+ puts $ofd "\tlink.w %fp,#0"
+ puts $ofd "\tmove.l %a5,-(%sp)"
+ puts $ofd "\tmove.l #_GLOBAL_OFFSET_TABLE_@GOTPC, %a5"
+ puts $ofd "\tlea (-6, %pc, %a5), %a5"
+
+ if { $xgot == 1 } {
+ set symbol [format "a%05d" $start]
+ incr start
+ puts $ofd "\tlea $symbol@GOT,%a0"
+ puts $ofd "\tadd.l %a5,%a0"
+ puts $ofd "\tmove.l (%a0),%a0"
+ puts $ofd "\tmove.l (%a0),%d1"
+ for { set i $start } { $i < $count } { incr i } {
+ set symbol [format "a%05d" $i]
+ puts $ofd "\tlea $symbol@GOT,%a0"
+ puts $ofd "\tadd.l %a5,%a0"
+ puts $ofd "\tmove.l (%a0),%a0"
+ puts $ofd "\tmove.l (%a0),%d0"
+ puts $ofd "\tadd.l %d0,%d1"
+ }
+ set symbol [format "a%05d" $count]
+ puts $ofd "\tlea $symbol@GOT,%a0"
+ puts $ofd "\tadd.l %a5,%a0"
+ puts $ofd "\tmove.l (%a0),%a0"
+ puts $ofd "\tmove.l (%a0),%d0"
+ puts $ofd "\tadd.l %d1,%d0"
+ } else {
+ set symbol [format "a%05d" $start]
+ incr start
+ puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
+ puts $ofd "\tmove.l %d0,%a0"
+ puts $ofd "\tmove.l (%a0),%d1"
+ for { set i $start } { $i < $count } { incr i } {
+ set symbol [format "a%05d" $i]
+ puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
+ puts $ofd "\tmove.l %d0,%a0"
+ puts $ofd "\tmove.l (%a0),%d0"
+ puts $ofd "\tadd.l %d0,%d1"
+ }
+ set symbol [format "a%05d" $count]
+ puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
+ puts $ofd "\tmove.l %d0,%a0"
+ puts $ofd "\tmove.l (%a0),%d0"
+ puts $ofd "\tadd.l %d1,%d0"
+ }
+
+ puts $ofd "\tmove.l (%sp)+,%a5"
+ puts $ofd "\tunlk %fp"
+ puts $ofd "\trts"
+ puts $ofd "\t.size $func, .-$func"
+
+ close $ofd
+}
+
+proc got_test { testname } {
+ global srcdir
+ global subdir
+ global objdir
+
+ if [catch { set ifd [open "$srcdir/$subdir/$testname.d" r] } msg] {
+ perror "$msg"
+ unresolved $testname
+ return
+ }
+ if [catch { set ofd [open "tmpdir/$testname.d" w] } msg] {
+ perror "$msg"
+ unresolved $testname
+ return
+ }
+
+ switch -- $testname {
+ "got-single-12-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-12.s"
+ set count 8189
+ }
+ "got-single-13-er" {
+ puts $ofd "#source: $objdir/tmpdir/got-13.s"
+ set count 0
+ }
+ "got-negative-14-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ set count 16384
+ }
+ "got-negative-15-er" {
+ puts $ofd "#source: $objdir/tmpdir/got-15.s"
+ set count 0
+ }
+ "got-negative-12-13-14-34-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-12.s"
+ puts $ofd "#source: $objdir/tmpdir/got-13.s"
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ puts $ofd "#source: $objdir/tmpdir/got-34.s"
+ set count 16384
+ }
+ "got-negative-12-13-14-35-er" {
+ puts $ofd "#source: $objdir/tmpdir/got-12.s"
+ puts $ofd "#source: $objdir/tmpdir/got-13.s"
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ puts $ofd "#source: $objdir/tmpdir/got-35.s"
+ set count 0
+ }
+ "got-multigot-14-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ set count 16384
+ }
+ "got-multigot-15-er" {
+ puts $ofd "#source: $objdir/tmpdir/got-15.s"
+ set count 0
+ }
+ "got-multigot-12-13-14-34-35-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-12.s"
+ puts $ofd "#source: $objdir/tmpdir/got-13.s"
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ puts $ofd "#source: $objdir/tmpdir/got-34.s"
+ puts $ofd "#source: $objdir/tmpdir/got-35.s"
+ set count 24580
+ }
+ "got-xgot-15-ok" {
+ puts $ofd "#source: $objdir/tmpdir/xgot-15.s"
+ set count 16385
+ }
+ "got-xgot-12-13-14-15-34-35-ok" {
+ puts $ofd "#source: $objdir/tmpdir/got-12.s"
+ puts $ofd "#source: $objdir/tmpdir/got-13.s"
+ puts $ofd "#source: $objdir/tmpdir/got-14.s"
+ puts $ofd "#source: $objdir/tmpdir/xgot-15.s"
+ puts $ofd "#source: $objdir/tmpdir/got-34.s"
+ puts $ofd "#source: $objdir/tmpdir/got-35.s"
+ set count 24581
+ }
+ }
+
+ while { [gets $ifd line] != -1 } {
+ puts $ofd $line
+ }
+
+ for { set i 0 } { $i < $count } { incr i } {
+ puts $ofd "^\[0-9a-f\]+ \[0-9a-f\]+ R_68K_GLOB_DAT 00000000 a\[0-9\]+ \\\+ 0"
+ }
+
+ close $ifd
+ close $ofd
+ run_dump_test "tmpdir/$testname"
+}
+
+gen_got_test got-12
+gen_got_test got-13
+gen_got_test got-14
+gen_got_test got-15
+gen_got_test got-34
+gen_got_test got-35
+gen_got_test xgot-15
+
+run_dump_test "got-1"
+got_test "got-single-12-ok"
+got_test "got-single-13-er"
+got_test "got-negative-14-ok"
+got_test "got-negative-15-er"
+got_test "got-negative-12-13-14-34-ok"
+got_test "got-negative-12-13-14-35-er"
+got_test "got-multigot-14-ok"
+got_test "got-multigot-15-er"
+got_test "got-multigot-12-13-14-34-35-ok"
+got_test "got-xgot-15-ok"
+got_test "got-xgot-12-13-14-15-34-35-ok"