Commit Graph

46 Commits

Author SHA1 Message Date
Mike Frysinger
7a259895bb sim: testsuite: expand arch specific toolchain settings
Leverage the new per-port toolchain settings to initialize the env
for eeach set of tests.  This allows us to run all the tests in a
multitarget build if the user sets up the vars.  If they don't, we
can still skip all the tests.
2021-11-28 21:55:15 -05:00
Mike Frysinger
6916d9e65c sim: testsuite: add dedicated flag for init toolchain tests
As we setup more reliable CC_FOR_TARGET variables for each target, the
bfin way of overriding it to stuff custom CFLAGS doesn't scale well.
Add a dedicated CFLAGS_FOR_TARGET_init setting that each set of tests
can setup if they want to add custom options.
2021-11-27 03:09:57 -05:00
Mike Frysinger
2b9c7c262e sim: testsuite: clean up arch specific toolchain settings
In a multitarget build, we process all targets in order, so make sure
the toolchain settings from one don't leak into the next.
2021-11-27 01:27:17 -05:00
Mike Frysinger
1214c97666 sim: testsuite: initial support for OS-specific tests
We usually test against the newlib/libgloss environment, but for a
few ports that also support Linux apps, we want to test that logic
too.  A lot of the C code is written such that it works with either
newlib/libgloss or glibc/linux toolchains, but we have some tests
that end up being Linux-specific.  Cris has been using the target
tuple as a rough proxy for this (where cris*-*-elf is assumed to be
newlib/libgloss, and everything else is glibc/linux), but that is a
bit too rough, and it doesn't work in a multitarget build.

So lets create a few stub files that we can do compile tests with
to detect the different setups, and then let tests declare which
one they require (if they require any at all).
2021-11-26 20:06:55 -05:00
Mike Frysinger
264dcc17cc sim: testsuite: unify basic C compiler checks
Both bfin & cris ports test the C compiler to see if it works, but in
their own way.  Unify the checks in the common code so we can leverage
them in more ports in the future, and collapse the bfin & cris code.
2021-11-26 19:51:15 -05:00
Mike Frysinger
c0d6a6e582 sim: testsuite: rework sim_init usage
The sim_init function was called by runtest for each test when --tool
was set to sim.  When we changed to --tool '' to collapse the testsuite
dir, the init function was no longer called on every test.  However, it
was still being called explicitly by config/default.exp.  It's not clear
why that explicit call ever existed since, in the past, it meant it was
redundant.

Lets drop the single sim_init call in config/default.exp and move it out
to all our tests.  This replicates the runtest behavior so we can setup
variables on a per-test basis which allows us to recollapse the sim_path
logic back.  We'll also leverage this in the future for toolchain setup.

Also add a few comments clarifying the overall runtime behavior.
2021-11-26 19:48:05 -05:00
Mike Frysinger
e1e1ae6e9b sim: testsuite: fix objdir handling
The tests assume that the cwd is the objdir directory and write its
intermediates to there all the time.  When using runtest's --objdir
setting though, this puts the files in the wrong place.  This isn't
a big problem currently as we never change --objdir, but in order to
support parallel test execution, we're going to start setting that
option, so clean up the code ahead of time.

