# Run some tests of gas macros.

if { ![istarget hppa*-*-*] || [istarget *-*-linux*] } {
    run_dump_test test1
}

if { ![istarget *c54x*-*-*] && ![istarget *c4x*-*-*] } {
    run_dump_test test2
}

run_dump_test test3

if { ![istarget *c54x*-*-*] && ![istarget *c4x*-*-*] } {
    run_dump_test irp
    run_dump_test rept
    run_dump_test repeat
    run_dump_test vararg
}

gas_test_error "err.s" "" "macro infinite recursion"

# The tic4x-coff target fails the next test because it defines '&'
# as its line separator character, so the expression "(0 & TFLAG_C)"
# becomes divided up into two lines and the parser complains about
# a missing closing parenthesis for the first line.
setup_xfail "tic4x*-*"
gas_test "and.s" "" "" "logical and in macro definition"

case $target_triplet in {
    { hppa*-*-* } { if [istarget *-*-linux*] { run_dump_test semi } }
    { *c4x*-*-* } { }
    { *c54x*-*-* } { }
    default {
	run_dump_test semi
    }
}

if { ![istarget hppa*-*-*] || [istarget *-*-linux*] } {
    # FIXME: Due to macro mishandling of ONLY_STANDARD_ESCAPES.
    setup_xfail "avr-*" "cris-*" "crisv32-*" "msp430-*"

    # These fail due to NO_STRING_ESCAPES
    setup_xfail "powerpc*-*-aix*" "powerpc*-*-beos*" "powerpc*-*-macos*"
    setup_xfail "powerpc*-*-pe" "powerpc*-*-*win*"
    setup_xfail "rs6000-*-*"
    setup_xfail "z80-*-*"

    # FIXME: Due to difference in what "consecutive octets" means.
    setup_xfail "*c4x*-*-*" "*c54x*-*"
    run_dump_test strings
}

run_dump_test app1
run_dump_test app2
run_dump_test app3
remote_download host "$srcdir/$subdir/app4b.s"
run_dump_test app4

run_list_test badarg ""

case $target_triplet in {
    { *c54x*-*-* } { }
    { *c4x*-*-* } { }
    { mmix-* } { }
    { rx-*-* } { }
    default { run_list_test dot "-alm" }
}
run_list_test end ""
run_list_test purge "--hash-size=8000"
run_list_test redef ""

# This test is valid only when '!' is not a comment character
# (it is allowed to be a line comment character).
if [string match "" [lindex [gas_run ../all/excl.s "-o /dev/null" ""] 0]] {
    run_dump_test paren
}

# PR 58925: A .exitm pseudo-op outside of a macro definition
#  prevented the assembler from parsing the rest of the file,
#  and hence catching an erroroneous instruction.
gas_test_error "exit.s" "" ".exitm outside of a macro"
