- fix testsuite for s390 (kde#264800, kde#265762, kde#253206)

- Add folding rules for Clz32 and Clz64 (kde#243404)
- Refresh s390x port (kde#243404)

OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=26
This commit is contained in:
Dirk Mueller 2011-04-11 11:23:42 +00:00 committed by Git OBS Bridge
parent 1e4ff28232
commit e34f56de3c
9 changed files with 68419 additions and 33571 deletions

View File

@ -1,42 +0,0 @@
Index: memcheck/memcheck.h
===================================================================
--- memcheck/memcheck.h.orig
+++ memcheck/memcheck.h
@@ -134,6 +134,18 @@ typedef
_qzz_res; \
}))
+/* This is the old name for VALGRIND_MAKE_MEM_NOACCESS. Deprecated. */
+#define VALGRIND_MAKE_NOACCESS(_qzz_addr,_qzz_len) \
+ VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len)
+
+/* This is the old name for VALGRIND_MAKE_MEM_UNDEFINED. Deprecated. */
+#define VALGRIND_MAKE_WRITABLE(_qzz_addr,_qzz_len) \
+ VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len)
+
+/* This is the old name for VALGRIND_MAKE_MEM_DEFINED. Deprecated. */
+#define VALGRIND_MAKE_READABLE(_qzz_addr,_qzz_len) \
+ VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len)
+
/* Similar to VALGRIND_MAKE_MEM_DEFINED except that addressability is
not altered: bytes which are addressable are marked as defined,
but those which are not addressable are left unchanged. */
@@ -205,6 +217,18 @@ typedef
(volatile unsigned char *)&(__lvalue), \
(unsigned long)(sizeof (__lvalue)))
+/* This is the old name for VALGRIND_CHECK_MEM_IS_ADDRESSABLE. Deprecated. */
+#define VALGRIND_CHECK_WRITABLE(_qzz_addr,_qzz_len) \
+ VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len)
+
+/* This is the old name for VALGRIND_CHECK_MEM_IS_DEFINED. Deprecated. */
+#define VALGRIND_CHECK_READABLE(_qzz_addr,_qzz_len) \
+ VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len)
+
+/* This is the old name for VALGRIND_CHECK_VALUE_IS_DEFINED. Deprecated. */
+#define VALGRIND_CHECK_DEFINED(__lvalue) \
+ VALGRIND_CHECK_VALUE_IS_DEFINED(__lvalue)
+
/* Do a full memory leak check (like --leak-check=full) mid-execution. */
#define VALGRIND_DO_LEAK_CHECK \

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

20
valgrind-r11643.diff Normal file
View File

@ -0,0 +1,20 @@
------------------------------------------------------------------------
r11643 | sewardj | 2011-03-14 10:53:44 +0100 (Mo, 14. Mär 2011) | 3 Zeilen
Build fix for older s390x-linux assemblers. Fixes #264800.
(Florian Krohm, britzel@acm.org)
------------------------------------------------------------------------
Index: helgrind/tests/tc03_re_excl.c
===================================================================
--- helgrind/tests/tc03_re_excl.c (Revision 11642)
+++ helgrind/tests/tc03_re_excl.c (Revision 11643)
@@ -10,7 +10,7 @@
/* A simple function to "use" a value, so that gcc can't
possibly optimise it into nothing. */
static void use ( int x ) {
- __asm__ __volatile__( "nop" : : "r"(x) : "cc","memory" );
+ __asm__ __volatile__( "" : : "r"(x) : "cc","memory" );
}
static void* worker_thread ( void* argV )

35
valgrind-r11644.diff Normal file
View File