We also have to tweak some of the cris tests which were making
assumptions about the argv[0] value.
2021-11-26 19:27:21 -05:00
Mike Frysinger
03c0f9c205 sim: testsuite: rename global_sim_options to SIMFLAGS_FOR_TARGET
Now that all the other toolchain settings have been renamed to match
the dejagnu settings of XXX_FOR_TARGET, rename global_sim_options to
SIMFLAGS_FOR_TARGET too.
2021-11-26 19:17:59 -05:00
Mike Frysinger
d07ada6f5a sim: testsuite: replace global_ld_options with LDFLAGS_FOR_TARGET
Only a few tests actually use global_ld_options, but we can replace the
sim-specific settings with the dejagnu common LDFLAGS_FOR_TARGET and get
the same result.
2021-11-26 19:03:13 -05:00
Mike Frysinger
0e87783408 sim: testsuite: replace global_as_options with ASFLAGS_FOR_TARGET
Only a few tests actually use global_as_options, but we can replace the
sim-specific settings with the dejagnu common ASFLAGS_FOR_TARGET and get
the same result.
2021-11-26 15:07:04 -05:00
Mike Frysinger
c099934746 sim: testsuite: drop unused global_cc_options
Nothing in the testsuite is using this setting, so let's drop it.
Any code that wants to set compiler flags can use CFLAGS_FOR_TARGET
instead to get the same effect.
2021-11-26 13:28:15 -05:00
Mike Frysinger
aa1b9bdef2 sim: testsuite: punt unused toolchain variables
These haven't been used in over 20 years.  The sim testsuite used to
run these tools itself directly, but back in ~1999 it switched to the
dejagnu helpers (e.g. target_assemble & target_link), and the dejagnu
logic only utilizes XXX_FOR_TARGET variables.  Punt them here to avoid
confusion with dead code.
2021-11-26 13:27:34 -05:00
Mike Frysinger
bbda248c50 sim: v850: fix cpu_option testsuite handling
The v850 testsuite code has been testing the $opt variable, but this
was never actually set anywhere globally or v850-specific.  Instead,
this was a random variable leaking out of the sh testsuite code.  As
far as I can tell, it has always been this way.  That means the code
only ever tested the v850 cpu target (which is the default).

This failure can be easily seen in practice by running the v850 code
in isolation and seeing it crash:
$ runtest v850/allinsns.exp
...
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../../../sim/testsuite/config/default.exp as tool-and-target-specific interface file.
WARNING: Assuming target board is the local machine (which is probably wrong).
You may need to set your DEJAGNU environment variable.
Running ../../../sim/testsuite/v850/allinsns.exp ...
ERROR: tcl error sourcing ../../../sim/testsuite/v850/allinsns.exp.
ERROR: tcl error code TCL LOOKUP VARNAME opt
ERROR: can't read "opt": no such variable
    while executing
"switch -regexp -- $opt {

Backing up a bit, the reason for this logic in the first place is
because the common sim testsuite code makes an assumption about the
assembler options with cpu_option -- the option and its value are
always separated by an =.  This is not the case with v850.  So tweak
the core sim logic a bit to support omitting the = so that we can
switch v850 to the standard all_machs setting and avoid opt entirely.
2021-11-20 23:13:50 -05:00
Mike Frysinger
c2aad00a74 sim: testsuite: add support for $pwd replacements
Extend the common test framework to support $pwd replacements in
settings.  This allows replacing the custom cris @exedir@ with it.
2021-11-16 20:21:59 -05:00
Mike Frysinger
efe113047d sim: testsuite: drop sim_compile cover function
Most code isn't using this, and the only call site (in one cris file)
can use target_compile directly.  So switch it over to simplify.
2021-11-11 02:07:10 -05:00
Mike Frysinger
23ec4a527d sim: synacor: simplify test generation
Objcopy was used to create a binary file of just the executable code
since the environment requires code to based at address 0.  We can
accomplish the same thing with the -Ttext=0 flag, so switch to that
to get rid of custom logic.
2021-11-10 21:45:43 -05:00
Mike Frysinger
05385fc777 sim: testsuite: support exit 77 for unsupported tests
Exit status 77 is common (including the autotools world) to indicate
"skip this test".  Add support for mapping that to "unsupported" as
that's the closest in the dejagnu world.
2021-04-08 00:48:54 -04:00
Mike Frysinger
1bcee7fd87 sim: testsuite: skip tests when the port is disabled
If the port hasn't been enabled, don't try to run its tests.  Making
this dynamic simplifies the test harnesses and avoids duplicating a
bunch of target tuple checks.
2021-04-08 00:47:49 -04:00
Mike Frysinger
23cb7bac66 sim: testsuite: calculate $arch from $subdir
Since we require ports to use a matching subdir name in the testsuite
tree, we can use that to calculate the $arch value.
2021-04-08 00:45:07 -04:00
Mike Frysinger
26da232cbd sim: example-synacor: a simple implementation for reference
Provide a simple example simulator for people porting to new targets
to use as a reference.  This one has the advantage of being used by
people and having a fun program available for it.

