summaryrefslogtreecommitdiffstats
path: root/tests/tcg/cris/libc/check_openpf1.c
diff options
context:
space:
mode:
authorAlex Bennée2018-12-07 11:28:31 +0100
committerAlex Bennée2019-03-12 18:05:21 +0100
commitd4f6e58fcbab1fa2df123e3849dd95f30400a896 (patch)
treedc63da617d6ddf108554dd379cc56a7b9014d080 /tests/tcg/cris/libc/check_openpf1.c
parenttests/tcg/cris: cleanup sys.c (diff)
downloadqemu-d4f6e58fcbab1fa2df123e3849dd95f30400a896.tar.gz
qemu-d4f6e58fcbab1fa2df123e3849dd95f30400a896.tar.xz
qemu-d4f6e58fcbab1fa2df123e3849dd95f30400a896.zip
tests/tcg: split cris tests into bare and libc directories
Bare tests are standalone assembly tests that don't require linking to any libc and hence can be built with kernel only compilers. The libc tests need a compiler capable of building properly linked userspace binaries. As we don't have such a cross compiler at the moment we won't be building those tests. Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Diffstat (limited to 'tests/tcg/cris/libc/check_openpf1.c')
-rw-r--r--tests/tcg/cris/libc/check_openpf1.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/tcg/cris/libc/check_openpf1.c b/tests/tcg/cris/libc/check_openpf1.c
new file mode 100644
index 0000000000..251d26eec2
--- /dev/null
+++ b/tests/tcg/cris/libc/check_openpf1.c
@@ -0,0 +1,38 @@
+/* Check that --sysroot is applied to open(2).
+#sim: --sysroot=@exedir@
+
+ We assume, with EXE being the name of the executable:
+ - The simulator executes with cwd the same directory where the executable
+ is located (so argv[0] contains a plain filename without directory
+ components).
+ - There's no /EXE on the host file system. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+int main (int argc, char *argv[])
+{
+ char *fnam = argv[0];
+ FILE *f;
+ if (argv[0][0] != '/')
+ {
+ fnam = malloc (strlen (argv[0]) + 2);
+ if (fnam == NULL)
+ abort ();
+ strcpy (fnam, "/");
+ strcat (fnam, argv[0]);
+ }
+
+ f = fopen (fnam, "rb");
+ if (f == NULL)
+ abort ();
+ fclose(f);
+
+ /* Cover another execution path. */
+ if (fopen ("/nonexistent", "rb") != NULL
+ || errno != ENOENT)
+ abort ();
+ printf ("pass\n");
+ return 0;
+}