# Copyright (C) 1993, 1996, 1997 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:
# DejaGnu@cygnus.com

# Written by the Center for Software Science at the University of Utah
# and by Cygnus Support.

proc do_string_tests {} {
    set testname "stringer.s: Test embedded quotes and octal escapes in strings"
    set x 0

    gas_start "stringer.s" "-al"

    # Instead of having a variable for each match string just increment the
    # total number of matches seen.  That's simpler when testing large numbers
    # of instructions (as these tests to).
    while 1 {
	expect {
	    -re "^ +\[0-9\]+ 0000 23696E63\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+      6C756465\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+      6B2E6465\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+      66220A00\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0014 09307831\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+      3233\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "\[^\n\]*\n"				{ }
	    timeout				{ perror "timeout\n"; break }
	    eof					{ break }
	}
    }

    # This was intended to do any cleanup necessary.  It kinda looks like it
    # isn't needed, but just in case, please keep it in for now.
    gas_finish

    # Did we find what we were looking for?  If not, flunk it.
    if [expr $x==6] then { pass $testname } else { fail $testname }
}

proc do_lsel_test {} {
    set testname "lselbugs.s: lselbug"
    set x 0

    gas_start "lselbug.s" "-al"

    # Make sure we correctly handle field selectors. 
    while 1 {
	expect {
	    -re "^ +\[0-9\]+ 0000 22A04000\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0004 36B50100\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0008 22A04000\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 000c 36B50100\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "\[^\n\]*\n"				{ }
	    timeout				{ perror "timeout\n"; break }
	    eof					{ break }
	}
    }

    # This was intended to do any cleanup necessary.  It kinda looks like it
    # isn't needed, but just in case, please keep it in for now.
    gas_finish

    # Did we find what we were looking for?  If not, flunk it.
    if [expr $x==4] then { pass $testname } else { fail $testname }
}

proc do_valid_align_tests {} {
    set testname "align1.s: valid alignment tests"
    set x 0

    gas_start "align1.s" "-al"

    # Make sure we correctly handle field selectors. 
    while 1 {
	expect {
	    -re "^ +\[0-9\]+ 0000 08000240\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0008 08000240\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 1000 08000240\[^\n\]*\n"	{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0000\[^\n\]*BLOCK\[^\n\]*1024\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0400\[^\n\]*BLOCK\[^\n\]*1024\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0800\[^\n\]*BLOCK\[^\n\]*4\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0804\[^\n\]*ALIGN\[^\n\]*8\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0808\[^\n\]*BLOCK\[^\n\]*30\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0826\[^\n\]*ALIGN\[^\n\]*4\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "^ +\[0-9\]+ 0828\[^\n\]*BLOCK\[^\n\]*4\[^\n\]*\n"
		{ set x [expr $x+1] }
	    -re "\[^\n\]*\n"				{ }
	    timeout				{ perror "timeout\n"; break }
	    eof					{ break }
	}
    }

    # This was intended to do any cleanup necessary.  It kinda looks like it
    # isn't needed, but just in case, please keep it in for now.
    gas_finish

    # Did we find what we were looking for?  If not, flunk it.
    if [expr $x==10] then { pass $testname } else { fail $testname }
}

if [istarget hppa*-*-*] then {
    # GAS-2.0 does not always parse ! as a line separator when it should.
    gas_test "linesepbug.s" "" "" "line separator bug"

    # Make sure GAS accepts syntax for accessing static data.
    gas_test "global.s" "" "" "check for sym-\$global\$ acceptance"

    # GAS-2.0 (and 1.36 for that matter) can not handle a .proc which
    # has no label before it.
    gas_test "procbug.s" "" "" "Label following .proc"

    # One is required to explicitly IMPORT any non-local symbol used
    # in an assembly file.  Make sure we give an error if we use
    # an undefined symbol.
    setup_xfail hppa*-*-*
    gas_test_error "undefbug.s" "" "Check for error when using undefined symbol"

    # This file has code and assembler directives before switching into any
    # space/subspace pair.  This should report an error for SOM (it is not
    # an error for ELF.  The file also has mismatched entry/exit and
    # proc/procend pairs which are errors for both SOM and ELF.
    gas_test_error "nosubspace.s" "" "Check for error(s) in input file "

    # This file should return errors for both the ENTRY_GR and ENTRY_FR
    # directives (they are out-of-range)
    gas_test_error "entrybug.s" "" "Check for error on entry_gr and entry_fr"

    # Make sure embedded quotes and octal escapes in strings work
    do_string_tests

    # Make sure we do not die on a .version directive
    gas_test "versionbug.s" "" "" ".version directive"

    # Make sure we give an error on a bogus .space directive.
    # recent version of gas2 went into infinite loops printing
    # errors on this test.
    gas_test_error "spacebug.s" "" "Check for error on bogus .space directive"

    # GAS should give an error for this test.
    gas_test_error "calldatabug.s" "" "Check for invalid aguments on .call"

    # Old versions of gas incorrectly gave errors on some valid .EXPORT lines
    gas_test "exportbug.s" "" "" "syntax check for an old .EXPORT bug"

    # Old versions of gas choked on this file for some reason
    gas_test "fixup7bug.s" "" "" "check for old \"fixup7\" gas bug"

    # Test an L% selector parsing bug which existed in gas-1.36   
    do_lsel_test

    # First check how some valid alignments are handled.
    do_valid_align_tests

    # Now check to make sure an invalid argument is flagged as an error.
    gas_test_error "align2.s" "" "Check for error on bogus argument to .align"

    # GAS can't handle upper bound for a PA .block[z] directive
    setup_xfail hppa*-*-*
    gas_test "block1.s" "" "" "Check min/max values for .block"

    # Now check for an invalid argument
    gas_test_error "block2.s" "" "Check for error on bogus argument to .block"

    # GAS-1.36 choked on this file.
    # FIXME.  Should check relocations made for this test!
    gas_test "exprbug.s" "" "" "Check for sym1-sym2 acceptance"

    # Bad things happen in the PA ELF backend (others too?) if a non-default
    # section is created...
    setup_xfail "hppa*-*-*elf*" "hppa*-*-linux*" "hppa*64*-*-*"
    gas_test "ssbug.s" "" "" "Check for acceptance of non-default subspaces"

    # To be compatable with certain "features" of the HP compiler
    # non-existant registers should default to %r0.
    gas_test "defbug.s" "" "" "Missing register should default to %%r0"

    # Make sure GAS understands a reasonable set of standard predefined
    # registers.  eg %rp, %dp, %sp, etc.
    gas_test "stdreg.s" "" "" "Test standard predefined registers"

    # Make sure GAS will accept a label without a colon.
    setup_xfail "hppa*-*-linux*"
    gas_test "labelbug.s" "" "" "Test label without colon"

    # Make sure we grok # line directives.
    gas_test "appbug.s" "" "" "Test acceptance of #line directives"

    # Make sure we give errors if a floating point format is specified
    # for an xmpyu instruction (integer multiple)
    gas_test_error "xmpyubug.s" "" "Check for error on bogus argument to xmpyu"

    # Make sure gas handles various kinds of .reg pseudo-ops
    gas_test "regpopbug.s" "" "" "Test for bugs in .reg pseudo-op"

    # Check some bugs that have appeared in parsing .callinfo directives
    gas_test "callinfobug.s" "" "" "Test for bugs in .callinfo directive"

    # Check for bogus registers in single precision fmpyadd/fmpysub
    # instructions
    gas_test_error "badfmpyadd.s" "" "Check for error on bad fmpyadd insn"
}

