diff --git a/.cvsignore b/.cvsignore index 8bdcd3c..0b7d2ac 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -valgrind-3.2.3.tar.bz2 +valgrind-3.3.0.tar.bz2 diff --git a/sources b/sources index a6f9be5..27fc6d2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -978847992b136c8d8cb5c6559a91df1c valgrind-3.2.3.tar.bz2 +e5fc39755a714f36b7e5014c1c6d4748 valgrind-3.3.0.tar.bz2 diff --git a/valgrind-3.2.3-cachegrind-improvements.patch b/valgrind-3.2.3-cachegrind-improvements.patch deleted file mode 100644 index 42f9158..0000000 --- a/valgrind-3.2.3-cachegrind-improvements.patch +++ /dev/null @@ -1,64 +0,0 @@ ---- valgrind-3.2.3/cachegrind/cg_sim.c.jj 2007-01-08 02:43:10.000000000 -0500 -+++ valgrind-3.2.3/cachegrind/cg_sim.c 2007-02-13 07:15:46.000000000 -0500 -@@ -42,29 +42,32 @@ typedef struct { - Int size; /* bytes */ - Int assoc; - Int line_size; /* bytes */ -- Int sets; - Int sets_min_1; - Int assoc_bits; - Int line_size_bits; - Int tag_shift; -- Char desc_line[128]; - UWord* tags; --} cache_t2; -+ Char desc_line[128]; -+} cache_t2 -+#ifdef __GNUC__ -+__attribute__ ((aligned (8 * sizeof (Int)))) -+#endif -+; - - /* By this point, the size/assoc/line_size has been checked. */ - static void cachesim_initcache(cache_t config, cache_t2* c) - { -- Int i; -+ Int sets; - - c->size = config.size; - c->assoc = config.assoc; - c->line_size = config.line_size; - -- c->sets = (c->size / c->line_size) / c->assoc; -- c->sets_min_1 = c->sets - 1; -+ sets = (c->size / c->line_size) / c->assoc; -+ c->sets_min_1 = sets - 1; - c->assoc_bits = VG_(log2)(c->assoc); - c->line_size_bits = VG_(log2)(c->line_size); -- c->tag_shift = c->line_size_bits + VG_(log2)(c->sets); -+ c->tag_shift = c->line_size_bits + VG_(log2)(sets); - - if (c->assoc == 1) { - VG_(sprintf)(c->desc_line, "%d B, %d B, direct-mapped", -@@ -74,10 +77,7 @@ static void cachesim_initcache(cache_t c - c->size, c->line_size, c->assoc); - } - -- c->tags = VG_(malloc)(sizeof(UWord) * c->sets * c->assoc); -- -- for (i = 0; i < c->sets * c->assoc; i++) -- c->tags[i] = 0; -+ c->tags = VG_(calloc)(sizeof(UWord) * sets, c->assoc); - } - - /* This is done as a macro rather than by passing in the cache_t2 as an -@@ -140,8 +140,7 @@ void cachesim_##L##_doref(Addr a, UChar - return; \ - \ - /* Second case: word straddles two lines. */ \ -- /* Nb: this is a fast way of doing ((set1+1) % L.sets) */ \ -- } else if (((set1 + 1) & (L.sets-1)) == set2) { \ -+ } else if (((set1 + 1) & (L.sets_min_1)) == set2) { \ - set = &(L.tags[set1 << L.assoc_bits]); \ - if (tag == set[0]) { \ - goto block2; \ diff --git a/valgrind-3.2.3-glibc2_6.patch b/valgrind-3.2.3-glibc2_6.patch deleted file mode 100644 index 87847b8..0000000 --- a/valgrind-3.2.3-glibc2_6.patch +++ /dev/null @@ -1,435 +0,0 @@ ---- valgrind-3.2.3/glibc-2.5.supp.jj 2007-01-07 06:39:15.000000000 +0100 -+++ valgrind-3.2.3/glibc-2.5.supp 2007-06-27 16:10:34.000000000 +0200 -@@ -1,7 +1,7 @@ - - ##----------------------------------------------------------------------## - --# Errors to suppress by default with glibc 2.4.x -+# Errors to suppress by default with glibc 2.5.x - - # Format of this file is: - # { -@@ -43,9 +43,9 @@ - { - dl-hack3 - Memcheck:Cond -- obj:/lib*/ld-2.5*so* -- obj:/lib*/ld-2.5*so* -- obj:/lib*/ld-2.5*so* -+ obj:/lib*/ld-2.5*.so -+ obj:/lib*/ld-2.5*.so -+ obj:/lib*/ld-2.5*.so - } - - ##----------------------------------------------------------------------## -@@ -60,7 +60,7 @@ - glibc-2.5.x-on-SUSE-10.2-(PPC)-2a - Memcheck:Cond - fun:index -- obj:*ld-2.5.*.so -+ obj:*ld-2.5*.so - } - { - glibc-2.5.x-on-SuSE-10.2-(PPC)-2b -@@ -72,14 +72,14 @@ - glibc-2.5.5-on-SuSE-10.2-(PPC)-2c - Memcheck:Addr4 - fun:index -- obj:*ld-2.5.*.so -+ obj:*ld-2.5*.so - } - { - glibc-2.3.5-on-SuSE-10.1-(PPC)-3 - Memcheck:Addr4 - fun:*wordcopy_fwd_dest_aligned* - fun:mem*cpy -- obj:*lib*2.5.*.so -+ obj:*lib*2.5*.so - } - - ##----------------------------------------------------------------------## -@@ -154,9 +154,9 @@ - Memcheck:Param - socketcall.sendto(msg) - fun:__sendto_nocancel -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so - } - { - glibc24-64bit-padding-1c -@@ -166,7 +166,7 @@ - fun:__nscd_get_map_ref - fun:nscd_get*_r - fun:*nscd* -- obj:/*libc-2.5.so -+ obj:/*libc-2.5*.so - } - - -@@ -174,7 +174,7 @@ - X11-64bit-padding-3a - Memcheck:Param - write(buf) -- obj:/*libpthread-2.4.so* -+ obj:/*libpthread-2.5*.so* - obj:/usr/lib*/libX11.so* - obj:/usr/lib*/libX11.so* - obj:/usr/lib*/libX11.so* -@@ -185,18 +185,18 @@ - Memcheck:Param - socketcall.sendto(msg) - fun:send -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so - } - { - X11-64bit-padding-4b - Memcheck:Param - socketcall.send(msg) - fun:send -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -- obj:/*libc-2.5.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so -+ obj:/*libc-2.5*.so - } - - ##----------------------------------------------------------------------## ---- valgrind-3.2.3/configure.in.jj 2007-06-27 12:22:59.000000000 +0200 -+++ valgrind-3.2.3/configure.in 2007-06-27 16:03:45.000000000 +0200 -@@ -361,6 +361,16 @@ AC_EGREP_CPP([GLIBC_25], [ - ], - glibc="2.5") - -+AC_EGREP_CPP([GLIBC_26], [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 6) -+ GLIBC_26 -+ #endif -+#endif -+], -+glibc="2.6") -+ - AC_MSG_CHECKING([the glibc version]) - - case "${glibc}" in -@@ -388,9 +398,15 @@ case "${glibc}" in - DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}" - ;; - -+ 2.6) -+ AC_MSG_RESULT(2.6 family) -+ AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x]) -+ DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" -+ ;; -+ - *) - AC_MSG_RESULT(unsupported version) -- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.5]) -+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.6]) - ;; - esac - ---- valgrind-3.2.3/config.h.in.jj 2007-01-02 15:55:38.000000000 +0100 -+++ valgrind-3.2.3/config.h.in 2007-06-27 16:08:37.000000000 +0200 -@@ -18,6 +18,9 @@ - /* Define to 1 if you're using glibc 2.5.x */ - #undef GLIBC_2_5 - -+/* Define to 1 if you're using glibc 2.6.x */ -+#undef GLIBC_2_6 -+ - /* Define to 1 if as supports mtocrf/mfocrf. */ - #undef HAVE_AS_PPC_MFTOCRF - ---- valgrind-3.2.3/configure.jj 2007-06-27 12:22:59.000000000 +0200 -+++ valgrind-3.2.3/configure 2007-06-27 16:08:16.000000000 +0200 -@@ -4391,8 +4391,30 @@ fi - rm -f conftest* - - --echo "$as_me:$LINENO: checking the glibc version" >&5 --echo $ECHO_N "checking the glibc version... $ECHO_C" >&6 -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 6) -+ GLIBC_26 -+ #endif -+#endif -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "GLIBC_26" >/dev/null 2>&1; then -+ glibc="2.6" -+fi -+rm -f conftest* -+ -+ -+{ echo "$as_me:$LINENO: checking the glibc version" >&5 -+echo $ECHO_N "checking the glibc version... $ECHO_C" >&6; } - - case "${glibc}" in - 2.2) -@@ -4439,11 +4461,22 @@ _ACEOF - DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}" - ;; - -+ 2.6) -+ echo "$as_me:$LINENO: result: 2.6 family" >&5 -+echo "${ECHO_T}2.6 family" >&6 -+ -+cat >>confdefs.h <<\_ACEOF -+#define GLIBC_2_6 1 -+_ACEOF -+ -+ DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" -+ ;; -+ - *) -- echo "$as_me:$LINENO: result: unsupported version" >&5 --echo "${ECHO_T}unsupported version" >&6 -- { { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.5" >&5 --echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.5" >&2;} -+ { echo "$as_me:$LINENO: result: unsupported version" >&5 -+echo "${ECHO_T}unsupported version" >&6; } -+ { { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.6" >&5 -+echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.6" >&2;} - { (exit 1); exit 1; }; } - ;; - esac ---- valgrind-3.2.3/glibc-2.6.supp.jj 2007-06-27 16:09:55.000000000 +0200 -+++ valgrind-3.2.3/glibc-2.6.supp 2007-06-27 16:10:20.000000000 +0200 -@@ -0,0 +1,216 @@ -+ -+##----------------------------------------------------------------------## -+ -+# Errors to suppress by default with glibc 2.6.x -+ -+# Format of this file is: -+# { -+# name_of_suppression -+# tool_name:supp_kind -+# (optional extra info for some suppression types) -+# caller0 name, or /name/of/so/file.so -+# caller1 name, or ditto -+# (optionally: caller2 name) -+# (optionally: caller3 name) -+# } -+# -+# For Memcheck, the supp_kinds are: -+# -+# Param Value1 Value2 Value4 Value8 Value16 -+# Free Addr1 Addr2 Addr4 Addr8 Addr16 -+# Cond (previously known as Value0) -+# -+# and the optional extra info is: -+# if Param: name of system call param -+# if Free: name of free-ing fn) -+ -+{ -+ dl-hack1 -+ Memcheck:Cond -+ fun:_dl_start -+ fun:_start -+} -+ -+{ -+ dl-hack2 -+ Memcheck:Cond -+ obj:/lib*/ld-2.6*.so -+ obj:/lib*/ld-2.6*.so -+ obj:/lib*/ld-2.6*.so -+ obj:/lib*/ld-2.6*.so -+} -+ -+{ -+ dl-hack3 -+ Memcheck:Cond -+ obj:/lib*/ld-2.6*.so -+ obj:/lib*/ld-2.6*.so -+ obj:/lib*/ld-2.6*.so -+} -+ -+##----------------------------------------------------------------------## -+{ -+ glibc-2.5.x-on-SUSE-10.2-(PPC)-1 -+ Memcheck:Cond -+ fun:_dl_start_final -+ fun:_dl_start -+ fun:_start -+} -+{ -+ glibc-2.5.x-on-SUSE-10.2-(PPC)-2a -+ Memcheck:Cond -+ fun:index -+ obj:*ld-2.6*.so -+} -+{ -+ glibc-2.5.x-on-SuSE-10.2-(PPC)-2b -+ Memcheck:Addr4 -+ fun:index -+ fun:expand_dynamic_string_token -+} -+{ -+ glibc-2.5.5-on-SuSE-10.2-(PPC)-2c -+ Memcheck:Addr4 -+ fun:index -+ obj:*ld-2.6*.so -+} -+{ -+ glibc-2.3.5-on-SuSE-10.1-(PPC)-3 -+ Memcheck:Addr4 -+ fun:*wordcopy_fwd_dest_aligned* -+ fun:mem*cpy -+ obj:*lib*2.6*.so -+} -+ -+##----------------------------------------------------------------------## -+## Various structure padding things on SUSE 10.2 -+## -+{ -+ X11-64bit-padding-1a -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ fun:X* -+} -+{ -+ X11-64bit-padding-1b -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ fun:_X* -+} -+{ -+ X11-64bit-padding-1c -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+{ -+ X11-64bit-padding-1d -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libICE.so* -+ obj:/usr/lib*/libICE.so* -+ obj:/usr/lib*/libICE.so* -+} -+{ -+ X11-64bit-padding-2a -+ Memcheck:Param -+ writev(vector[...]) -+ fun:do_writev -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+{ -+ X11-64bit-padding-2b -+ Memcheck:Param -+ writev(vector[...]) -+ fun:do_writev -+ fun:writev -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+ -+{ -+ glibc24-64bit-padding-1a -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:send -+ fun:get_mapping -+ fun:__nscd_get_map_ref -+ fun:nscd* -+} -+{ -+ glibc24-64bit-padding-1b -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:__sendto_nocancel -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+} -+{ -+ glibc24-64bit-padding-1c -+ Memcheck:Param -+ socketcall.send(msg) -+ fun:send -+ fun:__nscd_get_map_ref -+ fun:nscd_get*_r -+ fun:*nscd* -+ obj:/*libc-2.6*.so -+} -+ -+ -+{ -+ X11-64bit-padding-3a -+ Memcheck:Param -+ write(buf) -+ obj:/*libpthread-2.6*.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+ -+{ -+ X11-64bit-padding-4a -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:send -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+} -+{ -+ X11-64bit-padding-4b -+ Memcheck:Param -+ socketcall.send(msg) -+ fun:send -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+ obj:/*libc-2.6*.so -+} -+ -+##----------------------------------------------------------------------## -+# MontaVista Linux 4.0.1 on ppc32 -+{ -+ MVL-401-linuxthreads-pthread_create -+ Memcheck:Param -+ write(buf) -+ fun:pthread_create -+} -+{ -+ MVL-401-linuxthreads-pthread_create -+ Memcheck:Param -+ write(buf) -+ obj:/lib/libpthread-0.10.so -+ fun:pthread_create -+} diff --git a/valgrind-3.2.3-glibc2_7.patch b/valgrind-3.2.3-glibc2_7.patch deleted file mode 100644 index 4728eb4..0000000 --- a/valgrind-3.2.3-glibc2_7.patch +++ /dev/null @@ -1,323 +0,0 @@ ---- valgrind-3.2.3/configure.in.jj 2007-06-27 12:22:59.000000000 +0200 -+++ valgrind-3.2.3/configure.in 2007-06-27 16:03:45.000000000 +0200 -@@ -361,6 +361,16 @@ AC_EGREP_CPP([GLIBC_26], [ - ], - glibc="2.6") - -+AC_EGREP_CPP([GLIBC_27], [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 7) -+ GLIBC_27 -+ #endif -+#endif -+], -+glibc="2.7") -+ - AC_MSG_CHECKING([the glibc version]) - - case "${glibc}" in -@@ -388,9 +398,15 @@ case "${glibc}" in - DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" - ;; - -+ 2.7) -+ AC_MSG_RESULT(2.7 family) -+ AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x]) -+ DEFAULT_SUPP="glibc-2.7.supp ${DEFAULT_SUPP}" -+ ;; -+ - *) - AC_MSG_RESULT(unsupported version) -- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.6]) -+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.7]) - ;; - esac - ---- valgrind-3.2.3/config.h.in.jj 2007-01-02 15:55:38.000000000 +0100 -+++ valgrind-3.2.3/config.h.in 2007-06-27 16:08:37.000000000 +0200 -@@ -18,6 +18,9 @@ - /* Define to 1 if you're using glibc 2.6.x */ - #undef GLIBC_2_6 - -+/* Define to 1 if you're using glibc 2.7.x */ -+#undef GLIBC_2_7 -+ - /* Define to 1 if as supports mtocrf/mfocrf. */ - #undef HAVE_AS_PPC_MFTOCRF - ---- valgrind-3.2.3/configure.jj 2007-06-27 12:22:59.000000000 +0200 -+++ valgrind-3.2.3/configure 2007-06-27 16:08:16.000000000 +0200 -@@ -4413,6 +4413,28 @@ fi - rm -f conftest* - - -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 7) -+ GLIBC_27 -+ #endif -+#endif -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "GLIBC_27" >/dev/null 2>&1; then -+ glibc="2.7" -+fi -+rm -f conftest* -+ -+ - { echo "$as_me:$LINENO: checking the glibc version" >&5 - echo $ECHO_N "checking the glibc version... $ECHO_C" >&6; } - -@@ -4472,11 +4494,22 @@ _ACEOF - DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" - ;; - -+ 2.7) -+ echo "$as_me:$LINENO: result: 2.7 family" >&5 -+echo "${ECHO_T}2.7 family" >&6 -+ -+cat >>confdefs.h <<\_ACEOF -+#define GLIBC_2_7 1 -+_ACEOF -+ -+ DEFAULT_SUPP="glibc-2.7.supp ${DEFAULT_SUPP}" -+ ;; -+ - *) - { echo "$as_me:$LINENO: result: unsupported version" >&5 - echo "${ECHO_T}unsupported version" >&6; } -- { { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.6" >&5 --echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.6" >&2;} -+ { { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.7" >&5 -+echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.7" >&2;} - { (exit 1); exit 1; }; } - ;; - esac ---- valgrind-3.2.3/glibc-2.7.supp.jj 2007-06-27 16:09:55.000000000 +0200 -+++ valgrind-3.2.3/glibc-2.7.supp 2007-06-27 16:10:20.000000000 +0200 -@@ -0,0 +1,216 @@ -+ -+##----------------------------------------------------------------------## -+ -+# Errors to suppress by default with glibc 2.7.x -+ -+# Format of this file is: -+# { -+# name_of_suppression -+# tool_name:supp_kind -+# (optional extra info for some suppression types) -+# caller0 name, or /name/of/so/file.so -+# caller1 name, or ditto -+# (optionally: caller2 name) -+# (optionally: caller3 name) -+# } -+# -+# For Memcheck, the supp_kinds are: -+# -+# Param Value1 Value2 Value4 Value8 Value16 -+# Free Addr1 Addr2 Addr4 Addr8 Addr16 -+# Cond (previously known as Value0) -+# -+# and the optional extra info is: -+# if Param: name of system call param -+# if Free: name of free-ing fn) -+ -+{ -+ dl-hack1 -+ Memcheck:Cond -+ fun:_dl_start -+ fun:_start -+} -+ -+{ -+ dl-hack2 -+ Memcheck:Cond -+ obj:/lib*/ld-2.7*.so -+ obj:/lib*/ld-2.7*.so -+ obj:/lib*/ld-2.7*.so -+ obj:/lib*/ld-2.7*.so -+} -+ -+{ -+ dl-hack3 -+ Memcheck:Cond -+ obj:/lib*/ld-2.7*.so -+ obj:/lib*/ld-2.7*.so -+ obj:/lib*/ld-2.7*.so -+} -+ -+##----------------------------------------------------------------------## -+{ -+ glibc-2.5.x-on-SUSE-10.2-(PPC)-1 -+ Memcheck:Cond -+ fun:_dl_start_final -+ fun:_dl_start -+ fun:_start -+} -+{ -+ glibc-2.5.x-on-SUSE-10.2-(PPC)-2a -+ Memcheck:Cond -+ fun:index -+ obj:*ld-2.7*.so -+} -+{ -+ glibc-2.5.x-on-SuSE-10.2-(PPC)-2b -+ Memcheck:Addr4 -+ fun:index -+ fun:expand_dynamic_string_token -+} -+{ -+ glibc-2.5.5-on-SuSE-10.2-(PPC)-2c -+ Memcheck:Addr4 -+ fun:index -+ obj:*ld-2.7*.so -+} -+{ -+ glibc-2.3.5-on-SuSE-10.1-(PPC)-3 -+ Memcheck:Addr4 -+ fun:*wordcopy_fwd_dest_aligned* -+ fun:mem*cpy -+ obj:*lib*2.7*.so -+} -+ -+##----------------------------------------------------------------------## -+## Various structure padding things on SUSE 10.2 -+## -+{ -+ X11-64bit-padding-1a -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ fun:X* -+} -+{ -+ X11-64bit-padding-1b -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ fun:_X* -+} -+{ -+ X11-64bit-padding-1c -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+{ -+ X11-64bit-padding-1d -+ Memcheck:Param -+ write(buf) -+ fun:__write_nocancel -+ obj:/usr/lib*/libICE.so* -+ obj:/usr/lib*/libICE.so* -+ obj:/usr/lib*/libICE.so* -+} -+{ -+ X11-64bit-padding-2a -+ Memcheck:Param -+ writev(vector[...]) -+ fun:do_writev -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+{ -+ X11-64bit-padding-2b -+ Memcheck:Param -+ writev(vector[...]) -+ fun:do_writev -+ fun:writev -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+ -+{ -+ glibc24-64bit-padding-1a -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:send -+ fun:get_mapping -+ fun:__nscd_get_map_ref -+ fun:nscd* -+} -+{ -+ glibc24-64bit-padding-1b -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:__sendto_nocancel -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+} -+{ -+ glibc24-64bit-padding-1c -+ Memcheck:Param -+ socketcall.send(msg) -+ fun:send -+ fun:__nscd_get_map_ref -+ fun:nscd_get*_r -+ fun:*nscd* -+ obj:/*libc-2.7*.so -+} -+ -+ -+{ -+ X11-64bit-padding-3a -+ Memcheck:Param -+ write(buf) -+ obj:/*libpthread-2.7*.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+ obj:/usr/lib*/libX11.so* -+} -+ -+{ -+ X11-64bit-padding-4a -+ Memcheck:Param -+ socketcall.sendto(msg) -+ fun:send -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+} -+{ -+ X11-64bit-padding-4b -+ Memcheck:Param -+ socketcall.send(msg) -+ fun:send -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+ obj:/*libc-2.7*.so -+} -+ -+##----------------------------------------------------------------------## -+# MontaVista Linux 4.0.1 on ppc32 -+{ -+ MVL-401-linuxthreads-pthread_create -+ Memcheck:Param -+ write(buf) -+ fun:pthread_create -+} -+{ -+ MVL-401-linuxthreads-pthread_create -+ Memcheck:Param -+ write(buf) -+ obj:/lib/libpthread-0.10.so -+ fun:pthread_create -+} diff --git a/valgrind-3.2.3-io_destroy.patch b/valgrind-3.2.3-io_destroy.patch deleted file mode 100644 index 81c86ca..0000000 --- a/valgrind-3.2.3-io_destroy.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c.jj 2007-06-27 12:22:59.000000000 +0200 -+++ valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c 2007-06-27 12:37:18.000000000 +0200 -@@ -1213,16 +1213,18 @@ POST(sys_io_setup) - PRE(sys_io_destroy) - { - struct vki_aio_ring *r; -- SizeT size; -- -+ SizeT size = 0; -+ - PRINT("sys_io_destroy ( %llu )", (ULong)ARG1); - PRE_REG_READ1(long, "io_destroy", vki_aio_context_t, ctx); - - // If we are going to seg fault (due to a bogus ARG1) do it as late as - // possible... -- r = (struct vki_aio_ring *)ARG1; -- size = VG_PGROUNDUP(sizeof(struct vki_aio_ring) + -- r->nr*sizeof(struct vki_io_event)); -+ if (ML_(safe_to_deref)( (void*)ARG1, sizeof(struct vki_aio_ring))) { -+ r = (struct vki_aio_ring *)ARG1; -+ size = VG_PGROUNDUP(sizeof(struct vki_aio_ring) + -+ r->nr*sizeof(struct vki_io_event)); -+ } - - SET_STATUS_from_SysRes( VG_(do_syscall1)(SYSNO, ARG1) ); - diff --git a/valgrind-3.2.3-openat.patch b/valgrind-3.2.3-openat.patch deleted file mode 100644 index 254e942..0000000 --- a/valgrind-3.2.3-openat.patch +++ /dev/null @@ -1,49 +0,0 @@ -Testcase: -#define _GNU_SOURCE -#include -#include - -int -main (void) -{ - int dfd = open ("/tmp", O_RDONLY); - int fd1 = openat (dfd, "abc", O_RDONLY); - int fd2 = openat (0x12345678, "/tmp/abc", O_RDONLY); - int fd3 = openat (AT_FDCWD, "abc", O_RDONLY); - /* This is the only one that should warn. */ - int fd4 = openat (0x12345678, "abc", O_RDONLY); - return 0; -} - ---- valgrind-3.2.3/include/vki-linux.h.jj 2006-08-28 15:38:37.000000000 +0200 -+++ valgrind-3.2.3/include/vki-linux.h 2006-09-26 18:29:00.000000000 +0200 -@@ -1223,6 +1223,8 @@ struct vki_dirent { - - #define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE+2) - -+#define VKI_AT_FDCWD -100 -+ - //---------------------------------------------------------------------- - // From linux-2.6.8.1/include/linux/sysctl.h - //---------------------------------------------------------------------- ---- valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c.jj 2006-08-28 15:38:57.000000000 +0200 -+++ valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c 2006-09-26 18:42:04.000000000 +0200 -@@ -2350,10 +2350,15 @@ PRE(sys_openat) - int, dfd, const char *, filename, int, flags); - } - -- if (!ML_(fd_allowed)(ARG1, "openat", tid, False)) -+ PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); -+ -+ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD, -+ filename is relative to cwd. */ -+ if (ML_(safe_to_deref)( (void*)ARG2, 1 ) -+ && *(Char *)ARG2 != '/' -+ && ARG1 != VKI_AT_FDCWD -+ && !ML_(fd_allowed)(ARG1, "openat", tid, False)) - SET_STATUS_Failure( VKI_EBADF ); -- else -- PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); - - /* Handle the case where the open is of /proc/self/cmdline or - /proc//cmdline, and just give it a copy of the fd for the diff --git a/valgrind-3.2.3-pkg-config.patch b/valgrind-3.2.3-pkg-config.patch deleted file mode 100644 index da731fe..0000000 --- a/valgrind-3.2.3-pkg-config.patch +++ /dev/null @@ -1,63 +0,0 @@ ---- valgrind-3.2.3/configure.in.jj 2007-01-29 14:42:52.000000000 -0500 -+++ valgrind-3.2.3/configure.in 2007-02-13 08:02:26.000000000 -0500 -@@ -251,6 +251,7 @@ AC_MSG_CHECKING([for a supported CPU/OS - - AC_SUBST(VG_PLATFORM_PRI) - AC_SUBST(VG_PLATFORM_SEC) -+AC_SUBST(VG_PLATFORM) - - case "$VG_ARCH-$VG_OS" in - x86-linux) -@@ -296,6 +297,7 @@ case "$VG_ARCH-$VG_OS" in - AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doing a port.]) - ;; - esac -+VG_PLATFORM=`echo "$VG_PLATFORM_PRI" | LC_ALL=C tr A-Z_ a-z-` - - # Set up VG_. Either one or two of these become defined. - # ---- valgrind-3.2.3/configure.jj 2007-01-29 14:45:30.000000000 -0500 -+++ valgrind-3.2.3/configure 2007-02-13 08:04:33.000000000 -0500 -@@ -311,7 +311,7 @@ ac_includes_default="\ - # include - #endif" - --ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT VEX_DIR DISTCHECK_CONFIGURE_FLAGS LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB PERL GDB CCAS CCASFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os VG_ARCH VG_ARCH_ALL VALT_LOAD_ADDRESS VG_OS VG_PLATFORM_PRI VG_PLATFORM_SEC VG_X86_LINUX_TRUE VG_X86_LINUX_FALSE VG_AMD64_LINUX_TRUE VG_AMD64_LINUX_FALSE VG_PPC32_LINUX_TRUE VG_PPC32_LINUX_FALSE VG_PPC64_LINUX_TRUE VG_PPC64_LINUX_FALSE DEFAULT_SUPP EGREP FLAG_M32 FLAG_M64 FLAG_MMMX FLAG_MSSE PREFERRED_STACK_BOUNDARY FLAG_WDECL_AFTER_STMT LIBOBJS BUILD_MPIWRAP_TRUE BUILD_MPIWRAP_FALSE MPI_CC LTLIBOBJS' -+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT VEX_DIR DISTCHECK_CONFIGURE_FLAGS LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB PERL GDB CCAS CCASFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os VG_ARCH VG_ARCH_ALL VALT_LOAD_ADDRESS VG_OS VG_PLATFORM_PRI VG_PLATFORM_SEC VG_PLATFORM VG_X86_LINUX_TRUE VG_X86_LINUX_FALSE VG_AMD64_LINUX_TRUE VG_AMD64_LINUX_FALSE VG_PPC32_LINUX_TRUE VG_PPC32_LINUX_FALSE VG_PPC64_LINUX_TRUE VG_PPC64_LINUX_FALSE DEFAULT_SUPP EGREP FLAG_M32 FLAG_M64 FLAG_MMMX FLAG_MSSE PREFERRED_STACK_BOUNDARY FLAG_WDECL_AFTER_STMT LIBOBJS BUILD_MPIWRAP_TRUE BUILD_MPIWRAP_FALSE MPI_CC LTLIBOBJS' - ac_subst_files='' - - # Initialize some variables set by options. -@@ -4230,6 +4230,7 @@ echo "$as_me: error: Valgrind is platfor - { (exit 1); exit 1; }; } - ;; - esac -+VG_PLATFORM=`echo "$VG_PLATFORM_PRI" | LC_ALL=C tr A-Z_ a-z-` - - # Set up VG_. Either one or two of these become defined. - # -@@ -7615,6 +7616,7 @@ s,@VALT_LOAD_ADDRESS@,$VALT_LOAD_ADDRESS - s,@VG_OS@,$VG_OS,;t t - s,@VG_PLATFORM_PRI@,$VG_PLATFORM_PRI,;t t - s,@VG_PLATFORM_SEC@,$VG_PLATFORM_SEC,;t t -+s,@VG_PLATFORM@,$VG_PLATFORM,;t t - s,@VG_X86_LINUX_TRUE@,$VG_X86_LINUX_TRUE,;t t - s,@VG_X86_LINUX_FALSE@,$VG_X86_LINUX_FALSE,;t t - s,@VG_AMD64_LINUX_TRUE@,$VG_AMD64_LINUX_TRUE,;t t ---- valgrind-3.2.3/valgrind.pc.in.jj 2007-01-02 09:52:30.000000000 -0500 -+++ valgrind-3.2.3/valgrind.pc.in 2007-02-13 08:04:57.000000000 -0500 -@@ -4,13 +4,13 @@ libdir=@libdir@ - includedir=@includedir@/valgrind - arch=@VG_ARCH@ - os=@VG_OS@ --platform=@VG_PLATFORM_PRI@ -+platform=@VG_PLATFORM@ - valt_load_address=@VALT_LOAD_ADDRESS@ - - Name: Valgrind - Description: A dynamic binary instrumentation framework - Version: @VERSION@ - Requires: --Libs: -L${libdir}/valgrind/@VG_PLATFORM_PRI@ -lcoregrind -lvex -lgcc -+Libs: -L${libdir}/valgrind/@VG_PLATFORM@ -lcoregrind -lvex -lgcc - Cflags: -I${includedir} - diff --git a/valgrind-3.2.3-power5+-6.patch b/valgrind-3.2.3-power5+-6.patch deleted file mode 100644 index d1e96aa..0000000 --- a/valgrind-3.2.3-power5+-6.patch +++ /dev/null @@ -1,779 +0,0 @@ ---- valgrind-3.2.3/VEX/priv/guest-ppc/toIR.c 2006-08-28 08:39:10.000000000 -0500 -+++ valgrind-3.2.3/VEX/priv/guest-ppc/toIR.c 2007-05-16 18:05:02.000000000 -0500 -@@ -328,6 +328,7 @@ typedef enum { - } PPC_GST; - - #define MASK_FPSCR_RN 0x3 -+#define MASK_FPSCR_FPRF 0x1F000 - #define MASK_VSCR_VALID 0x00010001 - - -@@ -2122,7 +2123,7 @@ static IRExpr* /* ::Ity_I32 */ getGST_ma - - /* We're only keeping track of the rounding mode, - so if the mask isn't asking for this, just return 0x0 */ -- if (mask & 0x3) { -+ if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) { - assign( val, IRExpr_Get( OFFB_FPROUND, Ity_I32 ) ); - } else { - assign( val, mkU32(0x0) ); -@@ -2247,7 +2248,7 @@ static void putGST_masked ( PPC_GST reg, - switch (reg) { - case PPC_GST_FPSCR: { - /* Allow writes to Rounding Mode */ -- if (mask & 0x3) { -+ if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) { - /* construct new fpround from new and old values as per mask: - new fpround = (src & (3 & mask)) | (fpround & (3 & ~mask)) */ - stmt( -@@ -2255,11 +2256,11 @@ static void putGST_masked ( PPC_GST reg, - OFFB_FPROUND, - binop( - Iop_Or32, -- binop(Iop_And32, src, mkU32(3 & mask)), -+ binop(Iop_And32, src, mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & mask)), - binop( - Iop_And32, - IRExpr_Get(OFFB_FPROUND,Ity_I32), -- mkU32(3 & ~mask) -+ mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & ~mask) - ) - ) - ) -@@ -3200,6 +3201,48 @@ static Bool dis_int_logic ( UInt theInst - // TODO: alternatively: assign(rA, verbose_Clz64(rS)); - break; - -+ case 0x1FC: // cmpb (Power6: compare bytes) -+ DIP("cmpb r%u,r%u,r%u\n", rA_addr, rS_addr, rB_addr); -+ -+ if (mode64) -+ assign( rA, unop( Iop_V128to64, -+ binop( Iop_CmpEQ8x16, -+ binop( Iop_64HLtoV128, mkU64(0), mkexpr(rS) ), -+ binop( Iop_64HLtoV128, mkU64(0), mkexpr(rB) ) -+ )) ); -+ else -+ assign( rA, unop( Iop_V128to32, -+ binop( Iop_CmpEQ8x16, -+ unop( Iop_32UtoV128, mkexpr(rS) ), -+ unop( Iop_32UtoV128, mkexpr(rB) ) -+ )) ); -+ break; -+ -+ case 0x2DF: { // mftgpr (move floating-point to general purpose register) -+ IRTemp frB = newTemp(Ity_F64); -+ DIP("mftgpr r%u,fr%u\n", rS_addr, rB_addr); -+ -+ assign( frB, getFReg(rB_addr)); // always F64 -+ if (mode64) -+ assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) ); -+ else -+ assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) ); -+ -+ putIReg( rS_addr, mkexpr(rA)); -+ return True; -+ } -+ case 0x25F: { // mffgpr (move floating-point from general purpose register) -+ IRTemp frA = newTemp(Ity_F64); -+ DIP("mffgpr fr%u,r%u\n", rS_addr, rB_addr); -+ -+ if (mode64) -+ assign( frA, unop( Iop_ReinterpI64asF64, mkexpr(rB)) ); -+ else -+ assign( frA, unop( Iop_ReinterpI64asF64, unop( Iop_32Uto64, mkexpr(rB))) ); -+ -+ putFReg( rS_addr, mkexpr(frA)); -+ return True; -+ } - default: - vex_printf("dis_int_logic(ppc)(opc2)\n"); - return False; -@@ -6381,6 +6424,45 @@ static Bool dis_fp_round ( UInt theInstr - binop(Iop_I64toF64, rm, mkexpr(r_tmp64)) ); - break; - -+ case 0x188: case 0x1A8: case 0x1C8: case 0x1E8: // frin, friz, frip, frim -+ switch(opc2) { -+ case 0x188: // frin (Floating Round to Integer Nearest) -+ DIP("frin%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); -+ assign( r_tmp64, -+ binop(Iop_F64toI64, mkU32(Irrm_NEAREST), mkexpr(frB)) ); -+ break; -+ case 0x1A8: // friz (Floating Round to Integer Toward Zero) -+ DIP("friz%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); -+ assign( r_tmp64, -+ binop(Iop_F64toI64, mkU32(Irrm_ZERO), mkexpr(frB)) ); -+ break; -+ case 0x1C8: // frip (Floating Round to Integer Plus) -+ DIP("frip%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); -+ assign( r_tmp64, -+ binop(Iop_F64toI64, mkU32(Irrm_PosINF), mkexpr(frB)) ); -+ break; -+ case 0x1E8: // frim (Floating Round to Integer Minus) -+ DIP("frim%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); -+ assign( r_tmp64, -+ binop(Iop_F64toI64, mkU32(Irrm_NegINF), mkexpr(frB)) ); -+ break; -+ } -+ -+ /* don't use the rounded integer if frB is outside -9e18..9e18 */ -+ /* F64 has only log10(2**52) significant digits anyway */ -+ /* need to preserve sign of zero */ -+ /* frD = (fabs(frB) > 9e18) ? frB : -+ (sign(frB)) ? -fabs((double)r_tmp64) : (double)r_tmp64 */ -+ assign( frD, IRExpr_Mux0X( unop( Iop_32to8, binop( Iop_CmpF64, -+ IRExpr_Const(IRConst_F64(9e18)), unop( Iop_AbsF64, mkexpr(frB)))), -+ IRExpr_Mux0X( unop( Iop_32to8, binop( Iop_Shr32, unop( Iop_64HIto32, -+ unop(Iop_ReinterpF64asI64, mkexpr(frB))), mkU8(31))), -+ binop( Iop_I64toF64, mkU32(0), mkexpr(r_tmp64) ), -+ unop( Iop_NegF64, unop( Iop_AbsF64, -+ binop(Iop_I64toF64, mkU32(0), mkexpr(r_tmp64)) )) ), -+ mkexpr(frB) )); -+ break; -+ - default: - vex_printf("dis_fp_round(ppc)(opc2)\n"); - return False; -@@ -8991,6 +9073,10 @@ DisResult disInstr_PPC_WRK ( - case 0x32E: // fctid - case 0x32F: // fctidz - case 0x34E: // fcfid -+ case 0x188: // frin (Power5+) -+ case 0x1A8: // friz (Power5+) -+ case 0x1C8: // frip (Power5+) -+ case 0x1E8: // frim (Power5+) - if (dis_fp_round(theInstr)) goto decode_success; - goto decode_failure; - -@@ -9067,6 +9153,10 @@ DisResult disInstr_PPC_WRK ( - if (dis_int_arith( theInstr )) goto decode_success; - goto decode_failure; - -+ case 0x1FC: // cmpb -+ if (dis_int_logic( theInstr )) goto decode_success; -+ goto decode_failure; -+ - default: - break; // Fall through... - } -@@ -9085,6 +9175,7 @@ DisResult disInstr_PPC_WRK ( - case 0x11C: case 0x3BA: case 0x39A: // eqv, extsb, extsh - case 0x1DC: case 0x07C: case 0x1BC: // nand, nor, or - case 0x19C: case 0x13C: // orc, xor -+ case 0x2DF: case 0x25F: // mftgpr, mffgpr - if (dis_int_logic( theInstr )) goto decode_success; - goto decode_failure; - ---- valgrind-3.2.3/none/tests/ppc32/Makefile.am 2006-08-28 08:38:47.000000000 -0500 -+++ valgrind-3.2.3/none/tests/ppc32/Makefile.am 2007-05-16 18:10:32.000000000 -0500 -@@ -13,11 +13,14 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ - test_gx.stderr.exp test_gx.stdout.exp test_gx.vgtest \ - testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ - twi.stderr.exp twi.stdout.exp twi.vgtest \ -- xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest -+ xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ -+ power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ -+ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest -+ - - check_PROGRAMS = \ - ldstrev lsw jm-insns mftocrf round test_fx test_gx testVMX \ -- twi xlc_dbl_u32 -+ twi xlc_dbl_u32 power5+_round power6_bcmp - - AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ - @FLAG_M32@ ---- valgrind-3.2.3/none/tests/ppc32/power5+_round.c 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc32/power5+_round.c 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,147 @@ -+/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307, USA. -+ -+ The GNU General Public License is contained in the file COPYING. -+*/ -+ -+ -+ -+#include -+#include -+#include -+#include -+ -+#define POS_NORMAL 0x4000 -+#define NEG_NORMAL 0x8000 -+#define POS_INF 0x5000 -+#define NEG_INF 0x9000 -+#define POS_ZERO 0x2000 -+#define NEG_ZERO 0x12000 -+#define POS_DENORMAL 0x14000 -+#define NEG_DENORMAL 0x18000 -+#define NAN 0x11000 -+#define FPRF_MASK 0x1F000 -+ -+ -+int main (int argc, char* argv[]) { -+ -+ double inf, neg0, nan; -+ union { -+ double d; -+ struct { unsigned int dummy, dummy2: 15, fprf:17; }; -+ } fpscr; -+ -+ inf = strtod("inf", NULL); -+ neg0 = copysign(0, -1); -+ nan = strtod("nan", NULL); -+ -+ -+ /* This set is disabled until fprf is implemented. */ -+ if (0) { -+ double set[] = {inf, 1.5, 0, neg0, -1.5, -inf, nan}; -+ int i, j, fprf; -+ for (i=0; i<7; ++i) { -+ for (j=0; j<7; ++j) { -+ asm ("fcmpu 1, %1, %2\n\t" \ -+ "mffs %0\n" \ -+ : "=f" (fpscr.d) \ -+ : "f" (set[i]), "f" (set[j]) \ -+ ); -+ -+ if (i == 6 || j == 6) { -+ fprf = 0x1000; // Unordered -+ } else if (i == j || (i==2 && j==3) || (i==3 && j==2)) { -+ fprf = 0x2000; // Equal -+ } else if (i < j) { -+ fprf = 0x4000; // Greater Than -+ } else if (i > j) { -+ fprf = 0x8000; // Less Than -+ } -+ -+ printf("fcmpu\t%.1f\t%.1f\t%x\t%s\n", set[i], set[j], fpscr.fprf, -+ fpscr.fprf == fprf ? "PASS" : "FAIL"); -+ } -+ } -+ } -+ -+ { -+ double set[] = {inf, 1.9, 1.1, 0, neg0, -1.1, -1.9, -inf, nan}; -+ double frin[] = {inf, 2.0, 1.0, 0, neg0, -1.0, -2.0, -inf, nan}; -+ double friz[] = {inf, 1.0, 1.0, 0, neg0, -1.0, -1.0, -inf, nan}; -+ double frip[] = {inf, 2.0, 2.0, 0, neg0, -1.0, -1.0, -inf, nan}; -+ double frim[] = {inf, 1.0, 1.0, 0, neg0, -2.0, -2.0, -inf, nan}; -+ int fprf[] = {POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO, -+ NEG_NORMAL, NEG_NORMAL, NEG_INF, NAN}; -+ double set2[] = {0.9, 0.1, -0.1, -0.9, 1e-40, -1e-40}; -+ double frin2[] = {1.0, 0.0, -0.0, -1.0, 0.0, -0.0}; -+ int frin2rf[] = {POS_NORMAL,POS_ZERO,NEG_ZERO,NEG_NORMAL,POS_ZERO,NEG_ZERO}; -+ double friz2[] = {0.0, 0.0, -0.0, -0.0, 0.0, -0.0}; -+ int friz2rf[] = {POS_ZERO,POS_ZERO,NEG_ZERO,NEG_ZERO,POS_ZERO,NEG_ZERO}; -+ double frip2[] = {1.0, 1.0, -0.0, -0.0, 1.0, -0.0}; -+ int frip2rf[] = {POS_NORMAL,POS_NORMAL,NEG_ZERO,NEG_ZERO,POS_NORMAL,NEG_ZERO}; -+ double frim2[] = {0.0, 0.0, -1.0, -1.0, 0.0, -1.0}; -+ int frim2rf[] = {POS_ZERO,POS_ZERO,NEG_NORMAL,NEG_NORMAL,POS_ZERO,NEG_NORMAL}; -+ double ret; -+ int i; -+ -+#define DO_TEST(op,in,out,rf) for (i=0; i -+#include -+#include -+ -+#define CMPB(result,a,b) \ -+ asm __volatile ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) -+ -+ -+int main (int argc, char* argv[]) { -+ int i,j,k; -+ long mask; -+ for (i=1; i<16; i++) { -+ mask = 0; -+ if(i&1) mask+=0xff; -+ if(i&2) mask+=0xff00; -+ if(i&4) mask+=0xff0000; -+ if(i&8) mask+=0xff000000; -+ -+ for (j=0; j<256; j++) -+ for (k=0; k<256; k++) -+ if (j!=k) { -+ -+ long a, b, result; -+ a = (mask & (j*0x1010101)) + ((~mask) & (k*0x1010101)); -+ b = j*0x1010101; -+ CMPB(result, a, b); -+ if (result != mask) -+ printf("%8x %8x %8x %8x\n", mask, a, b, result); -+ exit(1); -+ } -+ -+ } -+ -+ return 0; -+} -+ ---- valgrind-3.2.3/none/tests/ppc32/power6_bcmp.stderr.exp 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc32/power6_bcmp.stderr.exp 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,2 @@ -+ -+ ---- valgrind-3.2.3/none/tests/ppc32/power6_bcmp.vgtest 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc32/power6_bcmp.vgtest 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1 @@ -+prog: power6_bcmp ---- valgrind-3.2.3/none/tests/ppc64/Makefile.am 2006-08-28 08:38:48.000000000 -0500 -+++ valgrind-3.2.3/none/tests/ppc64/Makefile.am 2007-05-16 18:11:29.000000000 -0500 -@@ -7,10 +7,13 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ - lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ - round.stderr.exp round.stdout.exp round.vgtest \ -- twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest -+ twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ -+ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ -+ power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest -+ - - check_PROGRAMS = \ -- jm-insns lsw round twi_tdi -+ jm-insns lsw round twi_tdi power6_bcmp power6_mf_gpr - - AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ - @FLAG_M64@ ---- valgrind-3.2.3/none/tests/ppc64/power6_bcmp.c 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_bcmp.c 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,61 @@ -+/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307, USA. -+ -+ The GNU General Public License is contained in the file COPYING. -+*/ -+ -+ -+#include -+#include -+#include -+ -+#define CMPB(result,a,b) \ -+ asm ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) -+ -+ -+int main (int argc, char* argv[]) { -+ int i,j,k; -+ unsigned long mask; -+ for (i=1; i<256; i++) { -+ mask = 0; -+ if(i&1) mask+=0xff; -+ if(i&2) mask+=0xff00; -+ if(i&4) mask+=0xff0000; -+ if(i&8) mask+=0xff000000; -+ if(i&16) mask+=0xff00000000; -+ if(i&32) mask+=0xff0000000000; -+ if(i&64) mask+=0xff000000000000; -+ if(i&128) mask+=0xff00000000000000; -+ -+ for (j=0; j<256; j++) -+ for (k=0; k<256; k++) -+ if (j!=k) { -+ -+ unsigned long a, b, result; -+ a = (mask & (j*0x101010101010101)) + ((~mask) & (k*0x101010101010101)); -+ b = j*0x101010101010101; -+ CMPB(result, a, b); -+ if (result != mask) -+ printf("%8lx %8lx %8lx %8lx\n", mask, a, b, result); -+ exit(1); -+ } -+ -+ } -+ -+ return 0; -+} -+ ---- valgrind-3.2.3/none/tests/ppc64/power6_bcmp.stderr.exp 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_bcmp.stderr.exp 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,2 @@ -+ -+ ---- valgrind-3.2.3/none/tests/ppc64/power6_bcmp.vgtest 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_bcmp.vgtest 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1 @@ -+prog: power6_bcmp ---- valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.c 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.c 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,47 @@ -+/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307, USA. -+ -+ The GNU General Public License is contained in the file COPYING. -+*/ -+ -+#include -+#include -+ -+ -+ -+int main (int argc, char* argv[]) -+{ -+ -+ long i; -+ double f; -+ -+ i = 0; -+ f = 100.0; -+ -+ printf("%lx %f\n", i, f); -+ -+ asm ("mftgpr %0, %1\n" : "=r"(i) : "f"(f)); -+ -+ f=0.0; -+ printf("%lx %f\n", i, f); -+ -+ asm ("mffgpr %0, %1\n" : "=f"(f) : "r"(i)); -+ -+ printf("%lx %f\n", i, f); -+ -+ return 0; -+} ---- valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.stderr.exp 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.stderr.exp 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,2 @@ -+ -+ ---- valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.stdout.exp 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.stdout.exp 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1,3 @@ -+0 100.000000 -+4059000000000000 0.000000 -+4059000000000000 100.000000 ---- valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.vgtest 1969-12-31 18:00:00.000000000 -0600 -+++ valgrind-3.2.3/none/tests/ppc64/power6_mf_gpr.vgtest 2007-05-16 18:05:02.000000000 -0500 -@@ -0,0 +1 @@ -+prog: power6_mf_gpr ---- valgrind-3.2.3/none/tests/ppc32/Makefile.in 2007-01-29 20:45:20.000000000 +0100 -+++ valgrind-3.2.3/none/tests/ppc32/Makefile.in 2007-08-03 16:49:16.000000000 +0200 -@@ -39,7 +39,8 @@ host_triplet = @host@ - check_PROGRAMS = ldstrev$(EXEEXT) lsw$(EXEEXT) jm-insns$(EXEEXT) \ - mftocrf$(EXEEXT) round$(EXEEXT) test_fx$(EXEEXT) \ - test_gx$(EXEEXT) testVMX$(EXEEXT) twi$(EXEEXT) \ -- xlc_dbl_u32$(EXEEXT) -+ xlc_dbl_u32$(EXEEXT) power5+_round$(EXEEXT) \ -+ power6_bcmp$(EXEEXT) - subdir = none/tests/ppc32 - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -@@ -61,6 +62,12 @@ lsw_LDADD = $(LDADD) - mftocrf_SOURCES = mftocrf.c - mftocrf_OBJECTS = mftocrf.$(OBJEXT) - mftocrf_LDADD = $(LDADD) -+power5__round_SOURCES = power5+_round.c -+power5__round_OBJECTS = power5+_round.$(OBJEXT) -+power5__round_LDADD = $(LDADD) -+power6_bcmp_SOURCES = power6_bcmp.c -+power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) -+power6_bcmp_LDADD = $(LDADD) - round_SOURCES = round.c - round_OBJECTS = round.$(OBJEXT) - round_LDADD = $(LDADD) -@@ -87,10 +94,12 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUD - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - CCLD = $(CC) - LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --SOURCES = jm-insns.c ldstrev.c lsw.c mftocrf.c round.c testVMX.c \ -- test_fx.c test_gx.c twi.c xlc_dbl_u32.c --DIST_SOURCES = jm-insns.c ldstrev.c lsw.c mftocrf.c round.c testVMX.c \ -- test_fx.c test_gx.c twi.c xlc_dbl_u32.c -+SOURCES = jm-insns.c ldstrev.c lsw.c mftocrf.c power5+_round.c \ -+ power6_bcmp.c round.c testVMX.c test_fx.c test_gx.c twi.c \ -+ xlc_dbl_u32.c -+DIST_SOURCES = jm-insns.c ldstrev.c lsw.c mftocrf.c power5+_round.c \ -+ power6_bcmp.c round.c testVMX.c test_fx.c test_gx.c twi.c \ -+ xlc_dbl_u32.c - ETAGS = etags - CTAGS = ctags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -@@ -228,7 +245,9 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ - test_gx.stderr.exp test_gx.stdout.exp test_gx.vgtest \ - testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ - twi.stderr.exp twi.stdout.exp twi.vgtest \ -- xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest -+ xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ -+ power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ -+ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest - - AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ - @FLAG_M32@ -@@ -288,6 +307,12 @@ lsw$(EXEEXT): $(lsw_OBJECTS) $(lsw_DEPEN - mftocrf$(EXEEXT): $(mftocrf_OBJECTS) $(mftocrf_DEPENDENCIES) - @rm -f mftocrf$(EXEEXT) - $(LINK) $(mftocrf_LDFLAGS) $(mftocrf_OBJECTS) $(mftocrf_LDADD) $(LIBS) -+power5+_round$(EXEEXT): $(power5__round_OBJECTS) $(power5__round_DEPENDENCIES) -+ @rm -f power5+_round$(EXEEXT) -+ $(LINK) $(power5__round_LDFLAGS) $(power5__round_OBJECTS) $(power5__round_LDADD) $(LIBS) -+power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) -+ @rm -f power6_bcmp$(EXEEXT) -+ $(LINK) $(power6_bcmp_LDFLAGS) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) - round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) - @rm -f round$(EXEEXT) - $(LINK) $(round_LDFLAGS) $(round_OBJECTS) $(round_LDADD) $(LIBS) -@@ -317,6 +342,8 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldstrev.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mftocrf.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power5+_round.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testVMX-testVMX.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fx.Po@am__quote@ ---- valgrind-3.2.3/none/tests/ppc64/Makefile.in 2007-01-29 20:45:21.000000000 +0100 -+++ valgrind-3.2.3/none/tests/ppc64/Makefile.in 2007-08-03 16:49:16.000000000 +0200 -@@ -37,7 +37,7 @@ POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ - check_PROGRAMS = jm-insns$(EXEEXT) lsw$(EXEEXT) round$(EXEEXT) \ -- twi_tdi$(EXEEXT) -+ twi_tdi$(EXEEXT) power6_bcmp$(EXEEXT) power6_mf_gpr$(EXEEXT) - subdir = none/tests/ppc64 - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -@@ -53,6 +53,12 @@ jm_insns_LDADD = $(LDADD) - lsw_SOURCES = lsw.c - lsw_OBJECTS = lsw.$(OBJEXT) - lsw_LDADD = $(LDADD) -+power6_bcmp_SOURCES = power6_bcmp.c -+power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) -+power6_bcmp_LDADD = $(LDADD) -+power6_mf_gpr_SOURCES = power6_mf_gpr.c -+power6_mf_gpr_OBJECTS = power6_mf_gpr.$(OBJEXT) -+power6_mf_gpr_LDADD = $(LDADD) - round_SOURCES = round.c - round_OBJECTS = round.$(OBJEXT) - round_LDADD = $(LDADD) -@@ -67,8 +73,10 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUD - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - CCLD = $(CC) - LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --SOURCES = jm-insns.c lsw.c round.c twi_tdi.c --DIST_SOURCES = jm-insns.c lsw.c round.c twi_tdi.c -+SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ -+ twi_tdi.c -+DIST_SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ -+ twi_tdi.c - ETAGS = etags - CTAGS = ctags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -@@ -200,7 +216,9 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ - lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ - round.stderr.exp round.stdout.exp round.vgtest \ -- twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest -+ twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ -+ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ -+ power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest - - AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ - @FLAG_M64@ -@@ -251,6 +269,12 @@ jm-insns$(EXEEXT): $(jm_insns_OBJECTS) $ - lsw$(EXEEXT): $(lsw_OBJECTS) $(lsw_DEPENDENCIES) - @rm -f lsw$(EXEEXT) - $(LINK) $(lsw_LDFLAGS) $(lsw_OBJECTS) $(lsw_LDADD) $(LIBS) -+power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) -+ @rm -f power6_bcmp$(EXEEXT) -+ $(LINK) $(power6_bcmp_LDFLAGS) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) -+power6_mf_gpr$(EXEEXT): $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_DEPENDENCIES) -+ @rm -f power6_mf_gpr$(EXEEXT) -+ $(LINK) $(power6_mf_gpr_LDFLAGS) $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_LDADD) $(LIBS) - round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) - @rm -f round$(EXEEXT) - $(LINK) $(round_LDFLAGS) $(round_OBJECTS) $(round_LDADD) $(LIBS) -@@ -266,6 +290,8 @@ distclean-compile: - - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jm_insns-jm-insns.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_mf_gpr.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twi_tdi.Po@am__quote@ - diff --git a/valgrind-3.2.3-private-futex.patch b/valgrind-3.2.3-private-futex.patch deleted file mode 100644 index 356f310..0000000 --- a/valgrind-3.2.3-private-futex.patch +++ /dev/null @@ -1,59 +0,0 @@ ---- valgrind-3.2.3/include/vki-linux.h (revision 6760) -+++ valgrind-3.2.3/include/vki-linux.h (working copy) -@@ -1151,6 +1151,7 @@ - #define VKI_FUTEX_FD (2) - #define VKI_FUTEX_REQUEUE (3) - #define VKI_FUTEX_CMP_REQUEUE (4) -+#define VKI_FUTEX_PRIVATE_FLAG (128) - - struct vki_robust_list { - struct vki_robust_list __user *next; ---- valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c (revision 6760) -+++ valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c (working copy) -@@ -843,21 +843,25 @@ - PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5); - switch(ARG2) { - case VKI_FUTEX_CMP_REQUEUE: -+ case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: - PRE_REG_READ6(long, "futex", - vki_u32 *, futex, int, op, int, val, - struct timespec *, utime, vki_u32 *, uaddr2, int, val3); - break; - case VKI_FUTEX_REQUEUE: -+ case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: - PRE_REG_READ5(long, "futex", - vki_u32 *, futex, int, op, int, val, - struct timespec *, utime, vki_u32 *, uaddr2); - break; - case VKI_FUTEX_WAIT: -+ case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG: - PRE_REG_READ4(long, "futex", - vki_u32 *, futex, int, op, int, val, - struct timespec *, utime); - break; - case VKI_FUTEX_WAKE: -+ case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG: - case VKI_FUTEX_FD: - PRE_REG_READ3(long, "futex", - vki_u32 *, futex, int, op, int, val); -@@ -873,16 +877,20 @@ - - switch(ARG2) { - case VKI_FUTEX_WAIT: -+ case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG: - if (ARG4 != 0) - PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) ); - break; - - case VKI_FUTEX_REQUEUE: -+ case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: - case VKI_FUTEX_CMP_REQUEUE: -+ case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: - PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) ); - break; - - case VKI_FUTEX_WAKE: -+ case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG: - case VKI_FUTEX_FD: - /* no additional pointers */ - break; diff --git a/valgrind-3.2.3-x86_64-nops.patch b/valgrind-3.2.3-x86_64-nops.patch deleted file mode 100644 index 815f22f..0000000 --- a/valgrind-3.2.3-x86_64-nops.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- valgrind-3.2.3/VEX/priv/guest-amd64/toIR.c (revision 1776) -+++ valgrind-3.2.3/VEX/priv/guest-amd64/toIR.c (revision 1777) -@@ -8355,7 +8355,7 @@ DisResult disInstr_AMD64_WRK ( - as many invalid combinations as possible. */ - n_prefixes = 0; - while (True) { -- if (n_prefixes > 5) goto decode_failure; -+ if (n_prefixes > 7) goto decode_failure; - pre = getUChar(delta); - switch (pre) { - case 0x66: pfx |= PFX_66; break; diff --git a/valgrind-3.3.0-cachegrind-improvements.patch b/valgrind-3.3.0-cachegrind-improvements.patch new file mode 100644 index 0000000..c7864df --- /dev/null +++ b/valgrind-3.3.0-cachegrind-improvements.patch @@ -0,0 +1,64 @@ +--- valgrind-3.3.0/cachegrind/cg_sim.c.jj 2007-01-08 02:43:10.000000000 -0500 ++++ valgrind-3.3.0/cachegrind/cg_sim.c 2007-02-13 07:15:46.000000000 -0500 +@@ -42,29 +42,32 @@ typedef struct { + Int size; /* bytes */ + Int assoc; + Int line_size; /* bytes */ +- Int sets; + Int sets_min_1; + Int assoc_bits; + Int line_size_bits; + Int tag_shift; +- Char desc_line[128]; + UWord* tags; +-} cache_t2; ++ Char desc_line[128]; ++} cache_t2 ++#ifdef __GNUC__ ++__attribute__ ((aligned (8 * sizeof (Int)))) ++#endif ++; + + /* By this point, the size/assoc/line_size has been checked. */ + static void cachesim_initcache(cache_t config, cache_t2* c) + { +- Int i; ++ Int sets; + + c->size = config.size; + c->assoc = config.assoc; + c->line_size = config.line_size; + +- c->sets = (c->size / c->line_size) / c->assoc; +- c->sets_min_1 = c->sets - 1; ++ sets = (c->size / c->line_size) / c->assoc; ++ c->sets_min_1 = sets - 1; + c->assoc_bits = VG_(log2)(c->assoc); + c->line_size_bits = VG_(log2)(c->line_size); +- c->tag_shift = c->line_size_bits + VG_(log2)(c->sets); ++ c->tag_shift = c->line_size_bits + VG_(log2)(sets); + + if (c->assoc == 1) { + VG_(sprintf)(c->desc_line, "%d B, %d B, direct-mapped", +@@ -74,10 +77,7 @@ static void cachesim_initcache(cache_t c + c->size, c->line_size, c->assoc); + } + +- c->tags = VG_(malloc)(sizeof(UWord) * c->sets * c->assoc); +- +- for (i = 0; i < c->sets * c->assoc; i++) +- c->tags[i] = 0; ++ c->tags = VG_(calloc)(sizeof(UWord) * sets, c->assoc); + } + + /* This is done as a macro rather than by passing in the cache_t2 as an +@@ -140,8 +140,7 @@ void cachesim_##L##_doref(Addr a, UChar + return; \ + \ + /* Second case: word straddles two lines. */ \ +- /* Nb: this is a fast way of doing ((set1+1) % L.sets) */ \ +- } else if (((set1 + 1) & (L.sets-1)) == set2) { \ ++ } else if (((set1 + 1) & (L.sets_min_1)) == set2) { \ + set = &(L.tags[set1 << L.assoc_bits]); \ + if (tag == set[0]) { \ + goto block2; \ diff --git a/valgrind-3.3.0-helgrind-p_b_w.patch b/valgrind-3.3.0-helgrind-p_b_w.patch new file mode 100644 index 0000000..c78a6ca --- /dev/null +++ b/valgrind-3.3.0-helgrind-p_b_w.patch @@ -0,0 +1,14 @@ +--- valgrind-3.3.0/glibc-2.34567-NPTL-helgrind.supp.jj 2007-12-11 00:18:47.000000000 +0100 ++++ valgrind-3.3.0/glibc-2.34567-NPTL-helgrind.supp 2008-03-03 13:48:42.000000000 +0100 +@@ -198,6 +198,11 @@ + obj:/lib*/libpthread-2.7.*so + fun:sem_* + } ++{ ++ helgrind-glibc27-199 ++ Helgrind:Race ++ fun:pthread_barrier_wait ++} + + ######------------ glibc-2.6 specific ---------###### + # diff --git a/valgrind-3.3.0-openat.patch b/valgrind-3.3.0-openat.patch new file mode 100644 index 0000000..0a2d6a6 --- /dev/null +++ b/valgrind-3.3.0-openat.patch @@ -0,0 +1,38 @@ +Testcase: +#define _GNU_SOURCE +#include +#include + +int +main (void) +{ + int dfd = open ("/tmp", O_RDONLY); + int fd1 = openat (dfd, "abc", O_RDONLY); + int fd2 = openat (0x12345678, "/tmp/abc", O_RDONLY); + int fd3 = openat (AT_FDCWD, "abc", O_RDONLY); + /* This is the only one that should warn. */ + int fd4 = openat (0x12345678, "abc", O_RDONLY); + return 0; +} + +--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c.jj 2007-12-11 00:18:43.000000000 +0100 ++++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c 2008-03-03 11:35:15.000000000 +0100 +@@ -2455,10 +2455,15 @@ PRE(sys_openat) + int, dfd, const char *, filename, int, flags); + } + +- if (ARG1 != VKI_AT_FDCWD && !ML_(fd_allowed)(ARG1, "openat", tid, False)) ++ PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); ++ ++ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD, ++ filename is relative to cwd. */ ++ if (ML_(safe_to_deref)( (void*)ARG2, 1 ) ++ && *(Char *)ARG2 != '/' ++ && ARG1 != VKI_AT_FDCWD ++ && !ML_(fd_allowed)(ARG1, "openat", tid, False)) + SET_STATUS_Failure( VKI_EBADF ); +- else +- PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); + + /* Handle the case where the open is of /proc/self/cmdline or + /proc//cmdline, and just give it a copy of the fd for the diff --git a/valgrind-3.3.0-pkg-config.patch b/valgrind-3.3.0-pkg-config.patch new file mode 100644 index 0000000..ffedf36 --- /dev/null +++ b/valgrind-3.3.0-pkg-config.patch @@ -0,0 +1,63 @@ +--- valgrind-3.3.0/configure.in.jj 2007-01-29 14:42:52.000000000 -0500 ++++ valgrind-3.3.0/configure.in 2007-02-13 08:02:26.000000000 -0500 +@@ -251,6 +251,7 @@ AC_MSG_CHECKING([for a supported CPU/OS + + AC_SUBST(VG_PLATFORM_PRI) + AC_SUBST(VG_PLATFORM_SEC) ++AC_SUBST(VG_PLATFORM) + + case "$VG_ARCH-$VG_OS" in + x86-linux) +@@ -296,6 +297,7 @@ case "$VG_ARCH-$VG_OS" in + AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doing a port.]) + ;; + esac ++VG_PLATFORM=`echo "$VG_PLATFORM_PRI" | LC_ALL=C tr A-Z_ a-z-` + + # Set up VG_. Either one or two of these become defined. + # +--- valgrind-3.3.0/configure.jj 2007-01-29 14:45:30.000000000 -0500 ++++ valgrind-3.3.0/configure 2007-02-13 08:04:33.000000000 -0500 +@@ -311,7 +311,7 @@ ac_includes_default="\ + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT VEX_DIR DISTCHECK_CONFIGURE_FLAGS LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB PERL GDB CCAS CCASFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os VG_ARCH VG_ARCH_ALL VALT_LOAD_ADDRESS VG_OS VG_PLATFORM_PRI VG_PLATFORM_SEC VGP_X86_LINUX_TRUE VGP_X86_LINUX_FALSE VGP_AMD64_LINUX_TRUE VGP_AMD64_LINUX_FALSE VGP_PPC32_LINUX_TRUE VGP_PPC32_LINUX_FALSE VGP_PPC64_LINUX_TRUE VGP_PPC64_LINUX_FALSE VGP_PPC32_AIX5_TRUE VGP_PPC32_AIX5_FALSE VGP_PPC64_AIX5_TRUE VGP_PPC64_AIX5_FALSE VGO_LINUX_TRUE VGO_LINUX_FALSE VGO_AIX5_TRUE VGO_AIX5_FALSE VGP_HAVE_SECONDARY_TRUE VGP_HAVE_SECONDARY_FALSE DEFAULT_SUPP EGREP FLAG_M32 FLAG_MAIX32 FLAG_M64 FLAG_MAIX64 FLAG_MMMX FLAG_MSSE PREFERRED_STACK_BOUNDARY FLAG_WDECL_AFTER_STMT FLAG_FNO_STACK_PROTECTOR BUILD_SSE3_TESTS_TRUE BUILD_SSE3_TESTS_FALSE LIBOBJS MPI_CC BUILD_MPIWRAP_PRI_TRUE BUILD_MPIWRAP_PRI_FALSE BUILD_MPIWRAP_SEC_TRUE BUILD_MPIWRAP_SEC_FALSE LTLIBOBJS' ++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT VEX_DIR DISTCHECK_CONFIGURE_FLAGS LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB PERL GDB CCAS CCASFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os VG_ARCH VG_ARCH_ALL VALT_LOAD_ADDRESS VG_OS VG_PLATFORM_PRI VG_PLATFORM_SEC VG_PLATFORM VGP_X86_LINUX_TRUE VGP_X86_LINUX_FALSE VGP_AMD64_LINUX_TRUE VGP_AMD64_LINUX_FALSE VGP_PPC32_LINUX_TRUE VGP_PPC32_LINUX_FALSE VGP_PPC64_LINUX_TRUE VGP_PPC64_LINUX_FALSE VGP_PPC32_AIX5_TRUE VGP_PPC32_AIX5_FALSE VGP_PPC64_AIX5_TRUE VGP_PPC64_AIX5_FALSE VGO_LINUX_TRUE VGO_LINUX_FALSE VGO_AIX5_TRUE VGO_AIX5_FALSE VGP_HAVE_SECONDARY_TRUE VGP_HAVE_SECONDARY_FALSE DEFAULT_SUPP EGREP FLAG_M32 FLAG_MAIX32 FLAG_M64 FLAG_MAIX64 FLAG_MMMX FLAG_MSSE PREFERRED_STACK_BOUNDARY FLAG_WDECL_AFTER_STMT FLAG_FNO_STACK_PROTECTOR BUILD_SSE3_TESTS_TRUE BUILD_SSE3_TESTS_FALSE LIBOBJS MPI_CC BUILD_MPIWRAP_PRI_TRUE BUILD_MPIWRAP_PRI_FALSE BUILD_MPIWRAP_SEC_TRUE BUILD_MPIWRAP_SEC_FALSE LTLIBOBJS' + ac_subst_files='' + + # Initialize some variables set by options. +@@ -4348,6 +4348,7 @@ echo "$as_me: error: Valgrind is platfor + { (exit 1); exit 1; }; } + ;; + esac ++VG_PLATFORM=`echo "$VG_PLATFORM_PRI" | LC_ALL=C tr A-Z_ a-z-` + + # Set up VGP_. Either one or two of these become defined. + # +@@ -8351,6 +8352,7 @@ s,@VALT_LOAD_ADDRESS@,$VALT_LOAD_ADDRESS + s,@VG_OS@,$VG_OS,;t t + s,@VG_PLATFORM_PRI@,$VG_PLATFORM_PRI,;t t + s,@VG_PLATFORM_SEC@,$VG_PLATFORM_SEC,;t t ++s,@VG_PLATFORM@,$VG_PLATFORM,;t t + s,@VGP_X86_LINUX_TRUE@,$VGP_X86_LINUX_TRUE,;t t + s,@VGP_X86_LINUX_FALSE@,$VGP_X86_LINUX_FALSE,;t t + s,@VGP_AMD64_LINUX_TRUE@,$VGP_AMD64_LINUX_TRUE,;t t +--- valgrind-3.3.0/valgrind.pc.in.jj 2007-01-02 09:52:30.000000000 -0500 ++++ valgrind-3.3.0/valgrind.pc.in 2007-02-13 08:04:57.000000000 -0500 +@@ -4,13 +4,13 @@ libdir=@libdir@ + includedir=@includedir@/valgrind + arch=@VG_ARCH@ + os=@VG_OS@ +-platform=@VG_PLATFORM_PRI@ ++platform=@VG_PLATFORM@ + valt_load_address=@VALT_LOAD_ADDRESS@ + + Name: Valgrind + Description: A dynamic binary instrumentation framework + Version: @VERSION@ + Requires: +-Libs: -L${libdir}/valgrind/@VG_PLATFORM_PRI@ -lcoregrind -lvex -lgcc ++Libs: -L${libdir}/valgrind/@VG_PLATFORM@ -lcoregrind -lvex -lgcc + Cflags: -I${includedir} + diff --git a/valgrind-3.3.0-power5+-6.patch b/valgrind-3.3.0-power5+-6.patch new file mode 100644 index 0000000..48f884d --- /dev/null +++ b/valgrind-3.3.0-power5+-6.patch @@ -0,0 +1,781 @@ +--- valgrind-3.3.0/VEX/priv/guest-ppc/toIR.c.jj 2007-12-11 00:18:52.000000000 +0100 ++++ valgrind-3.3.0/VEX/priv/guest-ppc/toIR.c 2008-03-03 09:58:59.000000000 +0100 +@@ -333,6 +333,7 @@ typedef enum { + } PPC_GST; + + #define MASK_FPSCR_RN 0x3 ++#define MASK_FPSCR_FPRF 0x1F000 + #define MASK_VSCR_VALID 0x00010001 + + +@@ -2142,7 +2143,7 @@ static IRExpr* /* ::Ity_I32 */ getGST_ma + + /* We're only keeping track of the rounding mode, + so if the mask isn't asking for this, just return 0x0 */ +- if (mask & 0x3) { ++ if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) { + assign( val, IRExpr_Get( OFFB_FPROUND, Ity_I32 ) ); + } else { + assign( val, mkU32(0x0) ); +@@ -2271,7 +2272,7 @@ static void putGST_masked ( PPC_GST reg, + switch (reg) { + case PPC_GST_FPSCR: { + /* Allow writes to Rounding Mode */ +- if (mask & 0x3) { ++ if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) { + /* construct new fpround from new and old values as per mask: + new fpround = (src & (3 & mask)) | (fpround & (3 & ~mask)) */ + stmt( +@@ -2279,11 +2280,11 @@ static void putGST_masked ( PPC_GST reg, + OFFB_FPROUND, + binop( + Iop_Or32, +- binop(Iop_And32, src, mkU32(3 & mask)), ++ binop(Iop_And32, src, mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & mask)), + binop( + Iop_And32, + IRExpr_Get(OFFB_FPROUND,Ity_I32), +- mkU32(3 & ~mask) ++ mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & ~mask) + ) + ) + ) +@@ -3224,6 +3225,48 @@ static Bool dis_int_logic ( UInt theInst + // TODO: alternatively: assign(rA, verbose_Clz64(rS)); + break; + ++ case 0x1FC: // cmpb (Power6: compare bytes) ++ DIP("cmpb r%u,r%u,r%u\n", rA_addr, rS_addr, rB_addr); ++ ++ if (mode64) ++ assign( rA, unop( Iop_V128to64, ++ binop( Iop_CmpEQ8x16, ++ binop( Iop_64HLtoV128, mkU64(0), mkexpr(rS) ), ++ binop( Iop_64HLtoV128, mkU64(0), mkexpr(rB) ) ++ )) ); ++ else ++ assign( rA, unop( Iop_V128to32, ++ binop( Iop_CmpEQ8x16, ++ unop( Iop_32UtoV128, mkexpr(rS) ), ++ unop( Iop_32UtoV128, mkexpr(rB) ) ++ )) ); ++ break; ++ ++ case 0x2DF: { // mftgpr (move floating-point to general purpose register) ++ IRTemp frB = newTemp(Ity_F64); ++ DIP("mftgpr r%u,fr%u\n", rS_addr, rB_addr); ++ ++ assign( frB, getFReg(rB_addr)); // always F64 ++ if (mode64) ++ assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) ); ++ else ++ assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) ); ++ ++ putIReg( rS_addr, mkexpr(rA)); ++ return True; ++ } ++ case 0x25F: { // mffgpr (move floating-point from general purpose register) ++ IRTemp frA = newTemp(Ity_F64); ++ DIP("mffgpr fr%u,r%u\n", rS_addr, rB_addr); ++ ++ if (mode64) ++ assign( frA, unop( Iop_ReinterpI64asF64, mkexpr(rB)) ); ++ else ++ assign( frA, unop( Iop_ReinterpI64asF64, unop( Iop_32Uto64, mkexpr(rB))) ); ++ ++ putFReg( rS_addr, mkexpr(frA)); ++ return True; ++ } + default: + vex_printf("dis_int_logic(ppc)(opc2)\n"); + return False; +@@ -6533,6 +6576,45 @@ static Bool dis_fp_round ( UInt theInstr + binop(Iop_I64toF64, rm, mkexpr(r_tmp64)) ); + break; + ++ case 0x188: case 0x1A8: case 0x1C8: case 0x1E8: // frin, friz, frip, frim ++ switch(opc2) { ++ case 0x188: // frin (Floating Round to Integer Nearest) ++ DIP("frin%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); ++ assign( r_tmp64, ++ binop(Iop_F64toI64, mkU32(Irrm_NEAREST), mkexpr(frB)) ); ++ break; ++ case 0x1A8: // friz (Floating Round to Integer Toward Zero) ++ DIP("friz%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); ++ assign( r_tmp64, ++ binop(Iop_F64toI64, mkU32(Irrm_ZERO), mkexpr(frB)) ); ++ break; ++ case 0x1C8: // frip (Floating Round to Integer Plus) ++ DIP("frip%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); ++ assign( r_tmp64, ++ binop(Iop_F64toI64, mkU32(Irrm_PosINF), mkexpr(frB)) ); ++ break; ++ case 0x1E8: // frim (Floating Round to Integer Minus) ++ DIP("frim%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr); ++ assign( r_tmp64, ++ binop(Iop_F64toI64, mkU32(Irrm_NegINF), mkexpr(frB)) ); ++ break; ++ } ++ ++ /* don't use the rounded integer if frB is outside -9e18..9e18 */ ++ /* F64 has only log10(2**52) significant digits anyway */ ++ /* need to preserve sign of zero */ ++ /* frD = (fabs(frB) > 9e18) ? frB : ++ (sign(frB)) ? -fabs((double)r_tmp64) : (double)r_tmp64 */ ++ assign( frD, IRExpr_Mux0X( unop( Iop_32to8, binop( Iop_CmpF64, ++ IRExpr_Const(IRConst_F64(9e18)), unop( Iop_AbsF64, mkexpr(frB)))), ++ IRExpr_Mux0X( unop( Iop_32to8, binop( Iop_Shr32, unop( Iop_64HIto32, ++ unop(Iop_ReinterpF64asI64, mkexpr(frB))), mkU8(31))), ++ binop( Iop_I64toF64, mkU32(0), mkexpr(r_tmp64) ), ++ unop( Iop_NegF64, unop( Iop_AbsF64, ++ binop(Iop_I64toF64, mkU32(0), mkexpr(r_tmp64)) )) ), ++ mkexpr(frB) )); ++ break; ++ + default: + vex_printf("dis_fp_round(ppc)(opc2)\n"); + return False; +@@ -9139,6 +9221,10 @@ DisResult disInstr_PPC_WRK ( + case 0x32E: // fctid + case 0x32F: // fctidz + case 0x34E: // fcfid ++ case 0x188: // frin (Power5+) ++ case 0x1A8: // friz (Power5+) ++ case 0x1C8: // frip (Power5+) ++ case 0x1E8: // frim (Power5+) + if (dis_fp_round(theInstr)) goto decode_success; + goto decode_failure; + +@@ -9216,6 +9302,10 @@ DisResult disInstr_PPC_WRK ( + if (dis_int_arith( theInstr )) goto decode_success; + goto decode_failure; + ++ case 0x1FC: // cmpb ++ if (dis_int_logic( theInstr )) goto decode_success; ++ goto decode_failure; ++ + default: + break; // Fall through... + } +@@ -9234,6 +9324,7 @@ DisResult disInstr_PPC_WRK ( + case 0x11C: case 0x3BA: case 0x39A: // eqv, extsb, extsh + case 0x1DC: case 0x07C: case 0x1BC: // nand, nor, or + case 0x19C: case 0x13C: // orc, xor ++ case 0x2DF: case 0x25F: // mftgpr, mffgpr + if (dis_int_logic( theInstr )) goto decode_success; + goto decode_failure; + +--- valgrind-3.3.0/none/tests/ppc32/Makefile.am.jj 2007-12-11 00:18:32.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc32/Makefile.am 2008-03-03 10:00:36.000000000 +0100 +@@ -19,13 +19,15 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ + testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ + twi.stderr.exp twi.stdout.exp twi.vgtest \ + tw.stderr.exp tw.stdout.exp tw.vgtest \ +- xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest ++ xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ ++ power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ ++ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest + + check_PROGRAMS = \ + bug129390-ppc32 \ + bug139050-ppc32 \ + ldstrev lsw jm-insns mftocrf mcrfs round test_fx test_gx \ +- testVMX twi tw xlc_dbl_u32 ++ testVMX twi tw xlc_dbl_u32 power5+_round power6_bcmp + + AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ + @FLAG_M32@ +--- valgrind-3.3.0/none/tests/ppc32/power5+_round.c.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc32/power5+_round.c 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,147 @@ ++/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307, USA. ++ ++ The GNU General Public License is contained in the file COPYING. ++*/ ++ ++ ++ ++#include ++#include ++#include ++#include ++ ++#define POS_NORMAL 0x4000 ++#define NEG_NORMAL 0x8000 ++#define POS_INF 0x5000 ++#define NEG_INF 0x9000 ++#define POS_ZERO 0x2000 ++#define NEG_ZERO 0x12000 ++#define POS_DENORMAL 0x14000 ++#define NEG_DENORMAL 0x18000 ++#define NAN 0x11000 ++#define FPRF_MASK 0x1F000 ++ ++ ++int main (int argc, char* argv[]) { ++ ++ double inf, neg0, nan; ++ union { ++ double d; ++ struct { unsigned int dummy, dummy2: 15, fprf:17; }; ++ } fpscr; ++ ++ inf = strtod("inf", NULL); ++ neg0 = copysign(0, -1); ++ nan = strtod("nan", NULL); ++ ++ ++ /* This set is disabled until fprf is implemented. */ ++ if (0) { ++ double set[] = {inf, 1.5, 0, neg0, -1.5, -inf, nan}; ++ int i, j, fprf; ++ for (i=0; i<7; ++i) { ++ for (j=0; j<7; ++j) { ++ asm ("fcmpu 1, %1, %2\n\t" \ ++ "mffs %0\n" \ ++ : "=f" (fpscr.d) \ ++ : "f" (set[i]), "f" (set[j]) \ ++ ); ++ ++ if (i == 6 || j == 6) { ++ fprf = 0x1000; // Unordered ++ } else if (i == j || (i==2 && j==3) || (i==3 && j==2)) { ++ fprf = 0x2000; // Equal ++ } else if (i < j) { ++ fprf = 0x4000; // Greater Than ++ } else if (i > j) { ++ fprf = 0x8000; // Less Than ++ } ++ ++ printf("fcmpu\t%.1f\t%.1f\t%x\t%s\n", set[i], set[j], fpscr.fprf, ++ fpscr.fprf == fprf ? "PASS" : "FAIL"); ++ } ++ } ++ } ++ ++ { ++ double set[] = {inf, 1.9, 1.1, 0, neg0, -1.1, -1.9, -inf, nan}; ++ double frin[] = {inf, 2.0, 1.0, 0, neg0, -1.0, -2.0, -inf, nan}; ++ double friz[] = {inf, 1.0, 1.0, 0, neg0, -1.0, -1.0, -inf, nan}; ++ double frip[] = {inf, 2.0, 2.0, 0, neg0, -1.0, -1.0, -inf, nan}; ++ double frim[] = {inf, 1.0, 1.0, 0, neg0, -2.0, -2.0, -inf, nan}; ++ int fprf[] = {POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO, ++ NEG_NORMAL, NEG_NORMAL, NEG_INF, NAN}; ++ double set2[] = {0.9, 0.1, -0.1, -0.9, 1e-40, -1e-40}; ++ double frin2[] = {1.0, 0.0, -0.0, -1.0, 0.0, -0.0}; ++ int frin2rf[] = {POS_NORMAL,POS_ZERO,NEG_ZERO,NEG_NORMAL,POS_ZERO,NEG_ZERO}; ++ double friz2[] = {0.0, 0.0, -0.0, -0.0, 0.0, -0.0}; ++ int friz2rf[] = {POS_ZERO,POS_ZERO,NEG_ZERO,NEG_ZERO,POS_ZERO,NEG_ZERO}; ++ double frip2[] = {1.0, 1.0, -0.0, -0.0, 1.0, -0.0}; ++ int frip2rf[] = {POS_NORMAL,POS_NORMAL,NEG_ZERO,NEG_ZERO,POS_NORMAL,NEG_ZERO}; ++ double frim2[] = {0.0, 0.0, -1.0, -1.0, 0.0, -1.0}; ++ int frim2rf[] = {POS_ZERO,POS_ZERO,NEG_NORMAL,NEG_NORMAL,POS_ZERO,NEG_NORMAL}; ++ double ret; ++ int i; ++ ++#define DO_TEST(op,in,out,rf) for (i=0; i ++#include ++#include ++ ++#define CMPB(result,a,b) \ ++ asm __volatile ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) ++ ++ ++int main (int argc, char* argv[]) { ++ int i,j,k; ++ long mask; ++ for (i=1; i<16; i++) { ++ mask = 0; ++ if(i&1) mask+=0xff; ++ if(i&2) mask+=0xff00; ++ if(i&4) mask+=0xff0000; ++ if(i&8) mask+=0xff000000; ++ ++ for (j=0; j<256; j++) ++ for (k=0; k<256; k++) ++ if (j!=k) { ++ ++ long a, b, result; ++ a = (mask & (j*0x1010101)) + ((~mask) & (k*0x1010101)); ++ b = j*0x1010101; ++ CMPB(result, a, b); ++ if (result != mask) ++ printf("%8x %8x %8x %8x\n", mask, a, b, result); ++ exit(1); ++ } ++ ++ } ++ ++ return 0; ++} ++ +--- valgrind-3.3.0/none/tests/ppc32/power6_bcmp.stderr.exp.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc32/power6_bcmp.stderr.exp 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,2 @@ ++ ++ +--- valgrind-3.3.0/none/tests/ppc32/power6_bcmp.vgtest.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc32/power6_bcmp.vgtest 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1 @@ ++prog: power6_bcmp +--- valgrind-3.3.0/none/tests/ppc64/Makefile.am.jj 2007-12-11 00:18:35.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/Makefile.am 2008-03-03 10:01:52.000000000 +0100 +@@ -9,10 +9,12 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ + std_reg_imm.vgtest std_reg_imm.stderr.exp std_reg_imm.stdout.exp \ + round.stderr.exp round.stdout.exp round.vgtest \ + twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ +- tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest ++ tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest \ ++ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ ++ power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest + + check_PROGRAMS = \ +- jm-insns lsw round std_reg_imm twi_tdi tw_td ++ jm-insns lsw round std_reg_imm twi_tdi tw_td power6_bcmp power6_mf_gpr + + AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ + @FLAG_M64@ +--- valgrind-3.3.0/none/tests/ppc64/power6_bcmp.c.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_bcmp.c 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,61 @@ ++/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307, USA. ++ ++ The GNU General Public License is contained in the file COPYING. ++*/ ++ ++ ++#include ++#include ++#include ++ ++#define CMPB(result,a,b) \ ++ asm ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) ++ ++ ++int main (int argc, char* argv[]) { ++ int i,j,k; ++ unsigned long mask; ++ for (i=1; i<256; i++) { ++ mask = 0; ++ if(i&1) mask+=0xff; ++ if(i&2) mask+=0xff00; ++ if(i&4) mask+=0xff0000; ++ if(i&8) mask+=0xff000000; ++ if(i&16) mask+=0xff00000000; ++ if(i&32) mask+=0xff0000000000; ++ if(i&64) mask+=0xff000000000000; ++ if(i&128) mask+=0xff00000000000000; ++ ++ for (j=0; j<256; j++) ++ for (k=0; k<256; k++) ++ if (j!=k) { ++ ++ unsigned long a, b, result; ++ a = (mask & (j*0x101010101010101)) + ((~mask) & (k*0x101010101010101)); ++ b = j*0x101010101010101; ++ CMPB(result, a, b); ++ if (result != mask) ++ printf("%8lx %8lx %8lx %8lx\n", mask, a, b, result); ++ exit(1); ++ } ++ ++ } ++ ++ return 0; ++} ++ +--- valgrind-3.3.0/none/tests/ppc64/power6_bcmp.stderr.exp.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_bcmp.stderr.exp 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,2 @@ ++ ++ +--- valgrind-3.3.0/none/tests/ppc64/power6_bcmp.vgtest.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_bcmp.vgtest 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1 @@ ++prog: power6_bcmp +--- valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.c.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.c 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2007 Pete Eberlein eberlein@us.ibm.com ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307, USA. ++ ++ The GNU General Public License is contained in the file COPYING. ++*/ ++ ++#include ++#include ++ ++ ++ ++int main (int argc, char* argv[]) ++{ ++ ++ long i; ++ double f; ++ ++ i = 0; ++ f = 100.0; ++ ++ printf("%lx %f\n", i, f); ++ ++ asm ("mftgpr %0, %1\n" : "=r"(i) : "f"(f)); ++ ++ f=0.0; ++ printf("%lx %f\n", i, f); ++ ++ asm ("mffgpr %0, %1\n" : "=f"(f) : "r"(i)); ++ ++ printf("%lx %f\n", i, f); ++ ++ return 0; ++} +--- valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.stderr.exp.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.stderr.exp 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,2 @@ ++ ++ +--- valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.stdout.exp.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.stdout.exp 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1,3 @@ ++0 100.000000 ++4059000000000000 0.000000 ++4059000000000000 100.000000 +--- valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.vgtest.jj 2008-03-03 09:58:59.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/power6_mf_gpr.vgtest 2008-03-03 09:58:59.000000000 +0100 +@@ -0,0 +1 @@ ++prog: power6_mf_gpr +--- valgrind-3.3.0/none/tests/ppc32/Makefile.in.jj 2007-12-11 00:23:53.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc32/Makefile.in 2008-03-03 10:02:14.000000000 +0100 +@@ -40,7 +40,8 @@ check_PROGRAMS = bug129390-ppc32$(EXEEXT + ldstrev$(EXEEXT) lsw$(EXEEXT) jm-insns$(EXEEXT) \ + mftocrf$(EXEEXT) mcrfs$(EXEEXT) round$(EXEEXT) \ + test_fx$(EXEEXT) test_gx$(EXEEXT) testVMX$(EXEEXT) \ +- twi$(EXEEXT) tw$(EXEEXT) xlc_dbl_u32$(EXEEXT) ++ twi$(EXEEXT) tw$(EXEEXT) xlc_dbl_u32$(EXEEXT) \ ++ power5+_round$(EXEEXT) power6_bcmp$(EXEEXT) + subdir = none/tests/ppc32 + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +@@ -71,6 +72,12 @@ mcrfs_LDADD = $(LDADD) + mftocrf_SOURCES = mftocrf.c + mftocrf_OBJECTS = mftocrf.$(OBJEXT) + mftocrf_LDADD = $(LDADD) ++power5__round_SOURCES = power5+_round.c ++power5__round_OBJECTS = power5+_round.$(OBJEXT) ++power5__round_LDADD = $(LDADD) ++power6_bcmp_SOURCES = power6_bcmp.c ++power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) ++power6_bcmp_LDADD = $(LDADD) + round_SOURCES = round.c + round_OBJECTS = round.$(OBJEXT) + round_LDADD = $(LDADD) +@@ -101,11 +108,12 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUD + CCLD = $(CC) + LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + SOURCES = bug129390-ppc32.c bug139050-ppc32.c jm-insns.c ldstrev.c \ +- lsw.c mcrfs.c mftocrf.c round.c testVMX.c test_fx.c test_gx.c \ +- tw.c twi.c xlc_dbl_u32.c ++ lsw.c mcrfs.c mftocrf.c power5+_round.c power6_bcmp.c round.c \ ++ testVMX.c test_fx.c test_gx.c tw.c twi.c xlc_dbl_u32.c + DIST_SOURCES = bug129390-ppc32.c bug139050-ppc32.c jm-insns.c \ +- ldstrev.c lsw.c mcrfs.c mftocrf.c round.c testVMX.c test_fx.c \ +- test_gx.c tw.c twi.c xlc_dbl_u32.c ++ ldstrev.c lsw.c mcrfs.c mftocrf.c power5+_round.c \ ++ power6_bcmp.c round.c testVMX.c test_fx.c test_gx.c tw.c twi.c \ ++ xlc_dbl_u32.c + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +@@ -266,7 +275,9 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ + testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ + twi.stderr.exp twi.stdout.exp twi.vgtest \ + tw.stderr.exp tw.stdout.exp tw.vgtest \ +- xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest ++ xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ ++ power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ ++ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest + + AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ + @FLAG_M32@ +@@ -335,6 +346,12 @@ mcrfs$(EXEEXT): $(mcrfs_OBJECTS) $(mcrfs + mftocrf$(EXEEXT): $(mftocrf_OBJECTS) $(mftocrf_DEPENDENCIES) + @rm -f mftocrf$(EXEEXT) + $(LINK) $(mftocrf_LDFLAGS) $(mftocrf_OBJECTS) $(mftocrf_LDADD) $(LIBS) ++power5+_round$(EXEEXT): $(power5__round_OBJECTS) $(power5__round_DEPENDENCIES) ++ @rm -f power5+_round$(EXEEXT) ++ $(LINK) $(power5__round_LDFLAGS) $(power5__round_OBJECTS) $(power5__round_LDADD) $(LIBS) ++power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) ++ @rm -f power6_bcmp$(EXEEXT) ++ $(LINK) $(power6_bcmp_LDFLAGS) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) + round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) + @rm -f round$(EXEEXT) + $(LINK) $(round_LDFLAGS) $(round_OBJECTS) $(round_LDADD) $(LIBS) +@@ -370,6 +387,8 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcrfs.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mftocrf.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power5+_round.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testVMX-testVMX.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fx.Po@am__quote@ +--- valgrind-3.3.0/none/tests/ppc64/Makefile.in.jj 2007-12-11 00:23:55.000000000 +0100 ++++ valgrind-3.3.0/none/tests/ppc64/Makefile.in 2008-03-03 10:02:14.000000000 +0100 +@@ -37,7 +37,8 @@ POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ + check_PROGRAMS = jm-insns$(EXEEXT) lsw$(EXEEXT) round$(EXEEXT) \ +- std_reg_imm$(EXEEXT) twi_tdi$(EXEEXT) tw_td$(EXEEXT) ++ std_reg_imm$(EXEEXT) twi_tdi$(EXEEXT) tw_td$(EXEEXT) \ ++ power6_bcmp$(EXEEXT) power6_mf_gpr$(EXEEXT) + subdir = none/tests/ppc64 + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +@@ -53,6 +54,12 @@ jm_insns_LDADD = $(LDADD) + lsw_SOURCES = lsw.c + lsw_OBJECTS = lsw.$(OBJEXT) + lsw_LDADD = $(LDADD) ++power6_bcmp_SOURCES = power6_bcmp.c ++power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) ++power6_bcmp_LDADD = $(LDADD) ++power6_mf_gpr_SOURCES = power6_mf_gpr.c ++power6_mf_gpr_OBJECTS = power6_mf_gpr.$(OBJEXT) ++power6_mf_gpr_LDADD = $(LDADD) + round_SOURCES = round.c + round_OBJECTS = round.$(OBJEXT) + round_LDADD = $(LDADD) +@@ -73,9 +80,10 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUD + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) + LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = jm-insns.c lsw.c round.c std_reg_imm.c tw_td.c twi_tdi.c +-DIST_SOURCES = jm-insns.c lsw.c round.c std_reg_imm.c tw_td.c \ +- twi_tdi.c ++SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ ++ std_reg_imm.c tw_td.c twi_tdi.c ++DIST_SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ ++ std_reg_imm.c tw_td.c twi_tdi.c + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +@@ -226,7 +235,9 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ + std_reg_imm.vgtest std_reg_imm.stderr.exp std_reg_imm.stdout.exp \ + round.stderr.exp round.stdout.exp round.vgtest \ + twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ +- tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest ++ tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest \ ++ power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ ++ power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest + + AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/include \ + @FLAG_M64@ +@@ -277,6 +288,12 @@ jm-insns$(EXEEXT): $(jm_insns_OBJECTS) $ + lsw$(EXEEXT): $(lsw_OBJECTS) $(lsw_DEPENDENCIES) + @rm -f lsw$(EXEEXT) + $(LINK) $(lsw_LDFLAGS) $(lsw_OBJECTS) $(lsw_LDADD) $(LIBS) ++power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) ++ @rm -f power6_bcmp$(EXEEXT) ++ $(LINK) $(power6_bcmp_LDFLAGS) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) ++power6_mf_gpr$(EXEEXT): $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_DEPENDENCIES) ++ @rm -f power6_mf_gpr$(EXEEXT) ++ $(LINK) $(power6_mf_gpr_LDFLAGS) $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_LDADD) $(LIBS) + round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) + @rm -f round$(EXEEXT) + $(LINK) $(round_LDFLAGS) $(round_OBJECTS) $(round_LDADD) $(LIBS) +@@ -298,6 +315,8 @@ distclean-compile: + + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jm_insns-jm-insns.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_mf_gpr.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/std_reg_imm.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tw_td.Po@am__quote@ diff --git a/valgrind.spec b/valgrind.spec index d509404..49810a1 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -1,18 +1,14 @@ Summary: Tool for finding memory management bugs in programs Name: valgrind -Version: 3.2.3 -Release: 8 +Version: 3.3.0 +Release: 1 Epoch: 1 Source0: http://www.valgrind.org/downloads/valgrind-%{version}.tar.bz2 -Patch1: valgrind-3.2.3-openat.patch -Patch2: valgrind-3.2.3-cachegrind-improvements.patch -Patch3: valgrind-3.2.3-pkg-config.patch -Patch4: valgrind-3.2.3-glibc2_6.patch -Patch5: valgrind-3.2.3-io_destroy.patch -Patch6: valgrind-3.2.3-power5+-6.patch -Patch7: valgrind-3.2.3-private-futex.patch -Patch8: valgrind-3.2.3-x86_64-nops.patch -Patch9: valgrind-3.2.3-glibc2_7.patch +Patch1: valgrind-3.3.0-cachegrind-improvements.patch +Patch2: valgrind-3.3.0-pkg-config.patch +Patch3: valgrind-3.3.0-power5+-6.patch +Patch4: valgrind-3.3.0-openat.patch +Patch5: valgrind-3.3.0-helgrind-p_b_w.patch License: GPLv2 URL: http://www.valgrind.org/ Group: Development/Debuggers @@ -22,8 +18,24 @@ Obsoletes: valgrind-callgrind # Ensure glibc{,-devel} is installed for both multilib arches BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so %endif -BuildRequires: glibc-devel >= 2.5 +BuildRequires: glibc-devel >= 2.7 ExclusiveArch: %{ix86} x86_64 ppc ppc64 +%ifarch %{ix86} +%define valarch x86 +%define valsecarch %{nil} +%endif +%ifarch x86_64 +%define valarch amd64 +%define valsecarch x86 +%endif +%ifarch ppc +%define valarch ppc32 +%define valsecarch ppc64 +%endif +%ifarch ppc64 +%define valarch ppc64 +%define valsecarch ppc32 +%endif # Disable build root strip policy %define __spec_install_post /usr/lib/rpm/brp-compress || : @@ -39,6 +51,15 @@ malloc/new/free/delete are intercepted. As a result, Valgrind can detect a lot of problems that are otherwise very hard to find/diagnose. +%package devel +Summary: Development files for valgrind +Group: Development/Debuggers +Requires: valgrind = %{epoch}:%{version}-%{release} + +%description devel +Header files and libraries for development of valgrind aware programs +or valgrind plugins. + %prep %setup -q %patch1 -p1 @@ -46,10 +67,6 @@ find/diagnose. %patch3 -p1 %patch4 -p1 %patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 %build %ifarch x86_64 ppc64 @@ -64,7 +81,7 @@ touch libgcc/libgcc_s_32.a # Force a specific set of default suppressions echo -n > default.supp -for file in glibc-2.7.supp xfree-4.supp ; do +for file in xfree-4.supp glibc-2.34567-NPTL-helgrind.supp glibc-2.7.supp; do cat $file >> default.supp done @@ -109,18 +126,13 @@ mkdir docs.installed mv $RPM_BUILD_ROOT%{_datadir}/doc/valgrind/* docs.installed/ rm -f docs.installed/*.ps -%ifarch x86_64 -rm -rf $RPM_BUILD_ROOT%{_libdir}/valgrind/x86-linux -ln -sf ../../lib/valgrind/x86-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/x86-linux -%endif - -%ifarch ppc64 -rm -rf $RPM_BUILD_ROOT%{_libdir}/valgrind/ppc32-linux -ln -sf ../../lib/valgrind/ppc32-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/ppc32-linux -%endif - +%if "%{valsecarch}" != "" %ifarch ppc -ln -sf ../../lib64/valgrind/ppc64-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/ppc64-linux +ln -sf ../../lib64/valgrind/%{valsecarch}-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/%{valsecarch}-linux +%else +rm -rf $RPM_BUILD_ROOT%{_libdir}/valgrind/%{valsecarch}-linux || : +ln -sf ../../lib/valgrind/%{valsecarch}-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/%{valsecarch}-linux +%endif %endif %clean @@ -131,14 +143,28 @@ rm -rf $RPM_BUILD_ROOT %doc ACKNOWLEDGEMENTS COPYING NEWS README_* %doc docs.installed/html docs.installed/*.pdf %{_bindir}/* +%dir %{_libdir}/valgrind +%dir %{_libdir}/valgrind/%{valarch}-linux +%if "%{valsecarch}" != "" +%{_libdir}/valgrind/%{valsecarch}-linux +%endif +%{_libdir}/valgrind/%{valarch}-linux/*[^a] +%{_libdir}/valgrind/%{valarch}-linux/*[^.]a +%{_libdir}/valgrind/*.supp +%{_mandir}/man1/valgrind* + +%files devel +%defattr(-,root,root) %{_includedir}/valgrind -%{_libdir}/valgrind +%dir %{_libdir}/valgrind +%dir %{_libdir}/valgrind/%{valarch}-linux +%{_libdir}/valgrind/%{valarch}-linux/*.a %{_libdir}/pkgconfig/* -%{_mandir}/man1/valgrind* %changelog -* Tue Feb 19 2008 Fedora Release Engineering - 1:3.2.3-8 -- Autorebuild for GCC 4.3 +* Mon Mar 3 2008 Jakub Jelinek 3.3.0-1 +- update to 3.3.0 +- split off devel bits into valgrind-devel subpackage * Thu Oct 18 2007 Jakub Jelinek 3.2.3-7 - add suppressions for glibc >= 2.7