@ -0,0 +1,35 @@
------------------------------------------------------------------------
r11644 | sewardj | 2011-03-15 09:13:08 +0100 (Di, 15. Mär 2011) | 3 Zeilen
Some fixes for the faultstatus testcase. Fixes #253206.
(Christian Borntraeger, borntraeger@de.ibm.com)
------------------------------------------------------------------------
Index: none/tests/faultstatus.c
===================================================================
--- none/tests/faultstatus.c (Revision 11643)
+++ none/tests/faultstatus.c (Revision 11644)
@@ -70,7 +70,13 @@ static int testcode(int code, int want)
static int testaddr(void *addr, volatile void *want)
{
+ /* Some architectures (e.g. s390) just provide enough information to
+ resolve the page fault, but do not provide the offset within a page */
+#if defined(__s390__)
+ if (addr != (void *) ((unsigned long) want & ~0xffful)) {
+#else
if (addr != want) {
+#endif
fprintf(stderr, " FAIL: expected si_addr==%p, not %p\n", want, addr);
return 0;
}
@@ -132,7 +138,8 @@ int main()
for(i = 0; i < sizeof(sigs)/sizeof(*sigs); i++)
sigaction(sigs[i], &sa, NULL);
- fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL, 0600);
+ /* we need O_RDWR for the truncate below */
+ fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL|O_RDWR, 0600);
if (fd == -1) {
perror("tmpfile");
exit(1);

62
valgrind-vex-r2106.diff Normal file
View File

@ -0,0 +1,62 @@
------------------------------------------------------------------------
r2106 | sewardj | 2011-03-07 19:34:34 +0100 (Mo, 07. Mär 2011) | 4 Zeilen
Add folding rules for Clz32 and Clz64. See bug 243404 comment 52.
(Florian Krohn, britzel@acm.org).
------------------------------------------------------------------------
--- priv/ir_opt.c
+++ priv/ir_opt.c
@@ -956,6 +956,31 @@ static IRExpr* mkOnesOfPrimopResultType
}
}
+/* Helpers for folding Clz32/64. */
+static UInt fold_Clz64 ( ULong value )
+{
+ UInt i;
+ vassert(value != 0ULL); /* no defined semantics for arg==0 */
+ for (i = 0; i < 64; ++i) {
+ if (value & (((ULong)1) << (63 - i))) return i;
+ }
+ vassert(0);
+ /*NOTREACHED*/
+ return 0;
+}
+
+static UInt fold_Clz32 ( UInt value )
+{
+ UInt i;
+ vassert(value != 0); /* no defined semantics for arg==0 */
+ for (i = 0; i < 32; ++i) {
+ if (value & (((UInt)1) << (31 - i))) return i;
+ }
+ vassert(0);
+ /*NOTREACHED*/
+ return 0;
+}
+
static IRExpr* fold_Expr ( IRExpr* e )
{
@@ -1154,6 +1179,19 @@ static IRExpr* fold_Expr ( IRExpr* e )
break;
}
+ case Iop_Clz32: {
+ UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
+ if (u32 != 0)
+ e2 = IRExpr_Const(IRConst_U32(fold_Clz32(u32)));
+ break;
+ }
+ case Iop_Clz64: {
+ ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
+ if (u64 != 0ULL)
+ e2 = IRExpr_Const(IRConst_U64(fold_Clz64(u64)));
+ break;
+ }
+
default:
goto unhandled;
}

28
valgrind-vex-r2109.diff Normal file
View File

@ -0,0 +1,28 @@
--- pub/libvex.h
+++ pub/libvex.h
@@ -381,15 +381,25 @@
/* Initialise the library. You must call this first. */
extern void LibVEX_Init (
+
/* failure exit function */
+# if __cplusplus == 1 && __GNUC__ && __GNUC__ <= 3
+ /* g++ 3.x doesn't understand attributes on function parameters.
+ See #265762. */
+# else
__attribute__ ((noreturn))
+# endif
void (*failure_exit) ( void ),
+
/* logging output function */
void (*log_bytes) ( HChar*, Int nbytes ),
+
/* debug paranoia level */
Int debuglevel,
+
/* Are we supporting valgrind checking? */
Bool valgrind_support,
+
/* Control ... */
/*READONLY*/VexControl* vcon
);

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Apr 11 13:11:43 CEST 2011 - dmueller@suse.de
- fix testsuite for s390 (kde#264800, kde#265762, kde#253206)
- Add folding rules for Clz32 and Clz64 (kde#243404)
- Refresh s390x port (kde#243404)
-------------------------------------------------------------------
Wed Mar 16 11:23:54 CET 2011 - dmueller@suse.de

View File

@ -33,8 +33,11 @@ Source0: %{name}-%{version}.tar.bz2
# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_5_0 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_5_BRANCH > 3_5_BRANCH.diff
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
Patch1: jit-register-unregister.diff
Patch2: deprecated.diff
Patch3: valgrind-3.5.90.svn11391-s390x-port.diff
Patch3: valgrind-3.6.0.svn11566-s390x-port.diff
Patch5: valgrind-vex-r2109.diff
Patch6: valgrind-r11644.diff
Patch7: valgrind-r11643.diff
Patch8: valgrind-vex-r2106.diff
%if %suse_version <= 1100
Provides: valgrind-devel = %version
%endif
@ -126,13 +129,15 @@ Authors:
%prep
%setup -q -n %{name}-%{version}
cd VEX
%patch5
%patch8
cd ..
%patch1
%ifarch s390x
#%ifarch s390x
%patch3
%endif
# probably no longer needed, kept around already for a long time (2010-10-12)
#%patch2
#%endif
%patch6
%patch7
%build
export CFLAGS="$RPM_OPT_FLAGS"