]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
sim: testsuite: fix cris stat3 in diff setups
authorMike Frysinger <vapier@gentoo.org>
Wed, 2 Nov 2022 14:42:54 +0000 (20:27 +0545)
committerMike Frysinger <vapier@gentoo.org>
Thu, 3 Nov 2022 18:42:41 +0000 (01:42 +0700)
This test uses the test itself as an input to stating regular files.
This gets funky though: when we run check in parallel, the output
object dir is the subdir that matches the .exp file.  When we run
with -j1, the output object dir is the sim builddir itself.

The old test would append argv[0] to find the file, while the new
test uses basename on it.  Each method works in only one of the
aforementioned build scenarios.  Rather than complicate this any
more, switch to a different file that we know will always exist:
the Makefile.

sim/testsuite/cris/c/stat3.c

index 321da1b2bd6131ad95087e5a9d40ae0d82786851..a6e4897436c171ced90fcb26748bd5393a98496e 100644 (file)
@@ -7,21 +7,25 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#define mybasename(x) ({ const char *x_ = (x), *y_ = strrchr (x_, '/'); y_ != NULL ? y_ + 1 : x_; })
 
 int main (int argc, char *argv[])
 {
-  char path[1024] = "/";
+  /* Pick a regular file we know will always be in the sim builddir.  */
+  char path[1024] = "/Makefile";
   struct stat buf;
 
-  strcat (path, mybasename (argv[0]));
   if (stat (".", &buf) != 0
       || !S_ISDIR (buf.st_mode))
-    abort ();
+    {
+      fprintf (stderr, "cwd is not a directory\n");
+      return 1;
+    }
   if (stat (path, &buf) != 0
       || !S_ISREG (buf.st_mode))
-    abort ();
+    {
+      fprintf (stderr, "%s: is not a regular file\n", path);
+      return 1;
+    }
   printf ("pass\n");
   exit (0);
 }
-