From: Christian B. <bor...@de...> - 2010-12-16 13:47:23
|
This patch adopts several testcases to work with s390x. --- cachegrind/tests/filter_stderr | 4 callgrind/tests/filter_stderr | 3 exp-ptrcheck/tests/is_arch_supported | 6 helgrind/tests/annotate_hbefore.c | 19 ++ helgrind/tests/tc03_re_excl.c | 2 helgrind/tests/tc07_hbl1.c | 13 + helgrind/tests/tc08_hbl2.c | 13 + helgrind/tests/tc11_XCHG.c | 5 memcheck/tests/Makefile.am | 5 memcheck/tests/atomic_incs.c | 48 ++++++ memcheck/tests/badjump.stderr.exp-s390x | 25 +++ memcheck/tests/badjump2.stderr.exp-s390x | 6 memcheck/tests/linux/capget.c | 3 memcheck/tests/linux/capget.stderr.exp2 | 15 ++ memcheck/tests/linux/timerfd-syscall.c | 5 memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x | 133 +++++++++++++++++++ memcheck/tests/partiallydefinedeq.c | 7 + memcheck/tests/partiallydefinedeq.stderr.exp3 | 20 ++ memcheck/tests/partiallydefinedeq.stderr.exp4 | 24 +++ memcheck/tests/sigaltstack.c | 10 + memcheck/tests/sigprocmask.c | 1 memcheck/tests/supp_unknown.stderr.exp-s390x | 10 + memcheck/tests/supp_unknown.supp | 7 + none/tests/faultstatus.c | 9 + tests/arch_test.c | 4 25 files changed, 386 insertions(+), 11 deletions(-) --- valgrind-upstream.orig/cachegrind/tests/filter_stderr +++ valgrind-upstream/cachegrind/tests/filter_stderr @@ -18,4 +18,6 @@ sed "/warning: Pentium 4 with 12 KB micr sed "/Simulating a 16 KB I-cache with 32 B lines/d" | sed "/warning: L3 cache found, using its data for the LL simulation./d" | sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" | -sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" +sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" | +sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d" + --- valgrind-upstream.orig/callgrind/tests/filter_stderr +++ valgrind-upstream/callgrind/tests/filter_stderr @@ -27,4 +27,5 @@ sed "/warning: Pentium 4 with 12 KB micr sed "/Simulating a 16 KB I-cache with 32 B lines/d" | sed "/warning: L3 cache found, using its data for the LL simulation./d" | sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" | -sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" +sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" | +sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d" --- valgrind-upstream.orig/exp-ptrcheck/tests/is_arch_supported +++ valgrind-upstream/exp-ptrcheck/tests/is_arch_supported @@ -1,7 +1,7 @@ #!/bin/sh # -# Not all architectures are supported by exp-ptr. Currently, PowerPC and ARM -# are not supported and will fail these tests as follows: +# Not all architectures are supported by exp-ptr. Currently, PowerPC, s390x +# and ARM are not supported and will fail these tests as follows: # WARNING: exp-ptrcheck on <blah> platforms: stack and global array # WARNING: checking is not currently supported. Only heap checking is # WARNING: supported. @@ -10,6 +10,6 @@ # architectures. case `uname -i` in - ppc*|arm*) exit 1;; + ppc*|arm*|s390x) exit 1;; *) exit 0;; esac --- valgrind-upstream.orig/helgrind/tests/annotate_hbefore.c +++ valgrind-upstream/helgrind/tests/annotate_hbefore.c @@ -167,6 +167,25 @@ UWord do_acasW ( UWord* addr, UWord expe return success; } +#elif defined(VGA_s390x) + +// s390x +/* return 1 if success, 0 if failure */ +UWord do_acasW(UWord* addr, UWord expected, UWord nyu ) +{ + int cc; + + __asm__ __volatile__ ( + "csg %2,%3,%1\n\t" + "ipm %0\n\t" + "srl %0,28\n\t" + : /* out */ "=r" (cc) + : /* in */ "Q" (*addr), "d" (expected), "d" (nyu) + : "memory", "cc" + ); + return cc == 0; +} + #endif void atomic_incW ( UWord* w ) --- valgrind-upstream.orig/helgrind/tests/tc03_re_excl.c +++ valgrind-upstream/helgrind/tests/tc03_re_excl.c @@ -10,7 +10,7 @@ /* A simple function to "use" a value, so that gcc can't possibly optimise it into nothing. */ static void use ( int x ) { - __asm__ __volatile__( "nop" : : "r"(x) : "cc","memory" ); + __asm__ __volatile__( "" : : "r"(x) : "cc","memory" ); } static void* worker_thread ( void* argV ) --- valgrind-upstream.orig/helgrind/tests/tc07_hbl1.c +++ valgrind-upstream/helgrind/tests/tc07_hbl1.c @@ -15,6 +15,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -34,6 +35,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif #if defined(PLAT_amd64_linux) || defined(PLAT_x86_linux) \ @@ -65,6 +68,16 @@ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "r8", "r9", "cc", "memory" \ ); +#elif defined(PLAT_s390x_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__( \ + "1: l 0,%0\n" \ + " lr 1,0\n" \ + " ahi 1,1\n" \ + " cs 0,1,%0\n" \ + " jl 1b\n" \ + : "+m" (_lval) :: "cc", "1","2" \ + ) #else # error "Fix Me for this platform" #endif --- valgrind-upstream.orig/helgrind/tests/tc08_hbl2.c +++ valgrind-upstream/helgrind/tests/tc08_hbl2.c @@ -31,6 +31,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -50,6 +51,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif @@ -82,6 +85,16 @@ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "r8", "r9", "cc", "memory" \ ); +#elif defined(PLAT_s390x_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__( \ + "1: l 0,%0\n" \ + " lr 1,0\n" \ + " ahi 1,1\n" \ + " cs 0,1,%0\n" \ + " jl 1b\n" \ + : "+m" (_lval) :: "cc", "0","1" \ + ) #else # error "Fix Me for this platform" #endif --- valgrind-upstream.orig/helgrind/tests/tc11_XCHG.c +++ valgrind-upstream/helgrind/tests/tc11_XCHG.c @@ -18,6 +18,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -37,6 +38,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif @@ -59,7 +62,7 @@ #elif defined(PLAT_ppc32_linux) || defined(PLAT_ppc64_linux) \ || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) \ - || defined(PLAT_arm_linux) + || defined(PLAT_arm_linux) || defined(PLAT_s390x_linux) # if defined(HAVE_BUILTIN_ATOMIC) # define XCHG_M_R(_addr,_lval) \ do { \ --- valgrind-upstream.orig/memcheck/tests/Makefile.am +++ valgrind-upstream/memcheck/tests/Makefile.am @@ -295,8 +295,9 @@ origin4_many_CFLAGS = $(AM_CFLAGS) -O origin5_bz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline origin6_fp_CFLAGS = $(AM_CFLAGS) -O -# Don't allow GCC to inline memcpy(), because then we can't intercept it -overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy +# Don't allow GCC to inline memcpy() and strcpy(), +# because then we can't intercept it +overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow --- valgrind-upstream.orig/memcheck/tests/atomic_incs.c +++ valgrind-upstream/memcheck/tests/atomic_incs.c @@ -76,6 +76,20 @@ __attribute__((noinline)) void atomic_ad } while (success != 1); #elif defined(VGA_arm) *p += n; +#elif defined(VGA_s390x) + int dummy; + __asm__ __volatile__( + " l 0,%0\n\t" + "0: st 0,%1\n\t" + " icm 1,1,%1\n\t" + " ar 1,%2\n\t" + " stcm 1,1,%1\n\t" + " l 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p), "+m" (dummy) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -140,6 +154,20 @@ __attribute__((noinline)) void atomic_ad } while (success != 1); #elif defined(VGA_arm) *p += n; +#elif defined(VGA_s390x) + int dummy; + __asm__ __volatile__( + " l 0,%0\n\t" + "0: st 0,%1\n\t" + " icm 1,3,%1\n\t" + " ar 1,%2\n\t" + " stcm 1,3,%1\n\t" + " l 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p), "+m" (dummy) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -216,6 +244,16 @@ __attribute__((noinline)) void atomic_ad : /*trash*/ "memory", "cc", "r5", "r8", "r9", "r10" ); } while (block[2] != 0); +#elif defined(VGA_s390x) + __asm__ __volatile__( + " l 0,%0\n\t" + "0: lr 1,0\n\t" + " ar 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -252,6 +290,16 @@ __attribute__((noinline)) void atomic_ad : /*trash*/ "memory", "cc", "r15" ); } while (success != 1); +#elif defined(VGA_s390x) + __asm__ __volatile__( + " lg 0,%0\n\t" + "0: lgr 1,0\n\t" + " agr 1,%1\n\t" + " csg 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif --- /dev/null +++ valgrind-upstream/memcheck/tests/badjump.stderr.exp-s390x @@ -0,0 +1,25 @@ + +Jump to the invalid address stated on the next line + at 0x........: ??? + by 0x........: main (badjump.c:17) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + +Process terminating with default action of signal 11 (SIGSEGV) + Access not within mapped region at address 0x........ + at 0x........: ??? + by 0x........: main (badjump.c:17) + If you believe this happened as a result of a stack + overflow in your program's main thread (unlikely but + possible), you can try to increase the size of the + main thread stack using the --main-stacksize= flag. + The main thread stack size used in this run was .... + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) --- /dev/null +++ valgrind-upstream/memcheck/tests/badjump2.stderr.exp-s390x @@ -0,0 +1,6 @@ +Jump to the invalid address stated on the next line + at 0x........: ??? + by 0x........: main (badjump2.c:46) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Signal caught, as expected --- valgrind-upstream.orig/memcheck/tests/linux/capget.c +++ valgrind-upstream/memcheck/tests/linux/capget.c @@ -4,6 +4,7 @@ #include <stdio.h> /* printf() */ #include <unistd.h> /* syscall() */ #include <sys/syscall.h> /* __NR_capget */ +#include <sys/types.h> /* uid_t */ #include <linux/capability.h> /* _LINUX_CAPABILITY_VERSION */ @@ -13,6 +14,8 @@ int main() struct __user_cap_data_struct d; int syscall_result; + if (getuid() == 0) + fprintf(stderr, "Running as root\n"); h.version = _LINUX_CAPABILITY_VERSION; h.pid = 0; syscall_result = syscall(__NR_capget, &h, &d); --- /dev/null +++ valgrind-upstream/memcheck/tests/linux/capget.stderr.exp2 @@ -0,0 +1,15 @@ + +Running as root +capget result: +effective 0x........ +permitted 0x........ +inheritable 0 + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) --- valgrind-upstream.orig/memcheck/tests/linux/timerfd-syscall.c +++ valgrind-upstream/memcheck/tests/linux/timerfd-syscall.c @@ -61,6 +61,8 @@ #define __NR_timerfd_create 322 #elif defined(__powerpc__) #define __NR_timerfd_create 306 +#elif defined(__s390x__) +#define __NR_timerfd_create 319 #else #error Cannot detect your architecture! #endif @@ -76,6 +78,9 @@ #elif defined(__powerpc__) #define __NR_timerfd_settime 311 #define __NR_timerfd_gettime 312 +#elif defined(__s390x__) +#define __NR_timerfd_settime 320 +#define __NR_timerfd_gettime 321 #else #error Cannot detect your architecture! #endif --- /dev/null +++ valgrind-upstream/memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x @@ -0,0 +1,133 @@ +Conditional jump or move depends on uninitialised value(s) + at 0x........: main (origin5-bz2.c:6481) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2820) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2823) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2854) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2858) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2859) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2963) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2964) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: fallbackSort (origin5-bz2.c:2269) + by 0x........: BZ2_blockSort (origin5-bz2.c:3116) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: fallbackSort (origin5-bz2.c:2275) + by 0x........: BZ2_blockSort (origin5-bz2.c:3116) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: main (origin5-bz2.c:6512) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + --- valgrind-upstream.orig/memcheck/tests/partiallydefinedeq.c +++ valgrind-upstream/memcheck/tests/partiallydefinedeq.c @@ -64,9 +64,16 @@ int main ( void ) // and so never appears as a literal, and so the instrumenter // never spots it and so doesn't use the expensive scheme (for foo). // Hence also on ARM we get 3 errors, not 2. +// +// s390x is even more complicated: Depending on the architecture +// level we have the 0x80808080 either in the literal pool (3 errors) +// or with the extended immediate facility in an instruction (2 errors). static __attribute__((noinline)) void bar ( void ) { #if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__) fprintf(stderr, "Currently running on ppc32/64/arm: this test should give 3 errors, not 2.\n"); #endif +#if defined(__s390__) + fprintf(stderr, "On s390 we might see 2 or 3 errors.\n"); +#endif } --- /dev/null +++ valgrind-upstream/memcheck/tests/partiallydefinedeq.stderr.exp3 @@ -0,0 +1,20 @@ + +On s390 we might see 2 or 3 errors. +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:52) + + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) --- /dev/null +++ valgrind-upstream/memcheck/tests/partiallydefinedeq.stderr.exp4 @@ -0,0 +1,24 @@ + +On s390 we might see 2 or 3 errors. +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:45) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:52) + + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) --- valgrind-upstream.orig/memcheck/tests/sigaltstack.c +++ valgrind-upstream/memcheck/tests/sigaltstack.c @@ -5,6 +5,14 @@ #include <signal.h> #include "tests/sys_mman.h" +#ifdef __s390x__ +/* on some glibc versions on s390x vprintf takes more that 10000 bytes */ +#define STACKSIZE SIGSTKSZ * 3 +#else +#define STACKSIZE SIGSTKSZ * 2 +#endif + + void sig_handler(int sig){ int var; fprintf(stderr, "caught signal, local var is on %p\n", &var); @@ -14,7 +22,7 @@ int main(int argv, char** argc) { int res, i; stack_t sigstk; struct sigaction act; - static const int size = SIGSTKSZ*2; + static const int size = STACKSIZE; // We give EXEC permissions because this won't work on ppc32 unless you // ask for an alt stack with EXEC permissions, // since signal returning requires execution of code on the stack. --- valgrind-upstream.orig/memcheck/tests/sigprocmask.c +++ valgrind-upstream/memcheck/tests/sigprocmask.c @@ -13,6 +13,7 @@ int main(void) { #if defined(__NR_sigprocmask) \ && !defined(__powerpc64__) \ + && !defined(__s390x__) \ && !defined(_AIX) \ && !defined(__arm__) --- /dev/null +++ valgrind-upstream/memcheck/tests/supp_unknown.stderr.exp-s390x @@ -0,0 +1,10 @@ + +Process terminating with default action of signal 11 (SIGSEGV) + Access not within mapped region at address 0x........ + at 0x........: ??? + by 0x........: main (badjump.c:17) + If you believe this happened as a result of a stack + overflow in your program's main thread (unlikely but + possible), you can try to increase the size of the + main thread stack using the --main-stacksize= flag. + The main thread stack size used in this run was .... --- valgrind-upstream.orig/memcheck/tests/supp_unknown.supp +++ valgrind-upstream/memcheck/tests/supp_unknown.supp @@ -6,3 +6,10 @@ fun:(below main) } +{ + <insert a suppression name here> + Memcheck:Jump + obj:* + fun:main +} + --- valgrind-upstream.orig/none/tests/faultstatus.c +++ valgrind-upstream/none/tests/faultstatus.c @@ -70,7 +70,13 @@ static int testcode(int code, int want) static int testaddr(void *addr, volatile void *want) { + /* Some architectures (e.g. s390) just provide enough information to + resolve the page fault, but do not provide the offset within a page */ +#if defined(__s390__) + if (addr != (void *) ((unsigned long) want & ~0xffful)) { +#else if (addr != want) { +#endif fprintf(stderr, " FAIL: expected si_addr==%p, not %p\n", want, addr); return 0; } @@ -132,7 +138,8 @@ int main() for(i = 0; i < sizeof(sigs)/sizeof(*sigs); i++) sigaction(sigs[i], &sa, NULL); - fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL, 0600); + /* we need O_RDWR for the truncate below */ + fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL|O_RDWR, 0600); if (fd == -1) { perror("tmpfile"); exit(1); --- valgrind-upstream.orig/tests/arch_test.c +++ valgrind-upstream/tests/arch_test.c @@ -28,6 +28,7 @@ char* all_archs[] = { "ppc32", "ppc64", "arm", + "s390x", NULL }; @@ -47,6 +48,9 @@ static Bool go(char* arch) if ( 0 == strcmp( arch, "ppc64" ) ) return True; if ( 0 == strcmp( arch, "ppc32" ) ) return True; +#elif defined(VGP_s390x_linux) + if ( 0 == strcmp( arch, "s390x" ) ) return True; + #elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) if (sizeof(void*) == 8) { /* CPU is in 64-bit mode */ |