We will want to build these for all supported guest architectures so
lets move them all into one place. We also drop test_path at this
point because it needs qemu utils and glib bits which is hard to
support for cross compiling.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
tests/tcg/README | 10 +--
tests/tcg/multiarch/README | 1 +
tests/tcg/{ => multiarch}/linux-test.c | 0
tests/tcg/{ => multiarch}/sha1.c | 0
tests/tcg/{ => multiarch}/test-mmap.c | 0
tests/tcg/{ => multiarch}/testthread.c | 0
tests/tcg/test_path.c | 157 ---------------------------------
7 files changed, 5 insertions(+), 163 deletions(-)
create mode 100644 tests/tcg/multiarch/README
rename tests/tcg/{ => multiarch}/linux-test.c (100%)
rename tests/tcg/{ => multiarch}/sha1.c (100%)
rename tests/tcg/{ => multiarch}/test-mmap.c (100%)
rename tests/tcg/{ => multiarch}/testthread.c (100%)
delete mode 100644 tests/tcg/test_path.c
diff --git a/tests/tcg/README b/tests/tcg/README
index 5dcfb4852b..0890044cf0 100644
--- a/tests/tcg/README
+++ b/tests/tcg/README
@@ -1,9 +1,7 @@
-This directory contains various interesting programs for
-regression testing.
-
-The target "make test" runs the programs and, if applicable,
-runs "diff" to detect mismatches between output on the host and
-output on QEMU.
+This directory contains various interesting guest programs for
+regression testing. Tests are either multi-arch, meaning they can be
+built for all guest architectures that support linux-user executable,
+or they are architecture specific.
i386
====
diff --git a/tests/tcg/multiarch/README b/tests/tcg/multiarch/README
new file mode 100644
index 0000000000..522c9d2ea3
--- /dev/null
+++ b/tests/tcg/multiarch/README
@@ -0,0 +1 @@
+Multi-architecture linux-user tests
diff --git a/tests/tcg/linux-test.c b/tests/tcg/multiarch/linux-test.c
similarity index 100%
rename from tests/tcg/linux-test.c
rename to tests/tcg/multiarch/linux-test.c
diff --git a/tests/tcg/sha1.c b/tests/tcg/multiarch/sha1.c
similarity index 100%
rename from tests/tcg/sha1.c
rename to tests/tcg/multiarch/sha1.c
diff --git a/tests/tcg/test-mmap.c b/tests/tcg/multiarch/test-mmap.c
similarity index 100%
rename from tests/tcg/test-mmap.c
rename to tests/tcg/multiarch/test-mmap.c
diff --git a/tests/tcg/testthread.c b/tests/tcg/multiarch/testthread.c
similarity index 100%
rename from tests/tcg/testthread.c
rename to tests/tcg/multiarch/testthread.c
diff --git a/tests/tcg/test_path.c b/tests/tcg/test_path.c
deleted file mode 100644
index 1c29bce263..0000000000
--- a/tests/tcg/test_path.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Test path override code */
-#include "config-host.h"
-#include "util/cutils.c"
-#include "util/hexdump.c"
-#include "util/iov.c"
-#include "util/path.c"
-#include "util/qemu-timer-common.c"
-#include <stdarg.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-void qemu_log(const char *fmt, ...);
-
-/* Any log message kills the test. */
-void qemu_log(const char *fmt, ...)
-{
- va_list ap;
-
- fprintf(stderr, "FATAL: ");
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- exit(1);
-}
-
-#define NO_CHANGE(_path) \
- do { \
- if (strcmp(path(_path), _path) != 0) return __LINE__; \
- } while(0)
-
-#define CHANGE_TO(_path, _newpath) \
- do { \
- if (strcmp(path(_path), _newpath) != 0) return __LINE__; \
- } while(0)
-
-static void cleanup(void)
-{
- unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
- unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
- unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
- unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
- unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
- rmdir("/tmp/qemu-test_path/DIR1/DIR2");
- rmdir("/tmp/qemu-test_path/DIR1/DIR3");
- rmdir("/tmp/qemu-test_path/DIR1");
- rmdir("/tmp/qemu-test_path");
-}
-
-static unsigned int do_test(void)
-{
- if (mkdir("/tmp/qemu-test_path", 0700) != 0)
- return __LINE__;
-
- if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
- return __LINE__;
-
- if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
- return __LINE__;
-
- if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
- return __LINE__;
-
- if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
- return __LINE__;
-
- if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
- return __LINE__;
-
- if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
- return __LINE__;
-
- if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
- return __LINE__;
-
- if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
- return __LINE__;
-
- init_paths("/tmp/qemu-test_path");
-
- NO_CHANGE("/tmp");
- NO_CHANGE("/tmp/");
- NO_CHANGE("/tmp/qemu-test_path");
- NO_CHANGE("/tmp/qemu-test_path/");
- NO_CHANGE("/tmp/qemu-test_path/D");
- NO_CHANGE("/tmp/qemu-test_path/DI");
- NO_CHANGE("/tmp/qemu-test_path/DIR");
- NO_CHANGE("/tmp/qemu-test_path/DIR1");
- NO_CHANGE("/tmp/qemu-test_path/DIR1/");
-
- NO_CHANGE("/D");
- NO_CHANGE("/DI");
- NO_CHANGE("/DIR");
- NO_CHANGE("/DIR2");
- NO_CHANGE("/DIR1.");
-
- CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
- CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
-
- NO_CHANGE("/DIR1/D");
- NO_CHANGE("/DIR1/DI");
- NO_CHANGE("/DIR1/DIR");
- NO_CHANGE("/DIR1/DIR1");
-
- CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
- CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
-
- CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
- CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
-
- NO_CHANGE("/DIR1/DIR2/F");
- NO_CHANGE("/DIR1/DIR2/FI");
- NO_CHANGE("/DIR1/DIR2/FIL");
- NO_CHANGE("/DIR1/DIR2/FIL.");
-
- CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
- CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
- CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
- CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
-
- NO_CHANGE("/DIR1/DIR2/FILE6");
- NO_CHANGE("/DIR1/DIR2/FILE/X");
-
- CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
- CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
- CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
- CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
- CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
- CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
-
- NO_CHANGE("/DIR1/DIR2/../DIR1");
- NO_CHANGE("/DIR1/DIR2/../FILE");
-
- CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
- CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
-
- return 0;
-}
-
-int main(int argc, char *argv[])
-{
- int ret;
-
- ret = do_test();
- cleanup();
- if (ret) {
- fprintf(stderr, "test_path: failed on line %i\n", ret);
- return 1;
- }
- return 0;
-}
--
2.16.2
On 10.04.2018 21:39, Alex Bennée wrote:
> We will want to build these for all supported guest architectures so
> lets move them all into one place. We also drop test_path at this
> point because it needs qemu utils and glib bits which is hard to
> support for cross compiling.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> tests/tcg/README | 10 +--
> tests/tcg/multiarch/README | 1 +
> tests/tcg/{ => multiarch}/linux-test.c | 0
> tests/tcg/{ => multiarch}/sha1.c | 0
> tests/tcg/{ => multiarch}/test-mmap.c | 0
> tests/tcg/{ => multiarch}/testthread.c | 0
> tests/tcg/test_path.c | 157 ---------------------------------
> 7 files changed, 5 insertions(+), 163 deletions(-)
> create mode 100644 tests/tcg/multiarch/README
> rename tests/tcg/{ => multiarch}/linux-test.c (100%)
> rename tests/tcg/{ => multiarch}/sha1.c (100%)
> rename tests/tcg/{ => multiarch}/test-mmap.c (100%)
> rename tests/tcg/{ => multiarch}/testthread.c (100%)
> delete mode 100644 tests/tcg/test_path.c
Reviewed-by: Thomas Huth <thuth@redhat.com>
Hi Alex,
On 04/10/2018 04:39 PM, Alex Bennée wrote:
> We will want to build these for all supported guest architectures so
> lets move them all into one place. We also drop test_path at this
> point because it needs qemu utils and glib bits which is hard to
> support for cross compiling.
Can we keep it for the $target==$host case (or when NOT cross
compiling)? Maybe move it to tests/tcg/host/test_path.c
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> tests/tcg/README | 10 +--
> tests/tcg/multiarch/README | 1 +
> tests/tcg/{ => multiarch}/linux-test.c | 0
> tests/tcg/{ => multiarch}/sha1.c | 0
> tests/tcg/{ => multiarch}/test-mmap.c | 0
> tests/tcg/{ => multiarch}/testthread.c | 0
> tests/tcg/test_path.c | 157 ---------------------------------
> 7 files changed, 5 insertions(+), 163 deletions(-)
> create mode 100644 tests/tcg/multiarch/README
> rename tests/tcg/{ => multiarch}/linux-test.c (100%)
> rename tests/tcg/{ => multiarch}/sha1.c (100%)
> rename tests/tcg/{ => multiarch}/test-mmap.c (100%)
> rename tests/tcg/{ => multiarch}/testthread.c (100%)
> delete mode 100644 tests/tcg/test_path.c
>
> diff --git a/tests/tcg/README b/tests/tcg/README
> index 5dcfb4852b..0890044cf0 100644
> --- a/tests/tcg/README
> +++ b/tests/tcg/README
> @@ -1,9 +1,7 @@
> -This directory contains various interesting programs for
> -regression testing.
> -
> -The target "make test" runs the programs and, if applicable,
> -runs "diff" to detect mismatches between output on the host and
> -output on QEMU.
> +This directory contains various interesting guest programs for
> +regression testing. Tests are either multi-arch, meaning they can be
> +built for all guest architectures that support linux-user executable,
> +or they are architecture specific.
>
> i386
> ====
> diff --git a/tests/tcg/multiarch/README b/tests/tcg/multiarch/README
> new file mode 100644
> index 0000000000..522c9d2ea3
> --- /dev/null
> +++ b/tests/tcg/multiarch/README
> @@ -0,0 +1 @@
> +Multi-architecture linux-user tests
> diff --git a/tests/tcg/linux-test.c b/tests/tcg/multiarch/linux-test.c
> similarity index 100%
> rename from tests/tcg/linux-test.c
> rename to tests/tcg/multiarch/linux-test.c
> diff --git a/tests/tcg/sha1.c b/tests/tcg/multiarch/sha1.c
> similarity index 100%
> rename from tests/tcg/sha1.c
> rename to tests/tcg/multiarch/sha1.c
> diff --git a/tests/tcg/test-mmap.c b/tests/tcg/multiarch/test-mmap.c
> similarity index 100%
> rename from tests/tcg/test-mmap.c
> rename to tests/tcg/multiarch/test-mmap.c
> diff --git a/tests/tcg/testthread.c b/tests/tcg/multiarch/testthread.c
> similarity index 100%
> rename from tests/tcg/testthread.c
> rename to tests/tcg/multiarch/testthread.c
> diff --git a/tests/tcg/test_path.c b/tests/tcg/test_path.c
> deleted file mode 100644
> index 1c29bce263..0000000000
> --- a/tests/tcg/test_path.c
> +++ /dev/null
> @@ -1,157 +0,0 @@
> -/* Test path override code */
> -#include "config-host.h"
> -#include "util/cutils.c"
> -#include "util/hexdump.c"
> -#include "util/iov.c"
> -#include "util/path.c"
> -#include "util/qemu-timer-common.c"
> -#include <stdarg.h>
> -#include <sys/stat.h>
> -#include <fcntl.h>
> -
> -void qemu_log(const char *fmt, ...);
> -
> -/* Any log message kills the test. */
> -void qemu_log(const char *fmt, ...)
> -{
> - va_list ap;
> -
> - fprintf(stderr, "FATAL: ");
> - va_start(ap, fmt);
> - vfprintf(stderr, fmt, ap);
> - va_end(ap);
> - exit(1);
> -}
> -
> -#define NO_CHANGE(_path) \
> - do { \
> - if (strcmp(path(_path), _path) != 0) return __LINE__; \
> - } while(0)
> -
> -#define CHANGE_TO(_path, _newpath) \
> - do { \
> - if (strcmp(path(_path), _newpath) != 0) return __LINE__; \
> - } while(0)
> -
> -static void cleanup(void)
> -{
> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
> - rmdir("/tmp/qemu-test_path/DIR1/DIR2");
> - rmdir("/tmp/qemu-test_path/DIR1/DIR3");
> - rmdir("/tmp/qemu-test_path/DIR1");
> - rmdir("/tmp/qemu-test_path");
> -}
> -
> -static unsigned int do_test(void)
> -{
> - if (mkdir("/tmp/qemu-test_path", 0700) != 0)
> - return __LINE__;
> -
> - if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
> - return __LINE__;
> -
> - if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
> - return __LINE__;
> -
> - if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
> - return __LINE__;
> -
> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
> - return __LINE__;
> -
> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
> - return __LINE__;
> -
> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
> - return __LINE__;
> -
> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
> - return __LINE__;
> -
> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
> - return __LINE__;
> -
> - init_paths("/tmp/qemu-test_path");
> -
> - NO_CHANGE("/tmp");
> - NO_CHANGE("/tmp/");
> - NO_CHANGE("/tmp/qemu-test_path");
> - NO_CHANGE("/tmp/qemu-test_path/");
> - NO_CHANGE("/tmp/qemu-test_path/D");
> - NO_CHANGE("/tmp/qemu-test_path/DI");
> - NO_CHANGE("/tmp/qemu-test_path/DIR");
> - NO_CHANGE("/tmp/qemu-test_path/DIR1");
> - NO_CHANGE("/tmp/qemu-test_path/DIR1/");
> -
> - NO_CHANGE("/D");
> - NO_CHANGE("/DI");
> - NO_CHANGE("/DIR");
> - NO_CHANGE("/DIR2");
> - NO_CHANGE("/DIR1.");
> -
> - CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
> - CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
> -
> - NO_CHANGE("/DIR1/D");
> - NO_CHANGE("/DIR1/DI");
> - NO_CHANGE("/DIR1/DIR");
> - NO_CHANGE("/DIR1/DIR1");
> -
> - CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
> - CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
> -
> - CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
> - CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
> -
> - NO_CHANGE("/DIR1/DIR2/F");
> - NO_CHANGE("/DIR1/DIR2/FI");
> - NO_CHANGE("/DIR1/DIR2/FIL");
> - NO_CHANGE("/DIR1/DIR2/FIL.");
> -
> - CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
> - CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
> - CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
> - CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
> -
> - NO_CHANGE("/DIR1/DIR2/FILE6");
> - NO_CHANGE("/DIR1/DIR2/FILE/X");
> -
> - CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
> - CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
> - CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
> - CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
> - CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
> - CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> -
> - NO_CHANGE("/DIR1/DIR2/../DIR1");
> - NO_CHANGE("/DIR1/DIR2/../FILE");
> -
> - CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> - CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
> -
> - return 0;
> -}
> -
> -int main(int argc, char *argv[])
> -{
> - int ret;
> -
> - ret = do_test();
> - cleanup();
> - if (ret) {
> - fprintf(stderr, "test_path: failed on line %i\n", ret);
> - return 1;
> - }
> - return 0;
> -}
>
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
> Hi Alex,
>
> On 04/10/2018 04:39 PM, Alex Bennée wrote:
>> We will want to build these for all supported guest architectures so
>> lets move them all into one place. We also drop test_path at this
>> point because it needs qemu utils and glib bits which is hard to
>> support for cross compiling.
>
> Can we keep it for the $target==$host case (or when NOT cross
> compiling)? Maybe move it to tests/tcg/host/test_path.c
I'd rather not have tests/tcg/ including anything from QEMU as that
implies more libraries and hence a trickier cross-compile environment.
That said I didn't actually dig into what exactly
init_paths("/tmp/qemu-test_path") was intended to achieve.
>
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> tests/tcg/README | 10 +--
>> tests/tcg/multiarch/README | 1 +
>> tests/tcg/{ => multiarch}/linux-test.c | 0
>> tests/tcg/{ => multiarch}/sha1.c | 0
>> tests/tcg/{ => multiarch}/test-mmap.c | 0
>> tests/tcg/{ => multiarch}/testthread.c | 0
>> tests/tcg/test_path.c | 157 ---------------------------------
>> 7 files changed, 5 insertions(+), 163 deletions(-)
>> create mode 100644 tests/tcg/multiarch/README
>> rename tests/tcg/{ => multiarch}/linux-test.c (100%)
>> rename tests/tcg/{ => multiarch}/sha1.c (100%)
>> rename tests/tcg/{ => multiarch}/test-mmap.c (100%)
>> rename tests/tcg/{ => multiarch}/testthread.c (100%)
>> delete mode 100644 tests/tcg/test_path.c
>>
>> diff --git a/tests/tcg/README b/tests/tcg/README
>> index 5dcfb4852b..0890044cf0 100644
>> --- a/tests/tcg/README
>> +++ b/tests/tcg/README
>> @@ -1,9 +1,7 @@
>> -This directory contains various interesting programs for
>> -regression testing.
>> -
>> -The target "make test" runs the programs and, if applicable,
>> -runs "diff" to detect mismatches between output on the host and
>> -output on QEMU.
>> +This directory contains various interesting guest programs for
>> +regression testing. Tests are either multi-arch, meaning they can be
>> +built for all guest architectures that support linux-user executable,
>> +or they are architecture specific.
>>
>> i386
>> ====
>> diff --git a/tests/tcg/multiarch/README b/tests/tcg/multiarch/README
>> new file mode 100644
>> index 0000000000..522c9d2ea3
>> --- /dev/null
>> +++ b/tests/tcg/multiarch/README
>> @@ -0,0 +1 @@
>> +Multi-architecture linux-user tests
>> diff --git a/tests/tcg/linux-test.c b/tests/tcg/multiarch/linux-test.c
>> similarity index 100%
>> rename from tests/tcg/linux-test.c
>> rename to tests/tcg/multiarch/linux-test.c
>> diff --git a/tests/tcg/sha1.c b/tests/tcg/multiarch/sha1.c
>> similarity index 100%
>> rename from tests/tcg/sha1.c
>> rename to tests/tcg/multiarch/sha1.c
>> diff --git a/tests/tcg/test-mmap.c b/tests/tcg/multiarch/test-mmap.c
>> similarity index 100%
>> rename from tests/tcg/test-mmap.c
>> rename to tests/tcg/multiarch/test-mmap.c
>> diff --git a/tests/tcg/testthread.c b/tests/tcg/multiarch/testthread.c
>> similarity index 100%
>> rename from tests/tcg/testthread.c
>> rename to tests/tcg/multiarch/testthread.c
>> diff --git a/tests/tcg/test_path.c b/tests/tcg/test_path.c
>> deleted file mode 100644
>> index 1c29bce263..0000000000
>> --- a/tests/tcg/test_path.c
>> +++ /dev/null
>> @@ -1,157 +0,0 @@
>> -/* Test path override code */
>> -#include "config-host.h"
>> -#include "util/cutils.c"
>> -#include "util/hexdump.c"
>> -#include "util/iov.c"
>> -#include "util/path.c"
>> -#include "util/qemu-timer-common.c"
>> -#include <stdarg.h>
>> -#include <sys/stat.h>
>> -#include <fcntl.h>
>> -
>> -void qemu_log(const char *fmt, ...);
>> -
>> -/* Any log message kills the test. */
>> -void qemu_log(const char *fmt, ...)
>> -{
>> - va_list ap;
>> -
>> - fprintf(stderr, "FATAL: ");
>> - va_start(ap, fmt);
>> - vfprintf(stderr, fmt, ap);
>> - va_end(ap);
>> - exit(1);
>> -}
>> -
>> -#define NO_CHANGE(_path) \
>> - do { \
>> - if (strcmp(path(_path), _path) != 0) return __LINE__; \
>> - } while(0)
>> -
>> -#define CHANGE_TO(_path, _newpath) \
>> - do { \
>> - if (strcmp(path(_path), _newpath) != 0) return __LINE__; \
>> - } while(0)
>> -
>> -static void cleanup(void)
>> -{
>> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
>> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
>> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
>> - unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
>> - rmdir("/tmp/qemu-test_path/DIR1/DIR2");
>> - rmdir("/tmp/qemu-test_path/DIR1/DIR3");
>> - rmdir("/tmp/qemu-test_path/DIR1");
>> - rmdir("/tmp/qemu-test_path");
>> -}
>> -
>> -static unsigned int do_test(void)
>> -{
>> - if (mkdir("/tmp/qemu-test_path", 0700) != 0)
>> - return __LINE__;
>> -
>> - if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
>> - return __LINE__;
>> -
>> - if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
>> - return __LINE__;
>> -
>> - if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
>> - return __LINE__;
>> -
>> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
>> - return __LINE__;
>> -
>> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
>> - return __LINE__;
>> -
>> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
>> - return __LINE__;
>> -
>> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
>> - return __LINE__;
>> -
>> - if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
>> - return __LINE__;
>> -
>> - init_paths("/tmp/qemu-test_path");
>> -
>> - NO_CHANGE("/tmp");
>> - NO_CHANGE("/tmp/");
>> - NO_CHANGE("/tmp/qemu-test_path");
>> - NO_CHANGE("/tmp/qemu-test_path/");
>> - NO_CHANGE("/tmp/qemu-test_path/D");
>> - NO_CHANGE("/tmp/qemu-test_path/DI");
>> - NO_CHANGE("/tmp/qemu-test_path/DIR");
>> - NO_CHANGE("/tmp/qemu-test_path/DIR1");
>> - NO_CHANGE("/tmp/qemu-test_path/DIR1/");
>> -
>> - NO_CHANGE("/D");
>> - NO_CHANGE("/DI");
>> - NO_CHANGE("/DIR");
>> - NO_CHANGE("/DIR2");
>> - NO_CHANGE("/DIR1.");
>> -
>> - CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
>> - CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
>> -
>> - NO_CHANGE("/DIR1/D");
>> - NO_CHANGE("/DIR1/DI");
>> - NO_CHANGE("/DIR1/DIR");
>> - NO_CHANGE("/DIR1/DIR1");
>> -
>> - CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
>> - CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
>> -
>> - CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
>> - CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
>> -
>> - NO_CHANGE("/DIR1/DIR2/F");
>> - NO_CHANGE("/DIR1/DIR2/FI");
>> - NO_CHANGE("/DIR1/DIR2/FIL");
>> - NO_CHANGE("/DIR1/DIR2/FIL.");
>> -
>> - CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
>> - CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
>> - CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
>> - CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
>> -
>> - NO_CHANGE("/DIR1/DIR2/FILE6");
>> - NO_CHANGE("/DIR1/DIR2/FILE/X");
>> -
>> - CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
>> - CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
>> - CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
>> - CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
>> - CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
>> - CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> -
>> - NO_CHANGE("/DIR1/DIR2/../DIR1");
>> - NO_CHANGE("/DIR1/DIR2/../FILE");
>> -
>> - CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> - CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
>> -
>> - return 0;
>> -}
>> -
>> -int main(int argc, char *argv[])
>> -{
>> - int ret;
>> -
>> - ret = do_test();
>> - cleanup();
>> - if (ret) {
>> - fprintf(stderr, "test_path: failed on line %i\n", ret);
>> - return 1;
>> - }
>> - return 0;
>> -}
>>
--
Alex Bennée
© 2016 - 2026 Red Hat, Inc.