aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.disasm
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.disasm')
-rw-r--r--gdb/testsuite/gdb.disasm/.Sanitize26
-rw-r--r--gdb/testsuite/gdb.disasm/configure.in3
-rw-r--r--gdb/testsuite/gdb.disasm/sh3.exp125
-rw-r--r--gdb/testsuite/gdb.disasm/sh3.mt5
-rw-r--r--gdb/testsuite/gdb.disasm/sh3.s54
5 files changed, 212 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.disasm/.Sanitize b/gdb/testsuite/gdb.disasm/.Sanitize
index 0fab3f2..21d98ce 100644
--- a/gdb/testsuite/gdb.disasm/.Sanitize
+++ b/gdb/testsuite/gdb.disasm/.Sanitize
@@ -30,11 +30,35 @@ hppa.mt
hppa.s
Things-to-lose:
-
+sh3.exp
+sh3.mt
+sh3.s
# The lines between the "Do-last:" line and the end of the file
# are executed as a /bin/sh shell script after everything else is
# done.
Do-last:
+
+sh3e_files="configure.in"
+if ( echo $* | grep keep\-sh3e > /dev/null ) ; then
+ if [ -n "${verbose}" ] ; then
+ echo Keeping sh3e stuff in $sh3e_files.
+ fi
+else
+ if [ -n "${verbose}" ]; then
+ echo -n Cleaning sh3e in `pwd`:
+ fi
+ for f in $sh3e_files ; do
+ if [ -n "${verbose}" ] ; then
+ echo -n " " $f
+ fi
+ sed -e '/start\-sanitize\-sh3e/,/end\-sanitize\-sh3e/d' -e '/ xl /d' < $f > new
+ if [ -n "${safe}" ] ; then
+ mv $f .Recover
+ fi
+ mv new $f
+ done
+fi
+
# eof
diff --git a/gdb/testsuite/gdb.disasm/configure.in b/gdb/testsuite/gdb.disasm/configure.in
index 76e6618..f8d95fd 100644
--- a/gdb/testsuite/gdb.disasm/configure.in
+++ b/gdb/testsuite/gdb.disasm/configure.in
@@ -13,5 +13,8 @@ srcname="gdb.disasm"
case "${target}" in
hppa*-*-*) target_makefile_frag=hppa.mt ;;
+# start-sanitize-sh3e
+sh*-*-*) target_makefile_frag=sh3.mt ;;
+# end-sanitize-sh3e
esac
diff --git a/gdb/testsuite/gdb.disasm/sh3.exp b/gdb/testsuite/gdb.disasm/sh3.exp
new file mode 100644
index 0000000..f8c2053
--- /dev/null
+++ b/gdb/testsuite/gdb.disasm/sh3.exp
@@ -0,0 +1,125 @@
+# Copyright (C) 1992 Free Software Foundation, Inc.
+
+# 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+# This file was written by Jeff Law. (law@cs.utah.edu)
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "sh3"
+set srcfile $binfile.s
+
+proc all_fp_move_and_load_tests { } {
+ global prompt
+ global hex
+ global decimal
+
+ send "x/9i fp_move_and_load_tests\n"
+ expect {
+ -re "
+.*fmov.s\t@r0,fr0.*
+.*fmov.s\tfr0,@r0.*
+.*fmov.s\t@r0\\+,fr0.*
+.*fmov.s\tfr0,@-r0.*
+.*fmov.s\t@\\(r0,r0\\),fr0.*
+.*fmov.s\tfr0,@\\(r0,r0\\).*
+.*fmov\tfr0,fr1.*
+.*fldi0\tfr0.*
+.*fldi1\tfr0.*
+.*$prompt $" { pass "fp_move_and_load_tests" }
+ -re "$prompt $" { fail "fp_move_and_load_tests" }
+ timeout { fail "(timeout) fp_move_and_load_tests" }
+ }
+}
+
+proc all_fp_arithmetic_tests { } {
+ global prompt
+ global hex
+ global decimal
+
+ send "x/13i fp_arithmetic_tests\n"
+ expect {
+ -re "
+.*fadd\tfr0,fr1.*
+.*fsub\tfr0,fr1.*
+.*fmul\tfr0,fr1.*
+.*fdiv\tfr0,fr1.*
+.*fmac\tfr0,fr1.*
+.*fcmp/eq\tfr0,fr1.*
+.*fcmp/gt\tfr0,fr1.*
+.*ftst/nan\tfr0.*
+.*fneg\tfr0.*
+.*fabs\tfr0.*
+.*fsqrt\tfr0.*
+.*float\tfpul,fr0.*
+.*ftrc\tfr0,fpul.*
+.*$prompt $" { pass "fp_arithmetic_tests" }
+ -re "$prompt $" { fail "fp_arithmetic_tests" }
+ timeout { fail "(timeout) fp_arithmetic_tests" }
+ }
+}
+
+proc all_fp_misc_tests { } {
+ global prompt
+ global hex
+ global decimal
+
+ send "x/10i fp_misc_tests\n"
+ expect {
+ -re "
+.*fsts\tfpul,fr0.*
+.*flds\tfr0,fpul.*
+.*lds\tr3,fpul.*
+.*lds\\.l\t@r3\\+,fpul.*
+.*lds\tr3,fpscr.*
+.*lds\\.l\t@r3\\+,fpscr.*
+.*sts\tfpul,r3.*
+.*sts\\.l\tfpul,@-r3.*
+.*sts\tfpscr,r3.*
+.*sts\\.l\tfpscr,@-r3.*
+.*$prompt $" { pass "fp_misc_tests" }
+ -re "$prompt $" { fail "fp_misc_tests" }
+ timeout { fail "(timeout) fp_misc_tests" }
+ }
+}
+
+if ![file exists $objdir/$subdir/$binfile] then {
+ if $all_flag then {
+ warning "$objdir/$subdir/$binfile does not exist; tests suppressed"
+ }
+} else {
+ # Start with a fresh gdb.
+
+ gdb_exit
+ gdb_start
+ gdb_reinitialize_dir $srcdir/$subdir
+ gdb_load $objdir/$subdir/$binfile
+
+ all_fp_move_and_load_tests
+ all_fp_arithmetic_tests
+
+ # SH3E V1.6 manual doesn't have the right bit patterns for some of
+ # the new insns, so we don't know how to assemble them correctly.
+ setup_xfail "sh*-*-*"
+ all_fp_misc_tests
+}
diff --git a/gdb/testsuite/gdb.disasm/sh3.mt b/gdb/testsuite/gdb.disasm/sh3.mt
new file mode 100644
index 0000000..fa79d8c
--- /dev/null
+++ b/gdb/testsuite/gdb.disasm/sh3.mt
@@ -0,0 +1,5 @@
+EXECUTABLES = sh3
+sh3: sh3.s
+ $(CC) -c $(srcdir)/sh3.s
+ $(CC) -o sh3 sh3.o
+
diff --git a/gdb/testsuite/gdb.disasm/sh3.s b/gdb/testsuite/gdb.disasm/sh3.s
new file mode 100644
index 0000000..7b7a52e
--- /dev/null
+++ b/gdb/testsuite/gdb.disasm/sh3.s
@@ -0,0 +1,54 @@
+ .file "test.c"
+ .data
+
+! Hitachi SH cc1 (cygnus-2.7.1-950728) arguments: -O -fpeephole
+! -ffunction-cse -freg-struct-return -fdelayed-branch -fcommon -fgnu-linker
+
+gcc2_compiled.:
+___gnu_compiled_c:
+ .text
+ .align 2
+ .global _fp_move_and_load_tests
+ .global _fp_arithmetic_tests
+ .global _fp_misc_tests
+ .global _main
+
+_main:
+_fp_move_and_load_tests:
+ fmov.s @r0,fr0
+ fmov.s fr0,@r0
+ fmov.s @r0+,fr0
+ fmov.s fr0,@-r0
+ fmov.s @(r0,r0),fr0
+ fmov.s fr0,@(r0,r0)
+ fmov fr0,fr1
+ fldi0 fr0
+ fldi1 fr0
+
+_fp_arithmetic_tests:
+ fadd fr0,fr1
+ fsub fr0,fr1
+ fmul fr0,fr1
+ fdiv fr0,fr1
+ fmac fr0,fr1
+ fcmp/eq fr0,fr1
+ fcmp/gt fr0,fr1
+ ftst/nan fr0
+ fneg fr0
+ fabs fr0
+ fsqrt fr0
+ float fpul,fr0
+ ftrc fr0,fpul
+
+_fp_misc_tests:
+ fsts fpul,fr0
+ flds fr0,fpul
+ lds r3,fpul
+ lds.l @r3+,fpul
+ lds r3,fpscr
+ lds.l @r3+,fpscr
+ sts fpul,r3
+ sts.l fpul,@-r3
+ sts fpscr,r3
+ sts.l fpscr,@-r3
+