rpms/valgrind/F-7 valgrind-3.2.3-glibc2_6.patch, NONE, 1.1 valgrind-3.2.3-io_destroy.patch, NONE, 1.1 valgrind-3.2.3-power5+-6.patch, NONE, 1.1 valgrind-3.2.3-private-futex.patch, NONE, 1.1 valgrind-3.2.3-x86_64-nops.patch, NONE, 1.1 valgrind.spec, 1.48, 1.49
Jakub Jelinek (jakub)
fedora-extras-commits at redhat.com
Fri Aug 31 09:17:27 UTC 2007
Author: jakub
Update of /cvs/pkgs/rpms/valgrind/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv23428
Modified Files:
valgrind.spec
Added Files:
valgrind-3.2.3-glibc2_6.patch valgrind-3.2.3-io_destroy.patch
valgrind-3.2.3-power5+-6.patch
valgrind-3.2.3-private-futex.patch
valgrind-3.2.3-x86_64-nops.patch
Log Message:
3.2.3-5.fc7
valgrind-3.2.3-glibc2_6.patch:
--- NEW FILE valgrind-3.2.3-glibc2_6.patch ---
--- 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 <features.h>
+#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 <features.h>
+#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
+}
valgrind-3.2.3-io_destroy.patch:
--- NEW FILE valgrind-3.2.3-io_destroy.patch ---
--- 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) );
valgrind-3.2.3-power5+-6.patch:
--- NEW FILE valgrind-3.2.3-power5+-6.patch ---
--- 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 at 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 <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+#include <math.h>
+
+#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<sizeof(in)/sizeof(double); ++i) { \
+ asm (#op" %0, %2\n\t" \
+ "mffs %1\n" \
+ : "=f" (ret), "=f" (fpscr.d) \
+ : "f" (in[i]) \
+ ); \
+ printf(#op"\t%g\t%g\t%x\t%s\n", in[i], ret, fpscr.fprf, \
+ (!bcmp(&ret, &out[i], sizeof(double))) /*&& (rf[i] == fpscr.fprf)*/ \
+ ? "PASS" : "FAIL"); \
+ }
+ /* Note: fprf check above is disabled until fprf is implemented. */
+
+
+ DO_TEST(frin,set, frin, fprf);
+ DO_TEST(frin,set2,frin2,frin2rf);
+ DO_TEST(friz,set, friz, fprf);
+ DO_TEST(friz,set2,friz2,friz2rf);
+ DO_TEST(frip,set, frip, fprf);
+ DO_TEST(frip,set2,frip2,frip2rf);
+ DO_TEST(frim,set, frim, fprf);
+ DO_TEST(frim,set2,frim2,frim2rf);
+ }
+
+ /* This set is disabled until fprf is implemented. */
+ if (0) {
+ double set1[] = {inf, 0.9, 0.1, 0, neg0, -0.1, -0.9, -inf, nan};
+ double frsp1[] = {inf, 0.9f,0.1f,0, neg0, -0.1f,-0.9f,-inf, nan};
+ int fprf1[] = {POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO, NEG_NORMAL,
+ NEG_NORMAL, NEG_INF, NAN};
+ double set2[] = {1.2e-38, 1.1e-38, 1e-40, 8e-44, 9e-44, 8e-46, 7e-46};
+ double frsp2[] = {1.2e-38f,1.1e-38f,1e-40f,8e-44f,9e-44f,8e-46f,0.0};
+ int fprf2[] = {POS_NORMAL, POS_DENORMAL, POS_DENORMAL, POS_DENORMAL,
+ POS_DENORMAL, POS_DENORMAL, POS_ZERO};
+ double set3[] = {-1.2e-38, -1.1e-38, -1e-40, -8e-44, -9e-44, -8e-46, -7e-46};
+ double frsp3[] = {-1.2e-38f,-1.1e-38f,-1e-40f,-8e-44f,-9e-44f,-8e-46f,-0.0};
+ int fprf3[] = {NEG_NORMAL, NEG_DENORMAL, NEG_DENORMAL, NEG_DENORMAL,
+ NEG_DENORMAL, NEG_DENORMAL, NEG_ZERO};
+ double ret;
+ int i;
+ DO_TEST(frsp,set1,frsp1,fprf1);
+ DO_TEST(frsp,set2,frsp2,fprf2);
+ DO_TEST(frsp,set3,frsp3,fprf3);
+ }
+
+
+ return 0;
+}
--- valgrind-3.2.3/none/tests/ppc32/power5+_round.stderr.exp 1969-12-31 18:00:00.000000000 -0600
+++ valgrind-3.2.3/none/tests/ppc32/power5+_round.stderr.exp 2007-05-16 18:05:02.000000000 -0500
@@ -0,0 +1,2 @@
+
+
--- valgrind-3.2.3/none/tests/ppc32/power5+_round.stdout.exp 1969-12-31 18:00:00.000000000 -0600
+++ valgrind-3.2.3/none/tests/ppc32/power5+_round.stdout.exp 2007-05-16 18:05:02.000000000 -0500
@@ -0,0 +1,60 @@
+frin inf inf 0 PASS
+frin 1.9 2 0 PASS
+frin 1.1 1 0 PASS
+frin 0 0 0 PASS
+frin -0 -0 0 PASS
+frin -1.1 -1 0 PASS
+frin -1.9 -2 0 PASS
+frin -inf -inf 0 PASS
+frin nan nan 0 PASS
+frin 0.9 1 0 PASS
+frin 0.1 0 0 PASS
+frin -0.1 -0 0 PASS
+frin -0.9 -1 0 PASS
+frin 1e-40 0 0 PASS
+frin -1e-40 -0 0 PASS
+friz inf inf 0 PASS
+friz 1.9 1 0 PASS
+friz 1.1 1 0 PASS
+friz 0 0 0 PASS
+friz -0 -0 0 PASS
+friz -1.1 -1 0 PASS
+friz -1.9 -1 0 PASS
+friz -inf -inf 0 PASS
+friz nan nan 0 PASS
+friz 0.9 0 0 PASS
+friz 0.1 0 0 PASS
+friz -0.1 -0 0 PASS
+friz -0.9 -0 0 PASS
+friz 1e-40 0 0 PASS
+friz -1e-40 -0 0 PASS
+frip inf inf 0 PASS
+frip 1.9 2 0 PASS
+frip 1.1 2 0 PASS
+frip 0 0 0 PASS
+frip -0 -0 0 PASS
+frip -1.1 -1 0 PASS
+frip -1.9 -1 0 PASS
+frip -inf -inf 0 PASS
+frip nan nan 0 PASS
+frip 0.9 1 0 PASS
+frip 0.1 1 0 PASS
+frip -0.1 -0 0 PASS
+frip -0.9 -0 0 PASS
+frip 1e-40 1 0 PASS
+frip -1e-40 -0 0 PASS
+frim inf inf 0 PASS
+frim 1.9 1 0 PASS
+frim 1.1 1 0 PASS
+frim 0 0 0 PASS
+frim -0 -0 0 PASS
+frim -1.1 -2 0 PASS
+frim -1.9 -2 0 PASS
+frim -inf -inf 0 PASS
+frim nan nan 0 PASS
+frim 0.9 0 0 PASS
+frim 0.1 0 0 PASS
+frim -0.1 -1 0 PASS
+frim -0.9 -1 0 PASS
+frim 1e-40 0 0 PASS
+frim -1e-40 -1 0 PASS
--- valgrind-3.2.3/none/tests/ppc32/power5+_round.vgtest 1969-12-31 18:00:00.000000000 -0600
+++ valgrind-3.2.3/none/tests/ppc32/power5+_round.vgtest 2007-05-16 18:05:02.000000000 -0500
@@ -0,0 +1 @@
+prog: power5+_round
--- valgrind-3.2.3/none/tests/ppc32/power6_bcmp.c 1969-12-31 18:00:00.000000000 -0600
+++ valgrind-3.2.3/none/tests/ppc32/power6_bcmp.c 2007-05-16 18:05:02.000000000 -0500
@@ -0,0 +1,58 @@
+/* Copyright (C) 2007 Pete Eberlein eberlein at 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 <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+
+#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 at 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 <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+
+#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 at 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 <stdio.h>
+#include <string.h>
+
+
+
+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 at ./$(DEPDIR)/ldstrev.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lsw.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mftocrf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/power5+_round.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/power6_bcmp.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/round.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testVMX-testVMX.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_fx.Po at 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 at ./$(DEPDIR)/jm_insns-jm-insns.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lsw.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/power6_bcmp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/power6_mf_gpr.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/round.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/twi_tdi.Po at am__quote@
valgrind-3.2.3-private-futex.patch:
--- NEW FILE valgrind-3.2.3-private-futex.patch ---
--- 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;
valgrind-3.2.3-x86_64-nops.patch:
--- NEW FILE valgrind-3.2.3-x86_64-nops.patch ---
--- 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;
Index: valgrind.spec
===================================================================
RCS file: /cvs/pkgs/rpms/valgrind/F-7/valgrind.spec,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- valgrind.spec 13 Feb 2007 13:07:03 -0000 1.48
+++ valgrind.spec 31 Aug 2007 09:16:54 -0000 1.49
@@ -1,13 +1,18 @@
Summary: Tool for finding memory management bugs in programs
Name: valgrind
Version: 3.2.3
-Release: 2
+Release: 5%{?dist}
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
-License: GPL
+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
+License: GPLv2
URL: http://www.valgrind.org/
Group: Development/Debuggers
BuildRoot: %{_tmppath}/%{name}-root
@@ -38,6 +43,11 @@
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
%build
%ifarch x86_64 ppc64
@@ -45,14 +55,14 @@
mkdir -p libgcc/32
touch libgcc/32/libgcc_s.a
touch libgcc/libgcc_s_32.a
-%configure CC="gcc -B `pwd`/libgcc/"
+%configure CC="gcc -B `pwd`/libgcc/" GDB=%{_bindir}/gdb
%else
-%configure
+%configure GDB=%{_bindir}/gdb
%endif
# Force a specific set of default suppressions
echo -n > default.supp
-for file in glibc-2.5.supp xfree-4.supp ; do
+for file in glibc-2.6.supp xfree-4.supp ; do
cat $file >> default.supp
done
@@ -107,6 +117,10 @@
ln -sf ../../lib/valgrind/ppc32-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/ppc32-linux
%endif
+%ifarch ppc
+ln -sf ../../lib64/valgrind/ppc64-linux $RPM_BUILD_ROOT%{_libdir}/valgrind/ppc64-linux
+%endif
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -121,6 +135,21 @@
%{_mandir}/man1/valgrind*
%changelog
+* Fri Aug 31 2007 Jakub Jelinek <jakub at redhat.com> 3.2.3-5.fc7
+- handle new x86_64 nops (#256801, KDE#148447)
+- add support for private futexes (KDE#146781)
+- update License tag
+- add ppc64-linux symlink in valgrind ppc.rpm, so that when
+ rpm prefers 32-bit binaries over 64-bit ones 32-bit
+ /usr/bin/valgrind can find 64-bit valgrind helper binaries
+ (#249773)
+- power5+ and power6 support (#240762)
+- pass GDB=%{_prefix}/gdb to configure to fix default
+ --db-command (#220840)
+- add suppressions for glibc >= 2.6 (#245682)
+- avoid valgrind internal error if io_destroy syscall is
+ passed a bogus argument
+
* Tue Feb 13 2007 Jakub Jelinek <jakub at redhat.com> 3.2.3-2
- fix valgrind.pc again
More information about the fedora-extras-commits
mailing list