[v1,09/24] tests/tcg: move architecture independent tests into subdir

Message ID 20180410193919.28026-10-alex.bennee@linaro.org
State New
Headers show
Series
  • fix building of tests/tcg
Related show

Commit Message

Alex Bennée April 10, 2018, 7:39 p.m.
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

-- 
2.16.2

Comments

Thomas Huth April 11, 2018, 10:22 a.m. | #1
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>
Philippe Mathieu-Daudé April 16, 2018, 12:05 a.m. | #2
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;

> -}

>
Alex Bennée April 16, 2018, 9:01 a.m. | #3
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

Patch

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;
-}