diff options
Diffstat (limited to 'test')
38 files changed, 725 insertions, 15 deletions
diff --git a/test/Rules.mak b/test/Rules.mak index 4e76ed3..b81eb19 100644 --- a/test/Rules.mak +++ b/test/Rules.mak @@ -21,6 +21,7 @@ TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \ -e 's/sun.*/sparc/' -e 's/sparc.*/sparc/' \ -e 's/sa110/arm/' -e 's/arm.*/arm/g' \ -e 's/m68k.*/m68k/' \ + -e 's/nds32.*/nds32/' \ -e 's/parisc.*/hppa/' \ -e 's/ppc/powerpc/g' \ -e 's/sh[234].*/sh/' \ diff --git a/test/math/libm-test-ulps-csky b/test/math/libm-test-ulps-csky new file mode 100644 index 0000000..46b2ac5 --- /dev/null +++ b/test/math/libm-test-ulps-csky @@ -0,0 +1,145 @@ +# Begin of automatic generation + +# cos +Test "cos (M_PI_6l * 2.0) == 0.5": +double: 1 +idouble: 1 +Test "cos (M_PI_6l * 4.0) == -0.5": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +# erf +Test "erf (0.75) == 0.711155633653515131598937834591410777": +double: 1 +idouble: 1 +Test "erf (1.25) == 0.922900128256458230136523481197281140": +double: 1 +idouble: 1 + +# erfc +Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": +double: 1 +idouble: 1 + +# exp +Test "exp (1) == e": +double: 1 +idouble: 1 + +# expm1 +Test "expm1 (0.75) == 1.11700001661267466854536981983709561": +double: 1 +idouble: 1 + +# hypot +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 + +# lgamma +Test "lgamma (0.7) == 0.260867246531666514385732417016759578": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +# log10 +Test "log10 (0.75) == -0.124938736608299953132449886193870744": +double: 1 +idouble: 1 +Test "log10 (e) == log10(e)": +float: 1 +ifloat: 1 + +# tgamma +Test "tgamma (-0.5) == -2 sqrt (pi)": +double: 1 +idouble: 1 +Test "tgamma (0.7) == 1.29805533264755778568117117915281162": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# Maximal error of functions: +Function: "cos": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: "erf": +double: 1 +idouble: 1 + +Function: "erfc": +double: 1 +idouble: 1 + +Function: "exp": +double: 1 +idouble: 1 + +Function: "expm1": +double: 1 +idouble: 1 + +Function: "hypot": +float: 1 +ifloat: 1 + +Function: "lgamma": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "log": +float: 1 +ifloat: 1 + +Function: "log10": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "tan": +double: 1 +idouble: 1 + +Function: "tgamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# end of automatic generation diff --git a/test/math/libm-test-ulps-nds32 b/test/math/libm-test-ulps-nds32 new file mode 100644 index 0000000..46b2ac5 --- /dev/null +++ b/test/math/libm-test-ulps-nds32 @@ -0,0 +1,145 @@ +# Begin of automatic generation + +# cos +Test "cos (M_PI_6l * 2.0) == 0.5": +double: 1 +idouble: 1 +Test "cos (M_PI_6l * 4.0) == -0.5": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +# erf +Test "erf (0.75) == 0.711155633653515131598937834591410777": +double: 1 +idouble: 1 +Test "erf (1.25) == 0.922900128256458230136523481197281140": +double: 1 +idouble: 1 + +# erfc +Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": +double: 1 +idouble: 1 + +# exp +Test "exp (1) == e": +double: 1 +idouble: 1 + +# expm1 +Test "expm1 (0.75) == 1.11700001661267466854536981983709561": +double: 1 +idouble: 1 + +# hypot +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": +float: 1 +ifloat: 1 + +# lgamma +Test "lgamma (0.7) == 0.260867246531666514385732417016759578": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +# log10 +Test "log10 (0.75) == -0.124938736608299953132449886193870744": +double: 1 +idouble: 1 +Test "log10 (e) == log10(e)": +float: 1 +ifloat: 1 + +# tgamma +Test "tgamma (-0.5) == -2 sqrt (pi)": +double: 1 +idouble: 1 +Test "tgamma (0.7) == 1.29805533264755778568117117915281162": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# Maximal error of functions: +Function: "cos": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: "erf": +double: 1 +idouble: 1 + +Function: "erfc": +double: 1 +idouble: 1 + +Function: "exp": +double: 1 +idouble: 1 + +Function: "expm1": +double: 1 +idouble: 1 + +Function: "hypot": +float: 1 +ifloat: 1 + +Function: "lgamma": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "log": +float: 1 +ifloat: 1 + +Function: "log10": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "tan": +double: 1 +idouble: 1 + +Function: "tgamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# end of automatic generation diff --git a/test/nptl/tst-atfork1.c b/test/nptl/tst-atfork1.c index 483f7a6..2537fc2 100644 --- a/test/nptl/tst-atfork1.c +++ b/test/nptl/tst-atfork1.c @@ -24,6 +24,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static int val; @@ -118,3 +120,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-atfork2.c b/test/nptl/tst-atfork2.c index b9808ac..00e96ed 100644 --- a/test/nptl/tst-atfork2.c +++ b/test/nptl/tst-atfork2.c @@ -25,6 +25,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + /* Must be exported. */ int val; @@ -154,3 +156,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-barrier2.c b/test/nptl/tst-barrier2.c index 8ffcda0..35a74b1 100644 --- a/test/nptl/tst-barrier2.c +++ b/test/nptl/tst-barrier2.c @@ -26,6 +26,7 @@ #include <sys/mman.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ static int do_test (void) @@ -182,3 +183,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-basic4.c b/test/nptl/tst-basic4.c index f7bdf1d..02ddf93 100644 --- a/test/nptl/tst-basic4.c +++ b/test/nptl/tst-basic4.c @@ -25,6 +25,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static void final_test (void) { @@ -98,3 +100,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cancel16.c b/test/nptl/tst-cancel16.c index a1e3c5a..9a53e99 100644 --- a/test/nptl/tst-cancel16.c +++ b/test/nptl/tst-cancel16.c @@ -26,6 +26,7 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ static pthread_barrier_t b2; static int fd; @@ -229,3 +230,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cancel21.c b/test/nptl/tst-cancel21.c index 489c18a..db2d8ae 100644 --- a/test/nptl/tst-cancel21.c +++ b/test/nptl/tst-cancel21.c @@ -24,6 +24,7 @@ #include <sys/wait.h> #include <unistd.h> +#ifdef __ARCH_USE_MMU__ static int fd[4]; static pthread_barrier_t b; @@ -291,3 +292,13 @@ do_test (void) #define TIMEOUT 40 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cancel4.c b/test/nptl/tst-cancel4.c index 6eaf5b1..a5fc2ff 100644 --- a/test/nptl/tst-cancel4.c +++ b/test/nptl/tst-cancel4.c @@ -39,6 +39,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + #if defined(__GLIBC__) || defined(__UCLIBC__) #define SIGCANCEL __SIGRTMIN #else @@ -2396,3 +2398,13 @@ do_test (void) #define TIMEOUT 60 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cond12.c b/test/nptl/tst-cond12.c index b38d9d5..2f41bcb 100644 --- a/test/nptl/tst-cond12.c +++ b/test/nptl/tst-cond12.c @@ -25,6 +25,7 @@ #include <sys/mman.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ static char fname[] = "/tmp/tst-cond12-XXXXXX"; static int fd; @@ -193,3 +194,13 @@ do_test (void) return 0; } + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cond4.c b/test/nptl/tst-cond4.c index 47a7380..25bfa82 100644 --- a/test/nptl/tst-cond4.c +++ b/test/nptl/tst-cond4.c @@ -26,6 +26,7 @@ #include <sys/wait.h> #include <stdint.h> +#ifdef __ARCH_USE_MMU__ int *condition; @@ -261,3 +262,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cond6.c b/test/nptl/tst-cond6.c index f28d4c1..9189989 100644 --- a/test/nptl/tst-cond6.c +++ b/test/nptl/tst-cond6.c @@ -28,6 +28,7 @@ #include <sys/wait.h> #include <stdint.h> +#ifdef __ARCH_USE_MMU__ int *condition; @@ -231,3 +232,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cpuclock1.c b/test/nptl/tst-cpuclock1.c index 9d68ec5..a7e76be 100644 --- a/test/nptl/tst-cpuclock1.c +++ b/test/nptl/tst-cpuclock1.c @@ -26,6 +26,8 @@ #include <signal.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ + /* This function is intended to rack up both user and system time. */ static void chew_cpu (void) @@ -304,3 +306,13 @@ do_test (void) #define TIMEOUT 5 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-cputimer3.c b/test/nptl/tst-cputimer3.c index 056766a..335c9f4 100644 --- a/test/nptl/tst-cputimer3.c +++ b/test/nptl/tst-cputimer3.c @@ -13,6 +13,8 @@ #include <signal.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ + static clockid_t child_clock; #define TEST_CLOCK child_clock @@ -128,3 +130,13 @@ setup_test (void) #endif #include "tst-timer4.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-exec2.c b/test/nptl/tst-exec2.c index c621b4e..e916fec 100644 --- a/test/nptl/tst-exec2.c +++ b/test/nptl/tst-exec2.c @@ -28,6 +28,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static void * tf (void *arg) { @@ -151,3 +153,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-exec3.c b/test/nptl/tst-exec3.c index f4a6807..c4683f2 100644 --- a/test/nptl/tst-exec3.c +++ b/test/nptl/tst-exec3.c @@ -28,6 +28,7 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ static void * tf (void *arg) @@ -150,3 +151,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-flock2.c b/test/nptl/tst-flock2.c index acc6972..dac6c2c 100644 --- a/test/nptl/tst-flock2.c +++ b/test/nptl/tst-flock2.c @@ -27,6 +27,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t lock2 = PTHREAD_MUTEX_INITIALIZER; static int fd; @@ -258,3 +260,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-fork1.c b/test/nptl/tst-fork1.c index 448255d..8c603b9 100644 --- a/test/nptl/tst-fork1.c +++ b/test/nptl/tst-fork1.c @@ -25,6 +25,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static void * thread_function (void * arg) { @@ -118,3 +120,13 @@ main (void) return result; } + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-fork2.c b/test/nptl/tst-fork2.c index e653d7e..1c4bc2f 100644 --- a/test/nptl/tst-fork2.c +++ b/test/nptl/tst-fork2.c @@ -24,6 +24,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static pid_t initial_pid; @@ -87,3 +89,13 @@ main (void) return status; } + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-fork3.c b/test/nptl/tst-fork3.c index 434aa8f..defac30 100644 --- a/test/nptl/tst-fork3.c +++ b/test/nptl/tst-fork3.c @@ -24,6 +24,7 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ static pid_t initial_pid; @@ -105,3 +106,13 @@ main (void) return 1; } + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-fork4.c b/test/nptl/tst-fork4.c index ee87108..5a86fe2 100644 --- a/test/nptl/tst-fork4.c +++ b/test/nptl/tst-fork4.c @@ -24,6 +24,7 @@ #include <sys/wait.h> #include <string.h> +#ifdef __ARCH_USE_MMU__ static int do_test (void) @@ -62,3 +63,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-getpid3.c b/test/nptl/tst-getpid3.c index 974cd99..01d1e46 100644 --- a/test/nptl/tst-getpid3.c +++ b/test/nptl/tst-getpid3.c @@ -7,6 +7,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static pid_t pid; static void * @@ -112,3 +114,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-mqueue1.c b/test/nptl/tst-mqueue1.c index f07df0b..1ce364e 100644 --- a/test/nptl/tst-mqueue1.c +++ b/test/nptl/tst-mqueue1.c @@ -29,6 +29,8 @@ #include "tst-mqueue.h" #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static int intcmp (const void *a, const void *b) { @@ -415,3 +417,13 @@ do_test (void) } #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-mqueue3.c b/test/nptl/tst-mqueue3.c index 2cec763..f7bee31 100644 --- a/test/nptl/tst-mqueue3.c +++ b/test/nptl/tst-mqueue3.c @@ -34,6 +34,8 @@ #if _POSIX_THREADS # include <pthread.h> +#ifdef __ARCH_USE_MMU__ + static pid_t pid; static mqd_t m; static const char message[] = "hello"; @@ -243,3 +245,13 @@ do_test (void) #endif #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-mqueue5.c b/test/nptl/tst-mqueue5.c index ea6cc96..c17cfb3 100644 --- a/test/nptl/tst-mqueue5.c +++ b/test/nptl/tst-mqueue5.c @@ -34,6 +34,8 @@ #include "tst-mqueue.h" #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + #define TIMEOUT 3 #if _POSIX_THREADS @@ -1012,3 +1014,13 @@ do_test (void) #endif #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-mutex4.c b/test/nptl/tst-mutex4.c index f66abc0..c18883f 100644 --- a/test/nptl/tst-mutex4.c +++ b/test/nptl/tst-mutex4.c @@ -26,6 +26,7 @@ #include <sys/mman.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ static int do_test (void) @@ -188,3 +189,13 @@ do_test (void) #define TIMEOUT 4 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-mutex9.c b/test/nptl/tst-mutex9.c index 2d5bf75..687a474 100644 --- a/test/nptl/tst-mutex9.c +++ b/test/nptl/tst-mutex9.c @@ -28,6 +28,8 @@ #include <sys/time.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + //int gettimeofday(struct timeval *tv, struct timezone *tz); @@ -189,3 +191,13 @@ do_test (void) #define TIMEOUT 3 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-rwlock12.c b/test/nptl/tst-rwlock12.c index 695e720..123a918 100644 --- a/test/nptl/tst-rwlock12.c +++ b/test/nptl/tst-rwlock12.c @@ -27,6 +27,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static int do_test (void) { @@ -205,3 +207,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-rwlock4.c b/test/nptl/tst-rwlock4.c index 0bbf083..5067462 100644 --- a/test/nptl/tst-rwlock4.c +++ b/test/nptl/tst-rwlock4.c @@ -26,6 +26,7 @@ #include <sys/mman.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ static int do_test (void) @@ -187,3 +188,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-sem3.c b/test/nptl/tst-sem3.c index 1b598dc..3969bc7 100644 --- a/test/nptl/tst-sem3.c +++ b/test/nptl/tst-sem3.c @@ -27,6 +27,7 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ int do_test (void) @@ -143,3 +144,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-sem4.c b/test/nptl/tst-sem4.c index 4293b2c..1ef1428 100644 --- a/test/nptl/tst-sem4.c +++ b/test/nptl/tst-sem4.c @@ -24,6 +24,8 @@ #include <unistd.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + static void remove_sem (int status, void *arg) { @@ -151,3 +153,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-signal1.c b/test/nptl/tst-signal1.c index cb31108..54c9a3b 100644 --- a/test/nptl/tst-signal1.c +++ b/test/nptl/tst-signal1.c @@ -27,6 +27,7 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ static sigset_t ss; static pthread_barrier_t *b; @@ -187,3 +188,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-signal2.c b/test/nptl/tst-signal2.c index 4df0868..3db8ab2 100644 --- a/test/nptl/tst-signal2.c +++ b/test/nptl/tst-signal2.c @@ -27,6 +27,7 @@ #include <string.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ static sigset_t ss; static pthread_barrier_t *b; @@ -196,3 +197,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-spin2.c b/test/nptl/tst-spin2.c index 6119a3b..af3ec05 100644 --- a/test/nptl/tst-spin2.c +++ b/test/nptl/tst-spin2.c @@ -26,6 +26,7 @@ #include <sys/mman.h> #include <sys/wait.h> +#ifdef __ARCH_USE_MMU__ static int do_test (void) @@ -156,3 +157,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/nptl/tst-tsd6.c b/test/nptl/tst-tsd6.c index ea0a481..7605745 100644 --- a/test/nptl/tst-tsd6.c +++ b/test/nptl/tst-tsd6.c @@ -6,6 +6,8 @@ #include <sys/wait.h> #include "../test-skeleton.h" +#ifdef __ARCH_USE_MMU__ + #define NKEYS 100 static pthread_key_t keys[NKEYS]; static pthread_barrier_t b; @@ -88,3 +90,13 @@ do_test (void) #define TEST_FUNCTION do_test () #include "../test-skeleton.c" + +#else + +int main(void) +{ + printf("Skipping test on non-mmu host!\n"); + return 23; +} + +#endif diff --git a/test/pthread/Makefile.in b/test/pthread/Makefile.in index b989334..c989b58 100644 --- a/test/pthread/Makefile.in +++ b/test/pthread/Makefile.in @@ -6,6 +6,9 @@ TESTS_DISABLED += cancellation-points ifeq ($(TARGET_ARCH),microblaze) TESTS_DISABLED += ex3 endif +ifeq ($(TARGET_ARCH),nds32) +TESTS_DISABLED += ex3 +endif ifeq ($(TARGET_ARCH),sh) TESTS_DISABLED += ex2 ex7 endif diff --git a/test/test-skeleton.c b/test/test-skeleton.c index 557996d..323a9c6 100644 --- a/test/test-skeleton.c +++ b/test/test-skeleton.c @@ -222,18 +222,15 @@ handler_killpid(int sig) /* We provide the entry point here. */ int -main (int argc, char *argv[]) +main (int argc, char *argv[], char *envp[]) { -#ifdef __ARCH_USE_MMU__ int direct = 0; /* Directly call the test function? */ -#else - int direct = 1; -#endif int status; int opt; unsigned int timeoutfactor = 1; pid_t termpid; char *envstr_timeoutfactor; + char **argv1; /* Make uses of freed and uninitialized memory known. */ #ifdef __MALLOC_STANDARD__ @@ -303,19 +300,21 @@ main (int argc, char *argv[]) /* make sure temporary files are deleted. */ atexit (delete_temp_files); - /* Correct for the possible parameters. */ - argv[optind - 1] = argv[0]; - argv += optind - 1; - argc -= optind - 1; + /* If we are not expected to fork run the function immediately. */ + if (direct) + { + /* Correct for the possible parameters. */ + argv[optind - 1] = argv[0]; + argv += optind - 1; + argc -= optind - 1; - /* Call the initializing function, if one is available. */ + /* Call the initializing function, if one is available. */ #ifdef PREPARE - PREPARE (argc, argv); + PREPARE (argc, argv); #endif - /* If we are not expected to fork run the function immediately. */ - if (direct) - return TEST_FUNCTION; + return TEST_FUNCTION; + } /* Set up the test environment: - prevent core dumps @@ -340,15 +339,51 @@ main (int argc, char *argv[]) if (setpgid (0, 0) != 0) printf ("Failed to set the process group ID: %m\n"); + /* Correct for the possible parameters. */ + argv[optind - 1] = argv[0]; + argv += optind - 1; + argc -= optind - 1; + + /* Call the initializing function, if one is available. */ +#ifdef PREPARE + PREPARE (argc, argv); +#endif + /* Execute the test function and exit with the return value. */ exit (TEST_FUNCTION); } else if (pid < 0) -#endif { perror ("Cannot fork test program"); exit (1); } +#else + argv1 = malloc ((argc + 2) * sizeof(void *)); + argv1[0] = argv[0]; + argv1[1] = "-d"; + memcpy(argv1 + 2, argv + 1, argc * sizeof(void *)); + + pid = vfork (); + if (pid == 0) + { + /* This is the child. */ + /* We put the test process in its own pgrp so that if it bogusly + generates any job control signals, they won't hit the whole build. */ + if (setpgid (0, 0) != 0) + printf ("Failed to set the process group ID: %m\n"); + + if (execve (argv1[0], argv1, envp) < 0) + { + perror ("Cannot exec test program"); + _exit (1); + } + } + else if (pid < 0) + { + perror ("Cannot vfork test program"); + exit (1); + } +#endif #ifdef __XXX_HANDLE_CTRL_C signal (SIGTERM, handler_killpid); |