It doesn't require a special target -- the example simulators can be
built for any existing port.
2021-04-03 16:19:16 -04:00
Mike Frysinger
6c57b87fc4 sim: testsuite: merge into toplevel automake
This allows us to delete most of our custom test logic,
and avoids a recursive make for minor speed up.
2021-03-07 15:54:53 -05:00
Mike Frysinger
37a9c3a53e sim: testsuite: allow tests to declare expected exit status
Some tests want to verify they can control the exit status, and
allowing any non-zero value would allow tests to silently fail:
if it crashed & exited 1, or forced all non-zero to 1, then we
wouldn't be able to differentiate with a test exiting with a
status like 47.

Extend the test harness to allow tests to declare their expected
exit status that would be defined as a "pass".  This requires a
small tweak to the sim_run API to return the status directly, but
that shouldn't be a big deal as it's only used by sim code.
2021-01-15 01:33:35 -05:00
Mike Frysinger
9bea4d16a6 sim: testsuite: support basic vars in flags
Sometimes in tests, we need supplemental files like linker scripts or
board helper files.  There's no way to set those flags in the tests
currently and relative paths don't work (breaks out of tree builds).

Update the main option parser to replace some strings on the fly.  Now
tests can do things like:

Long term we'll want to switch the framework to use the dejagnu helpers
like dg-xxx that gcc & gdb utilize.  But that'll require more rework.
2015-11-15 00:43:48 -05:00
Hans-Peter Nilsson
a9d9677441 Do unset_currtarget_info ldscript for all simulator testsuites.
sim/testsuite:
	* sim-defs.exp (sim_init): Unset target ldscript here.

sim/testsuite/sim/mips:
	* basic.exp: Don't unset target ldscript here.
2015-04-13 01:56:04 +02:00
Mike Frysinger
744b9a190b sim; testsuite: allow tests to set no output
If a test doesn't write anything at all to stdout, the current test
framework can't support that.  Even if you put a blank output line:
	# output:
the setup happily clobbers that with a default pass/fail string.

Tweak the parsing logic so we only set the output to pass/fail when
the test has no output marker.
2015-03-29 16:41:59 -04:00
Mike Frysinger
0641104b2e sim: tests: support .S/.c files
Rather than requiring all sim tests to be preprocessed .s files, add
support for .S and .c files so we can easily write code using a higher
level language like C.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-16 18:48:31 +00:00
Mike Frysinger
119da46568 sim: unify target->subdir handling for default tests
The testsuite subdir has a note about unifying the target->subdir logic,
so do just that.  The end goal here is to have `make check` work out of
the box without having to delve into dejagnu internals.

The target-specific logic is split out of the top level configure.ac file
and into a dedicated configure.tgt similar to other subprojects (gdb and
ld and etc...) with the difference that this file has to be included at
the m4 level instead of the shell level.  This is necessary only because
autoconf requires AC_CONFIG_SUBDIRS be given a string literal and not a
variable value.

Then the toplevel and the testsuite configure files pull this in, the sim
subdir gets expanded into testsuite/site.exp, and the default sim run code
uses this info to set the sim path to the local compiled run file if it
hasn't already been specified.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2010-04-26 16:23:24 +00:00
Hans-Peter Nilsson
fa0cbd5ae8 * sim/cris/asm/opterr5.ms, sim/cris/asm/opterr4.ms,
sim/cris/asm/opterr3.ms, sim/cris/asm/bare3.ms: New tests.
	* lib/sim-defs.exp (run_sim_test): New option progopts.
