sim: testsuite: fix objdir handling
authorMike Frysinger <vapier@gentoo.org>
Sun, 21 Nov 2021 08:06:20 +0000 (03:06 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sat, 27 Nov 2021 00:27:21 +0000 (19:27 -0500)
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.

sim/Makefile.in
sim/testsuite/bfin/allinsn.exp
sim/testsuite/cris/c/c.exp
sim/testsuite/cris/c/openpf1.c
sim/testsuite/cris/c/rename2.c
sim/testsuite/cris/c/stat3.c
sim/testsuite/cris/hw/rv-n-cris/rvc.exp
sim/testsuite/lib/sim-defs.exp
sim/testsuite/local.mk

index 35f807b84df62129b41b26ed913fe48f033cc2e7..671d63c30b8fc4dd44145a5d1c44d1f6e98be469 100644 (file)
@@ -1251,12 +1251,12 @@ CLEANFILES = common/version.c common/version.c-stamp \
        testsuite/common/bits32m31.c testsuite/common/bits64m0.c \
        testsuite/common/bits64m63.c
 DISTCLEANFILES = 
-MOSTLYCLEANFILES = core $(am__append_5) site-srcdir.exp testrun.log \
-       testrun.sum $(am__append_7) $(am__append_10) $(am__append_12) \
-       $(am__append_15) $(am__append_17) $(am__append_19) \
-       $(am__append_21) $(am__append_24) $(am__append_26) \
-       $(am__append_29) $(am__append_31) $(am__append_33) \
-       $(am__append_36) $(am__append_38)
+MOSTLYCLEANFILES = core $(am__append_5) site-sim-config.exp \
+       testrun.log testrun.sum $(am__append_7) $(am__append_10) \
+       $(am__append_12) $(am__append_15) $(am__append_17) \
+       $(am__append_19) $(am__append_21) $(am__append_24) \
+       $(am__append_26) $(am__append_29) $(am__append_31) \
+       $(am__append_33) $(am__append_36) $(am__append_38)
 AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(srcroot)/include $(SIM_INLINE) -I$(srcdir)/common
 COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(AM_CPPFLAGS) $(CFLAGS_FOR_BUILD)
@@ -1336,7 +1336,7 @@ common_libcommon_a_SOURCES = \
 
 
 # Tweak the site.exp so it works with plain `runtest` from user.
-EXTRA_DEJAGNU_SITE_CONFIG = site-srcdir.exp
+EXTRA_DEJAGNU_SITE_CONFIG = site-sim-config.exp
 
 # Custom verbose test variables that automake doesn't provide (yet?).
 AM_V_RUNTEST = $(AM_V_RUNTEST_@AM_V@)
@@ -2662,8 +2662,11 @@ common/version.c-stamp: $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h $(src
 @SIM_ENABLE_IGEN_TRUE@igen/%-main.o: igen/%.c
 @SIM_ENABLE_IGEN_TRUE@ $(AM_V_CC)$(COMPILE_FOR_BUILD) -DMAIN -c $< -o $@
 
-site-srcdir.exp: Makefile
-       $(AM_V_GEN)echo "set srcdir \"$(srcdir)/testsuite\"" > $@
+site-sim-config.exp: Makefile
+       $(AM_V_GEN)( \
+       echo "set builddir \"$(builddir)\""; \
+       echo "set srcdir \"$(srcdir)/testsuite\""; \
+       ) > $@
 
 check-DEJAGNU: site.exp
        $(AM_V_RUNTEST)LC_ALL=C; export LC_ALL; \
index aa304eaa9b4ae2aa6a22e98cbb187b90d4e88ac0..f250d23092584d0c10119df1ce2992ff14cfb084 100644 (file)
@@ -4,8 +4,10 @@ if [istarget bfin-*-elf] {
     # all machines
     set all_machs "bfin"
 
+    global objdir
+
     # See if we have a preprocessor available.
-    if { [target_compile $srcdir/$subdir/usp.S compilercheck.x "preprocess" \
+    if { [target_compile $srcdir/$subdir/usp.S $objdir/compilercheck.x "preprocess" \
          [list "incdir=$srcdir/$subdir"]] == "" } {
        set has_cpp 1
     } {
@@ -14,7 +16,7 @@ if [istarget bfin-*-elf] {
     }
 
     # See if we have a compiler available.
-    if { [target_compile $srcdir/$subdir/argc.c compilercheck.x "executable" \
+    if { [target_compile $srcdir/$subdir/argc.c $objdir/compilercheck.x "executable" \
          [list "incdir=$srcdir/$subdir" "additional_flags=-msim"]] == "" } {
        set has_cc 1
     } {
index 233ed8533778147d319ae1b82f891030f028c91a..bd51d73432fb0f3bb64f1c49e692ce55da2ab34c 100644 (file)
@@ -31,7 +31,8 @@ if [istarget cris*-*-elf] {
 }
 
 # Using target_compile, since it is less noisy,
-if { [target_compile $srcdir/$subdir/hello.c compilercheck.x \
+global objdir
+if { [target_compile $srcdir/$subdir/hello.c $objdir/compilercheck.x \
          "executable" "" ] == "" } {
     set has_cc 1
 
@@ -43,7 +44,7 @@ if { [target_compile $srcdir/$subdir/hello.c compilercheck.x \
     # detrimental effects on the executable from the specs and
     # -static in the board ldflags, we just add -Bdynamic.
     if [regexp "(.*/lib)/libc.so" \
-           [target_compile $srcdir/$subdir/hello.c compilercheck.x \
+           [target_compile $srcdir/$subdir/hello.c $objdir/compilercheck.x \
                 "executable" \
                 "ldflags=-print-file-name=libc.so -Wl,-Bdynamic"] \
            xxx libcsodir]  {
@@ -169,7 +170,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
 
     verbose -log "Compiling $src with $opts(cc)"
 
-    if { [target_compile $src "$testname.x" "executable" "$opts(cc)" ] != "" } {
+    if { [target_compile $src "$objdir/$testname.x" "executable" "$opts(cc)" ] != "" } {
        unresolved $testname
        continue
     }
@@ -192,7 +193,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
        eval setup_kfail $opts(kfail)
     }
 
-    set result [sim_run "$testname.x" "$opts(sim,$mach)" "$opts(progoptions)" \
+    set result [sim_run "$objdir/$testname.x" "$opts(sim,$mach)" "$opts(progoptions)" \
        "" ""]
     set return_code [lindex $result 0]
     set output [lindex $result 1]
index fe767f71f3700f6c4c8aa3c51f3eae8dc70ec97a..92d12bfc437133ab50b4e63878db44febce2cf4f 100644 (file)
@@ -21,7 +21,7 @@ int main (int argc, char *argv[])
       if (fnam == NULL)
        abort ();
       strcpy (fnam, "/");
-      strcat (fnam, argv[0]);
+      strcat (fnam, basename (argv[0]));
     }
 
   f = fopen (fnam, "rb");
index 39387d1ff312aa4e34dd92f31b4792d80d550e4a..3b62837017c4a666d21223ea1813a6992f314a98 100644 (file)
@@ -17,12 +17,6 @@ void err (const char *s)
 
 int main (int argc, char *argv[])
 {
-  /* Avoid getting files with random characters due to errors
-     elsewhere.  */
-  if (argc != 1
-      || (argv[0][0] != '.' && argv[0][0] != '/' && argv[0][0] != 'r'))
-    abort ();
-
   if (rename (argv[0], NULL) != -1
       || errno != EFAULT)
     err ("rename 1 ");
index fa9fcc14b487d368c3f5b4426fab8780ccb262c7..eac4da9ea8d94dc982eeb926c93a120d3597c329 100644 (file)
@@ -13,7 +13,7 @@ int main (int argc, char *argv[])
   char path[1024] = "/";
   struct stat buf;
 
-  strcat (path, argv[0]);
+  strcat (path, basename (argv[0]));
   if (stat (".", &buf) != 0
       || !S_ISDIR (buf.st_mode))
     abort ();
index 5d7126cc6e3fa950108ed0a2d8c4d7ad9c8ff099..42de37d896cdcccd7743fc0cd89651ff6e705597 100644 (file)
@@ -21,6 +21,7 @@
 proc sim_has_rv_and_cris {} {
     global srcdir
     global subdir
+    global objdir
     global SIMFLAGS_FOR_TARGET
 
     # We need to assemble and link a trivial program and pass that, in
@@ -34,7 +35,7 @@ proc sim_has_rv_and_cris {} {
        set SIMFLAGS_FOR_TARGET ""
     }
 
-    set comp_output [target_assemble $srcdir/$subdir/quit.s quit.o \
+    set comp_output [target_assemble $srcdir/$subdir/quit.s $objdir/quit.o \
                         "-I$srcdir/$subdir"]
 
     if ![string match "" $comp_output] {
@@ -43,7 +44,7 @@ proc sim_has_rv_and_cris {} {
        return 0
     }
 
-    set comp_output [target_link quit.o quit.x ""]
+    set comp_output [target_link $objdir/quit.o $objdir/quit.x ""]
 
     if ![string match "" $comp_output] {
        verbose -log "$comp_output" 3
@@ -52,7 +53,7 @@ proc sim_has_rv_and_cris {} {
     }
 
     set result \
-       [sim_run quit.x \
+       [sim_run $objdir/quit.x \
             "$SIMFLAGS_FOR_TARGET --hw-device rv --hw-device cris --hw-info" \
             "" "" ""]
     set return_code [lindex $result 0]
@@ -117,8 +118,8 @@ if [istarget cris*-*-*] {
     # See the logic in sim-defs.exp for more details.
     set sim [board_info target sim]
     if [string equal "" $sim] {
-       global objdir
-       set rvdummy "$objdir/cris/rvdummy"
+       global builddir
+       set rvdummy "$builddir/cris/rvdummy"
     } else {
        set rvdummy "[file dirname [board_info target sim]]/rvdummy"
     }
index d10246e5238535ca9d9d28e380318849020c7cdf..405f1b7f9f81d06ac088fd432fb651cfe5942f7c 100644 (file)
@@ -40,13 +40,13 @@ proc sim_tool_path {} {
     global sim_path
     set sim "$sim_path"
     if [string equal "" $sim] {
-       global objdir
+       global builddir
        global subdir
        set arch "$subdir"
        while { [file dirname $arch] != "." } {
            set arch [file dirname $arch]
        }
-       return "$objdir/$arch/run"
+       return "$builddir/$arch/run"
     }
     return "$sim"
 }
@@ -181,7 +181,7 @@ proc sim_run { prog sim_opts prog_opts redir options } {
 # optional for xfail.
 
 proc run_sim_test { name requested_machs } {
-    global subdir srcdir
+    global subdir srcdir objdir
     global opts
     global cpu_option
     global cpu_option_sep
@@ -328,16 +328,16 @@ proc run_sim_test { name requested_machs } {
        }
 
        if [string match "*.c" $sourcefile] {
-           set comp_output [target_compile $sourcefile ${name}.x "executable" \
+           set comp_output [target_compile $sourcefile $objdir/${name}.x "executable" \
                [list "incdir=$srcdir/$subdir" "additional_flags=$c_as_options $c_ld_options $opts(cc,$mach)"]]
            set method "compiling/linking"
        } else {
            if [string match "*.S" $sourcefile] {
-               set comp_output [target_compile $sourcefile ${name}.o "object" \
+               set comp_output [target_compile $sourcefile $objdir/${name}.o "object" \
                    [list "incdir=$srcdir/$subdir" "additional_flags=$c_as_options"]]
                set method "compiling"
            } else {
-               set comp_output [target_assemble $sourcefile ${name}.o "$as_options"]
+               set comp_output [target_assemble $sourcefile $objdir/${name}.o "$as_options"]
                set method "assembling"
            }
 
@@ -347,7 +347,7 @@ proc run_sim_test { name requested_machs } {
                continue
            }
 
-           set comp_output [target_link ${name}.o ${name}.x "$opts(ld,$mach)"]
+           set comp_output [target_link $objdir/${name}.o $objdir/${name}.x "$opts(ld,$mach)"]
            set method "linking"
        }
 
@@ -368,7 +368,7 @@ proc run_sim_test { name requested_machs } {
            set options "$options timeout=$opts(timeout)"
        }
 
-       set result [sim_run ${name}.x "$opts(sim,$mach) $SIMFLAGS_FOR_TARGET" "$opts(progopts)" "" "$options"]
+       set result [sim_run $objdir/${name}.x "$opts(sim,$mach) $SIMFLAGS_FOR_TARGET" "$opts(progopts)" "" "$options"]
        set return_code [lindex $result 0]
        set output [lindex $result 1]
 
@@ -383,7 +383,7 @@ proc run_sim_test { name requested_machs } {
            if { "$opts(xerror)" == "no" } {
                if [string match $opts(output) $output] {
                    pass "$mach $testname"
-                   file delete ${name}.o ${name}.x
+                   file delete $objdir/${name}.o $objdir/${name}.x
                } else {
                    verbose -log "status:  $return_code" 3
                    verbose -log "output:  $output" 3
@@ -400,7 +400,7 @@ proc run_sim_test { name requested_machs } {
            } else {
                if [string match $opts(output) $output] {
                    pass "$mach $testname"
-                   file delete ${name}.o ${name}.x
+                   file delete $objdir/${name}.o $objdir/${name}.x
                } else {
                    verbose -log "status:  $return_code" 3
                    verbose -log "output:  $output" 3
index 4da63ea49fa011aba6ccc96a04e3f11ceec4b0d8..5ffa9eca745cc5cf0a4487db8a40a49c59ba99e3 100644 (file)
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Tweak the site.exp so it works with plain `runtest` from user.
-EXTRA_DEJAGNU_SITE_CONFIG = site-srcdir.exp
+EXTRA_DEJAGNU_SITE_CONFIG = site-sim-config.exp
 
 # Custom verbose test variables that automake doesn't provide (yet?).
 AM_V_RUNTEST = $(AM_V_RUNTEST_@AM_V@)
@@ -24,8 +24,11 @@ AM_V_RUNTEST_ = $(AM_V_RUNTEST_@AM_DEFAULT_V@)
 AM_V_RUNTEST_0 =  @echo "  RUNTEST  $(RUNTESTFLAGS)";
 AM_V_RUNTEST_1 =
 
-site-srcdir.exp: Makefile
-       $(AM_V_GEN)echo "set srcdir \"$(srcdir)/testsuite\"" > $@
+site-sim-config.exp: Makefile
+       $(AM_V_GEN)( \
+       echo "set builddir \"$(builddir)\""; \
+       echo "set srcdir \"$(srcdir)/testsuite\""; \
+       ) > $@
 
 check-DEJAGNU: site.exp
        $(AM_V_RUNTEST)LC_ALL=C; export LC_ALL; \
@@ -37,6 +40,6 @@ check-DEJAGNU: site.exp
        fi
 
 MOSTLYCLEANFILES += \
-       site-srcdir.exp testrun.log testrun.sum
+       site-sim-config.exp testrun.log testrun.sum
 
 include %D%/common/local.mk