File valgrind-r11644.diff of Package valgrind

------------------------------------------------------------------------
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);
openSUSE Build Service is sponsored by