diff options
Diffstat (limited to 'gdb/testsuite/gdb.disasm')
-rw-r--r-- | gdb/testsuite/gdb.disasm/.Sanitize | 26 | ||||
-rw-r--r-- | gdb/testsuite/gdb.disasm/configure.in | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.disasm/sh3.exp | 125 | ||||
-rw-r--r-- | gdb/testsuite/gdb.disasm/sh3.mt | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.disasm/sh3.s | 54 |
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 + |