]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gas/testsuite/gas/template
Fix an assertion failure in the AArch64 assembler triggered by incorrect instruction...
[thirdparty/binutils-gdb.git] / gas / testsuite / gas / template
CommitLineData
252b5132
RH
1#
2# This is sort of a prototype test case, which parses the listing output
3# from the assembler. Later, more prototypes should be added for cases
4# where objdump gets run over the .o file, and anything else like that...
5#
6# When you write a test case that uses the listing output, just copy this
7# file (trimming down the overly-verbose comments a little), and
8# adjust it to do what you need.
9#
10# Remember that any ".exp" file found in the tree will be processed by
11# dejagnu.
12
13#
14# FIRST SAMPLE TEST CASE
15#
16
17proc do_foo {} {
18# This string is used below when printing out a success or failure message.
19# If more than one test is run by a given .exp file, it'd be nice to include
20# the name of the input file.
21 set testname "foo.s: multi-register tweaking and frobnication"
22
23# I use this as a flag to record whether the test case passed. If this
24# flag is still clear when EOF is reached, this test fails. If there are
25# two or more patterns, and I need to see all of them, I'll create N variables
26# and check if the sum is N.
27 set x 0
28
29# Call gas_start with two arguments: The input file name (which it'll search
30# for in $srcdir/$subdir, that is, the source directory where the .exp file
31# is), and a (possibly empty) string of options to pass to the assembler.
32 gas_start "foo.s" "-al"
33
34# Now I just iterate over all the output lines, looking for what I want
35# to see. Since each pattern explicitly will not span line breaks, there's
36# also a pattern for lines that don't match anything else. (Is it safe to
37# use ".*" for patterns not crossing line breaks? I don't think "$" does the
38# right thing for that, in any case. I should check into whether the extra
39# pattern is even needed.
40
41# Apparently CRLF is received when using ptys for subprocesses; hence the
42# \r\n for matching line number 3.
43
44# Note that if you use "{ ... }" for the expect clause, you can't have
45# comments inside it.
46
47# This test case is kinda bogus in that seeing either a word of all zeros
48# at address zero or a C-style comment on line three that says "Looking for
49# C comments" (with very specific punctuation and whitespace) will cause
50# it to pass this test. Usually
51 while 1 {
52 expect {
53 -re "^ +\[0-9\]+ 0000 00000000\[^\n\]*\n" { set x 1 }
54 -re "^ +3\[ \t\]+/. Looking for C comments. ./\r\n" { set x 1 }
55 -re "\[^\n\]*\n" { }
56 timeout { perror "timeout\n"; break }
57 eof { break }
58 }
59 }
60# This was intended to do any cleanup necessary. It kinda looks like it isn't
61# needed, but just in case, please keep it in for now.
62 gas_finish
63
64# Did we find what we were looking for? If not, flunk it.
65 if $x then { pass $testname } else { fail $testname }
66}
67
68# Now actually run the test. It can be conditionalized if the test is
69# not appropriate for all targets. The proc "istarget" checks a generalized
70# form of the target name, so that (e.g.) "m68332-unknown-aout" would match
71# here. So far, I think only the CPU name is actually ever altered.
72if [istarget m68k-*] then {
73 do_foo
74}
75
76
77
78
79#
80# SECOND SAMPLE TEST CASE
81#
82
83# This is a tiny bit like the C compiler torture tests, in that it'll run
84# the assembler with the power set of the list of options supplied.
85#
86# The first argument is the test file name; the second is arguments that
87# are always to be provided; the third is a space-separated list of options
88# which are optional (ending in ">" if output should be ignored, like "-a>");
89# the fourth is the name of the test. So far, only binary options are handled
90# this way; N-way options (like CPU type for m68k) aren't handled yet.
91#
92# The variable $stdoptlist usually has a reasonable set of optional options
93# for this target.
94
95# No, PIC isn't supported yet. This is only an example.
96gas_test "quux.s" "-K" $stdoptlist "use of quuxes in PIC mode"