2009-01-18 22:17:47 +00:00
Hans-Peter Nilsson
27509da04b Fix consistenco; it's triplets, not triples 2004-11-16 16:22:09 +00:00
Hans-Peter Nilsson
310ca70ce2 * lib/sim-defs.exp (run_sim_test): Support "xfail" and "kfail". 2004-11-16 16:20:32 +00:00
Hans-Peter Nilsson
5eba45c188 * lib/sim-defs.exp (run_sim_test): Make multiple "output"
specifications concatenate, not override.
2004-11-16 07:06:17 +00:00
Nick Clifton
fcf640ecb2 (sim_run): Add support for the "rawsid" protocol. 2004-10-26 08:07:59 +00:00
DJ Delorie
a3ef5243fb * lib/sim-defs.exp (run_sim_test): Add global_as_options,
global_ld_options, and global_sim_options to all test cases, if
defined.
2004-09-13 20:54:03 +00:00
Ben Elliston
bc81a370c5 * lib/sim-defs.exp: Remove stray semicolons. 2004-05-12 03:34:26 +00:00
Ben Elliston
2345c93c5f * lib/sim-defs.exp (run_sim_test): Delete the .o and .x files if a
test passes.
2004-01-23 03:15:27 +00:00
Dave Brolley
fbd93201df 2003-09-09 Dave Brolley <brolley@redhat.com>
* sim/frv/maddaccs.cgs: move to fr400 subdirectory.
        * sim/frv/msubaccs.cgs: move to fr400 subdirectory.
        * sim/frv/masaccs.cgs: move to fr400 subdirectory.
2003-09-09 22:34:53 +00:00
Ben Elliston
f18ee7ef71 2001-07-31 Ben Elliston <bje@redhat.com>
* lib/sim-defs.exp (run_sim_test): Include a description such as
	"assembling" or "linking" that identifies the phase a test fails
	in, for easier analysis of failures.
2001-07-31 04:59:59 +00:00
Dave Brolley
0ab7df8a89 2000-11-01 Dave Brolley <brolley@cygnus.com>
* lib/sim-defs.exp (run_sm_test): Correct comment. "output" and
	"xerror" options do not use a list of machines. Clear options from
	previous test case. Use "$cpu_option"  to identify the machine to the
	assembler, if specified.
2000-11-01 15:40:35 +00:00
Jason Molenda
104c1213b4 import gdb-1999-08-30 snapshot 1999-08-31 01:14:27 +00:00
Stan Shebs
c906108c21 Initial creation of sourceware repository 1999-04-16 01:35:26 +00:00
Stan Shebs
071ea11e85 Initial creation of sourceware repository 1999-04-16 01:34:07 +00:00
Doug Evans
2a62c9b87b * lib/sim-defs.exp (sim_run): Argument env_vals renamed to options,
which is now a list of options controlling the behaviour of sim_run.
1998-06-12 01:08:26 +00:00
Doug Evans
42d9651198 (sim_compile): Tweak output text. 1998-06-11 22:49:25 +00:00
Frank Ch. Eigler
22134bdb43 * sky test suite fixes.
Mon Jun  1 18:54:22 1998  Frank Ch. Eigler  <fche@cygnus.com>
	* lib/sim-defs.exp (sim_run): Add possible environment variable
 	list to simulator run.
start-sanitize-sky
	* sim/sky/sky-defs.tcl: Use it.
	* sim/sky/t-pke2.vif1out: Update to match recent word-precise
 	tracking table change in sim/mips/sky-pke.c.
	* sim/sky/t-pke3.trc: Ditto.
	* sim/sky/t-pke4.vif0expect: Ditto.
end-sanitize-sky
Mon May 18 10:37:47 1998  Doug Evans  <devans@canuck.cygnus.com>
1998-06-01 16:09:52 +00:00
Doug Evans
801354e772 * lib/sim-defs.exp (sim_version): Simplify.
(sim_run): Implement.
	(run_sim_test): Use sim_run.
	(sim_compile): New proc.
1998-05-08 21:42:49 +00:00
Angela Marie Thomas
786786305f new .Sanitize files 1998-03-13 11:03:37 +00:00