sim: testsuite: rework sim_init usage
authorMike Frysinger <vapier@gentoo.org>
Sun, 21 Nov 2021 08:41:39 +0000 (03:41 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sat, 27 Nov 2021 00:48:05 +0000 (19:48 -0500)
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.

44 files changed:
sim/testsuite/aarch64/allinsn.exp
sim/testsuite/arm/allinsn.exp
sim/testsuite/arm/iwmmxt/iwmmxt.exp
sim/testsuite/arm/misc.exp
sim/testsuite/arm/thumb/allthumb.exp
sim/testsuite/arm/xscale/xscale.exp
sim/testsuite/avr/allinsn.exp
sim/testsuite/bfin/allinsn.exp
sim/testsuite/bpf/allinsn.exp
sim/testsuite/config/default.exp
sim/testsuite/cr16/allinsn.exp
sim/testsuite/cr16/misc.exp
sim/testsuite/cris/asm/asm.exp
sim/testsuite/cris/c/c.exp
sim/testsuite/cris/hw/rv-n-cris/rvc.exp
sim/testsuite/d10v/allinsn.exp
sim/testsuite/example-synacor/allinsn.exp
sim/testsuite/frv/allinsn.exp
sim/testsuite/frv/fr400/allinsn.exp
sim/testsuite/frv/fr500/allinsn.exp
sim/testsuite/frv/fr550/allinsn.exp
sim/testsuite/frv/interrupts.exp
sim/testsuite/frv/misc.exp
sim/testsuite/frv/parallel.exp
sim/testsuite/ft32/allinsn.exp
sim/testsuite/h8300/allinsn.exp
sim/testsuite/iq2000/allinsn.exp
sim/testsuite/lib/sim-defs.exp
sim/testsuite/lm32/allinsn.exp
sim/testsuite/m32c/allinsn.exp
sim/testsuite/m32r/allinsn.exp
sim/testsuite/m32r/misc.exp
sim/testsuite/m68hc11/allinsn.exp
sim/testsuite/mcore/allinsn.exp
sim/testsuite/microblaze/allinsn.exp
sim/testsuite/mips/basic.exp
sim/testsuite/mn10300/allinsn.exp
sim/testsuite/moxie/allinsn.exp
sim/testsuite/msp430/allinsn.exp
sim/testsuite/or1k/alltests.exp
sim/testsuite/pru/allinsn.exp
sim/testsuite/riscv/allinsn.exp
sim/testsuite/sh/allinsn.exp
sim/testsuite/v850/allinsns.exp

index 54d64784c230dd0d51049232dbda653fa9be5952..402d7483f4f0a518c682988a12d8871bdfdc3f89 100644 (file)
@@ -1,5 +1,7 @@
 # AArch64 simulator testsuite
 
+sim_init
+
 if [istarget aarch64*-*] {
     # all machines
     set all_machs "aarch64"
index 4f4f438978db54e09f5ab5ff383c160b6956b679..ef41c955a64b5aae509578aa9686d65c85c243f8 100644 (file)
@@ -1,5 +1,7 @@
 # ARM simulator testsuite.
 
+sim_init
+
 if { [istarget arm*-*-*] } {
     # all machines
     set all_machs "xscale"
index 058e9e6e098213fa77179cd2b85ae0723651caf1..7283a4246b0047c1526ba33e60d7e6fae6bc4792 100644 (file)
@@ -1,5 +1,7 @@
 # Intel(r) Wireless MMX(tm) technology simulator testsuite.
 
+sim_init
+
 if { [istarget arm*-*-*] } {
     # all machines
     set all_machs "xscale"
index 818ee58adec352ce2cb57323915f64ea32fc12f4..0b939a6c56ff2bc25c6bd5202eaf57c9c4756b62 100644 (file)
@@ -1,5 +1,7 @@
 # Miscellaneous ARM simulator testcases
 
+sim_init
+
 if { [istarget arm*-*-*] } {
     # all machines
     set all_machs "arm7tdmi"
index ec09a0da8294a84ed012176fe75d6838555d9595..76aac93955579c4037db7456de434ad3dd8424aa 100644 (file)
@@ -1,5 +1,7 @@
 # ARM simulator testsuite.
 
+sim_init
+
 if { [istarget arm*-*-*] } {
     # all machines
     set all_machs "arm7tdmi"
index 394e351e0b3f1a588e000940f24fe0ab64e7754e..17e99c3fd0272e749d1df14dfd1b5d73203bf843 100644 (file)
@@ -1,5 +1,7 @@
 # XSCALE simulator testsuite.
 
+sim_init
+
 if { [istarget arm*-*-*] } {
     # all machines
     set all_machs "xscale"
index 584a93da93050dc6030ddfd1b4d1e3070315db37..c82610c8e781bbf9195fe8f1d898403ef0b17845 100644 (file)
@@ -1,5 +1,7 @@
 # avr simulator testsuite
 
+sim_init
+
 if [istarget avr-*] {
     # all machines
     set all_machs "avr"
index f250d23092584d0c10119df1ce2992ff14cfb084..d5269dabd204845e7aeaff2e4e683cdfec9116d7 100644 (file)
@@ -1,5 +1,7 @@
 # Analog Devices Blackfin simulator testsuite
 
+sim_init
+
 if [istarget bfin-*-elf] {
     # all machines
     set all_machs "bfin"
index 66e76f62fe9a80708fd0a4c82d6e8b21b16dc708..4f81d4cee166001cbd9d8f5f51eedac912ae8dad 100644 (file)
@@ -1,5 +1,7 @@
 # eBPF simulator testsuite
 
+sim_init
+
 if [istarget bpf-unknown-none] {
     # all machines
     set all_machs "bpf"
index c167e10a7f354713bc92c70bd3492151dd13acfe..d95b554c401f8256cbddb9646dc67feac9167926 100644 (file)
@@ -1,5 +1,3 @@
 # Simulator default dejagnu configuration file.
 
 load_lib sim-defs.exp
-
-sim_init
index 7105a1a8248ffee5e4d719e0ecdbe6abcba82d0e..3f05fb974cf2adf264945945a2268a5024da42cc 100644 (file)
@@ -1,5 +1,7 @@
 # CR16 simulator testsuite.
 
+sim_init
+
 if [istarget cr16*-*-*] {
     # all machines
     set all_machs "cr16"
index bb1bef3f78bb5b889424c8bb2d240d404c7e8b5b..136b0e798da2f1a20e66389e3c83cb835fba2e77 100644 (file)
@@ -1,5 +1,7 @@
 # Miscellaneous CR16 simulator testcases
 
+sim_init
+
 if [istarget cr16*-*-*] {
     # all machines
     set all_machs "cr16"
index 415bbf1082a996b47ba4638258d738a7136d2ee1..d64d3526e4c8b0fb7d062e440ce80edaaf981880 100644 (file)
@@ -15,6 +15,8 @@
 
 # Miscellaneous CRIS simulator testcases in assembly code.
 
+sim_init
+
 if [istarget cris*-*-*] {
     global ASFLAGS_FOR_TARGET
     # All machines we test and the corresponding assembler option.  Needs
index 25d812ea7356a7d0a06e289b5ab2d9547e69fbd4..08a085dd6fc3e5712d31297a51f18d655ff0987d 100644 (file)
@@ -15,6 +15,8 @@
 
 # Miscellaneous CRIS simulator testcases testing syscall sequences.
 
+sim_init
+
 if ![istarget cris*-*-*] {
     return
 }
@@ -69,6 +71,7 @@ proc anytarget { targets } {
     return 0
 }
 
+global sim_path
 foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
     set orig_ldflags ""
 
@@ -94,7 +97,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
        continue
     }
 
-    if ![file exists [sim_tool_path]] {
+    if ![file exists $sim_path] {
        untested $testname
        return 0
     }
index 847d906d497f769c321a4bfa3bf8b357fef5c06b..7c136db95309adc9ff8ca17638e1605911c8d49e 100644 (file)
 # Miscellaneous CRIS simulator testcases in assembly code, testing
 # dv-rv.c and dv-cris.c functions.
 
+sim_init
+
 # Check whether dv-rv and dv-cris are present.
 
 proc sim_has_rv_and_cris {} {
     global srcdir
     global subdir
     global objdir
+    global sim_path
     global SIMFLAGS_FOR_TARGET
 
-    if ![file exists [sim_tool_path]] {
+    if ![file exists $sim_path] {
        return 0
     }
 
index 5f1a13177f142818f372557634cf9e17204b647b..6e7619691dcafb87916cd0c518262e43e6bdcc08 100644 (file)
@@ -1,5 +1,7 @@
 # d10v simulator testsuite.
 
+sim_init
+
 if [istarget d10v*-*] {
     # all machines
     set all_machs "d10v"
index 4c8f653ad7267eb28b7eaa2295cee65b5f32c5ba..2f1fc74d239eee7db47398b07e71cb8235843d7b 100644 (file)
@@ -1,5 +1,7 @@
 # Example synacor simulator testsuite.
 
+sim_init
+
 if [istarget *] {
     # All machines.
     set all_machs "example"
index 1781bf0ed170f5e166b8475b0a8600bc1741a578..dea804109a405d74e84edafc5ecc82c649bd6248 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "frv fr500 fr550 fr400 fr405 fr450"
index 03ccbd6e8abaf4588269ca51ebd63bbb432ca6d8..ed501e5400f21670ad6a5f964d4406bcebf2553f 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "fr400 fr405 fr450 fr550"
index fa03797d39ceb36de195cafe92a43159ac68a4d6..40d81d9e3f26ab18ca280f5d61f58fe24c673889 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "frv fr500 fr550"
index c0e373aa2672727a1b257238df90e9376d960402..91948beada40c1e1e360dc9bc9d9218c0199ce74 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "fr550"
index 6b2c84a629ad9a166360ba7af1f3bf08d4ad9b48..38c2f410c106ebd47b417f97a95488bfad9cffcb 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "frv fr500 fr550 fr400"
index fb394bb17f002bb19c172e629e349e8a1d2be7e0..2025935da8ca86a6fc722e2f8ef6af745ae28e73 100644 (file)
@@ -1,5 +1,7 @@
 # Miscellaneous FRV simulator testcases.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "frv fr500 fr550 fr400 fr405 fr450"
index 612a1bfd9e1458cca9b6c05aa52f62f890b2bac6..2fcc6529182bea00a63ef9b40d25fb9dcc4583a3 100644 (file)
@@ -1,5 +1,7 @@
 # FRV simulator testsuite.
 
+sim_init
+
 if [istarget frv*-*] {
     # all machines
     set all_machs "frv fr500 fr550 fr400"
index 730b4223632d62844440e33c119dbb7c60f08ec7..6958f0612285252f9829dae223fcd65d9ec7de35 100644 (file)
@@ -1,5 +1,7 @@
 # ft32 simulator testsuite
 
+sim_init
+
 if [istarget ft32-*] {
     # all machines
     set all_machs "ft32"
index 68468f6bb10682f3f984dfe0373adac82c3fc6a4..df4d02aad364e51cc5b1bb0dbccf4ee15d8a79fb 100644 (file)
@@ -1,5 +1,7 @@
 # Hitachi H8/300 (h, s, sx) simulator testsuite
 
+sim_init
+
 if {[istarget h8300*-*-*] || [istarget h8sx*-*-*]} then {
     set all_machs "h8300 h8300h h8300s h8sx"
 
index 38eee9b277f13154a2265d198d75b18030355dda..c6a83a0f75413a2117d1dd4b221ed1253d9e3ddc 100644 (file)
@@ -1,5 +1,7 @@
 # iq2000 simulator testsuite
 
+sim_init
+
 if [istarget iq2000-*] {
     # all machines
     set all_machs "iq2000"
index 405f1b7f9f81d06ac088fd432fb651cfe5942f7c..46a8b3f21d8ae9bd8cf01e3887d6ea420208e731 100644 (file)
@@ -7,12 +7,22 @@
 set sim_path "unknown-run"
 
 # Initialize the testrun.
-# Required by dejagnu.
+#
+# Normally dejagnu will execute ${tool}_init automatically, but since we set
+# --tool '' (for a simpler testsuite/ layout), we have each test call this
+# itself.
 
 proc sim_init { args } {
+    global builddir
+    global subdir
     global sim_path
-    set sim_path [board_info target sim]
-    # Need to return an empty string (copied from GAS).
+
+    # Find the path to the simulator for executing.
+    set arch "$subdir"
+    while { [file dirname $arch] != "." } {
+       set arch [file dirname $arch]
+    }
+    set sim_path "$builddir/$arch/run"
 
     # As gross as it is, we unset the linker script specified by the target
     # board.  The simulator board file mips-sim.exp, sets ldscript to the
@@ -23,6 +33,8 @@ proc sim_init { args } {
     # all simulators.
     unset_currtarget_info ldscript
 
+    # Need to return an empty string.  This tells dejagnu to *not* re-run us
+    # with the exact test that we're about to run.
     return ""
 }
 
@@ -35,22 +47,6 @@ proc sim_version {} {
     clone_output "$sim_path $version\n"
 }
 
-# Find the path to the simulator for executing.
-proc sim_tool_path {} {
-    global sim_path
-    set sim "$sim_path"
-    if [string equal "" $sim] {
-       global builddir
-       global subdir
-       set arch "$subdir"
-       while { [file dirname $arch] != "." } {
-           set arch [file dirname $arch]
-       }
-       return "$builddir/$arch/run"
-    }
-    return "$sim"
-}
-
 # Run a program on the simulator.
 # Required by dejagnu (at least ${tool}_run used to be).
 #
@@ -73,6 +69,8 @@ proc sim_tool_path {} {
 # simulator (not the simulated program, the simulator) with sim_load.
 
 proc sim_run { prog sim_opts prog_opts redir options } {
+    global sim_path
+
     # Set the default value of the timeout.
     # FIXME: The timeout value we actually want is a function of
     # host, target, and testcase.
@@ -99,7 +97,7 @@ proc sim_run { prog sim_opts prog_opts redir options } {
        
     verbose "testcase timeout is set to $testcase_timeout" 1
 
-    set sim [sim_tool_path]
+    set sim $sim_path
 
     if [is_remote host] {
        set prog [remote_download host $prog]
@@ -182,13 +180,14 @@ proc sim_run { prog sim_opts prog_opts redir options } {
 
 proc run_sim_test { name requested_machs } {
     global subdir srcdir objdir
+    global sim_path
     global opts
     global cpu_option
     global cpu_option_sep
     global SIMFLAGS_FOR_TARGET
 
-    if ![file exists [sim_tool_path]] {
-       unsupported "$name: missing simulator [sim_tool_path]"
+    if ![file exists $sim_path] {
+       unsupported "$name: missing simulator $sim_path"
        return
     }
 
index 61744985f6c8cdf280148fbb0661fff31750918b..c3e70b223df8ec967213f08522b535f7238120cd 100644 (file)
@@ -1,5 +1,7 @@
 # lm32 simulator testsuite
 
+sim_init
+
 if [istarget lm32-*] {
     # all machines
     set all_machs "lm32"
index fb5ccca282e1e47c06f30462f5f635c6122ae2db..045cc7e6bac3c8177cf1180c357b73587eb63020 100644 (file)
@@ -1,6 +1,8 @@
 # M32C simulator testsuite.
 # TODO: Add support for .c tests.
 
+sim_init
+
 if [istarget m32c*-*-*] {
     # all machines
     set all_machs "m32c"
index 17a86189f79f2f5b15bb14f2fb0ce85f24a8e756..146113458f35e4b7fa0a45a0a805ef4af32ca15b 100644 (file)
@@ -1,5 +1,7 @@
 # M32R simulator testsuite.
 
+sim_init
+
 if [istarget m32r*-*-*] {
     # all machines
     set all_machs "m32r"
index 6c624e737e74e016440e68c4113aa08797d68341..d45e119c50966adc128f7842902fea1ce5b6eae4 100644 (file)
@@ -1,5 +1,7 @@
 # Miscellaneous M32R simulator testcases
 
+sim_init
+
 if [istarget m32r*-*-*] {
     # all machines
     set all_machs "m32r"
index db0cbd5d46700a451e31f4ba2286fc97c55b8ae6..710af981064c4be764f06483276a014ff56aa855 100644 (file)
@@ -1,5 +1,7 @@
 # m68hc11 simulator testsuite
 
+sim_init
+
 if [istarget m68hc11-*] {
     # all machines
     set all_machs "m68hc11"
index 5921cfc26431e6bdd71769020c34c27460bfeafb..6463ac2ae85935c68c735d7fe1a307d20f9fb2c5 100644 (file)
@@ -1,5 +1,7 @@
 # mcore simulator testsuite
 
+sim_init
+
 if [istarget mcore-*] {
     # all machines
     set all_machs "mcore"
index f756914292c4e46e0cb14ea280b4c34cd28cc496..f3662c2939137368d37f90fe5732ae3cc16a7026 100644 (file)
@@ -1,5 +1,7 @@
 # microblaze simulator testsuite
 
+sim_init
+
 if [istarget microblaze-*] {
     # all machines
     set all_machs "microblaze"
index ff96a683589bbed1980d2747b1ea090df670a715..150949283b40187012b15b1965364284d8b936b8 100644 (file)
@@ -1,5 +1,7 @@
 # MIPS simulator instruction tests
 
+sim_init
+
 # Do "run_sim_test TESTFILE MODELS" for each combination of the
 # mf{lo,hi} -> mult/div/mt{lo,hi} hazard described in mips.igen.
 # Insert NOPS nops after the mflo or mfhi.
index f8431e7222ea51d580a598cf836fc04c793cdc7e..2eaf249c98f022aa14d1f09452019f21b0cbe9d9 100644 (file)
@@ -1,5 +1,7 @@
 # mn10300 simulator testsuite
 
+sim_init
+
 if [istarget mn10300-*] {
     # all machines
     set all_machs "mn10300"
index 1a6af8b37d456a50ea352f73035e2f4f1038b1b5..d534085921620c43f2b3bce7d41c8d7ed67c6fa9 100644 (file)
@@ -1,5 +1,7 @@
 # moxie simulator testsuite
 
+sim_init
+
 if [istarget moxie-*] {
     # all machines
     set all_machs "moxie"
index affa8aedc2ad998370835e04ac45e94c6f3c53c8..c7da3c58713447cfa9c0f4ff7a1a12ebcd643950 100644 (file)
@@ -1,5 +1,7 @@
 # msp430 simulator testsuite
 
+sim_init
+
 if [istarget msp430-*] {
     # all machines
     set all_machs "msp430"
index 701cca6ec643e933d9149fdb752d9f40b2eb098e..6f4238dbe7ec9d830c52e48f28d504c3573971c9 100644 (file)
@@ -15,6 +15,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+sim_init
+
 if [istarget or1k*-*-*] {
     set all_machs "or1k"
 
index d147f731c9134326f86a17cc760903e972577b0f..b71a387d78266db5106081fba31fe24fd359a314 100644 (file)
@@ -18,6 +18,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+sim_init
+
 if [istarget pru-*] {
     # all machines
     set all_machs "pru"
index 03bec1b541e7c9f5629d7a513765e23690d4b7a8..bdf92993f0585fd7a8698908dabc763c574a1239 100644 (file)
@@ -1,5 +1,7 @@
 # RISC-V simulator testsuite.
 
+sim_init
+
 if [istarget riscv*-*] {
     # all machines
     set all_machs "riscv"
index 05a28e0074225cb25b9e6dd0309151ee00b25fe2..ceed950490e2a54a8fe127d6c8c3dae16c886934 100644 (file)
@@ -1,5 +1,7 @@
 # sh tests
 
+sim_init
+
 set all_machs "sh shdsp"
 
 global ASFLAGS_FOR_TARGET
index 2dc8d60bb9a92d998f0790efd9d5471cdb215d14..c4c15b066f81e5fe040604da86e40685efe0ac0b 100644 (file)
@@ -1,5 +1,7 @@
 # v850 simulator testsuite.
 
+sim_init
+
 if [istarget v850*-*] {
     # All machines.
     # Should add more cpus if the testsuite adds coverage for their insns, but