|
From: <sv...@va...> - 2013-07-17 09:35:00
|
dejanj 2013-07-17 10:34:51 +0100 (Wed, 17 Jul 2013)
New Revision: 13456
Log:
mips64: Add a test case for mips64.
Add a function in the memcheck/tests/leak-segv-jmp.c for MIPS64
that execute the syscall. Because we added the mips64 case we
need to change the line number in *.exp file.
Fixes memcheck/tests/leak-segv-jmp for MIPS64.
Modified files:
trunk/memcheck/tests/leak-segv-jmp.c
trunk/memcheck/tests/leak-segv-jmp.stderr.exp
Modified: trunk/memcheck/tests/leak-segv-jmp.stderr.exp (+4 -4)
===================================================================
--- trunk/memcheck/tests/leak-segv-jmp.stderr.exp 2013-07-17 09:51:53 +01:00 (rev 13455)
+++ trunk/memcheck/tests/leak-segv-jmp.stderr.exp 2013-07-17 10:34:51 +01:00 (rev 13456)
@@ -14,8 +14,8 @@
expecting a leak
1,000 bytes in 1 blocks are definitely lost in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: f (leak-segv-jmp.c:171)
- by 0x........: main (leak-segv-jmp.c:218)
+ by 0x........: f (leak-segv-jmp.c:196)
+ by 0x........: main (leak-segv-jmp.c:243)
LEAK SUMMARY:
definitely lost: 1,000 bytes in 1 blocks
@@ -30,8 +30,8 @@
expecting a leak again
1,000 bytes in 1 blocks are definitely lost in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: f (leak-segv-jmp.c:171)
- by 0x........: main (leak-segv-jmp.c:218)
+ by 0x........: f (leak-segv-jmp.c:196)
+ by 0x........: main (leak-segv-jmp.c:243)
LEAK SUMMARY:
definitely lost: 1,000 bytes in 1 blocks
Modified: trunk/memcheck/tests/leak-segv-jmp.c (+25 -0)
===================================================================
--- trunk/memcheck/tests/leak-segv-jmp.c 2013-07-17 09:51:53 +01:00 (rev 13455)
+++ trunk/memcheck/tests/leak-segv-jmp.c 2013-07-17 10:34:51 +01:00 (rev 13456)
@@ -135,6 +135,31 @@
return (UWord) (__svcres);
}
+#elif defined(VGP_mips64_linux)
+extern UWord do_syscall_WRK (
+ UWord syscall_no,
+ UWord a1, UWord a2, UWord a3,
+ UWord a4, UWord a5, UWord a6
+ )
+{
+ UWord out;
+ __asm__ __volatile__ (
+ "move $v0, %1\n\t"
+ "move $a0, %2\n\t"
+ "move $a1, %3\n\t"
+ "move $a2, %4\n\t"
+ "move $a3, %5\n\t"
+ "move $8, %6\n\t" /* We use numbers because some compilers */
+ "move $9, %7\n\t" /* don't recognize $a4 and $a5 */
+ "syscall\n"
+ "move %0, $v0\n\t"
+ : /*out*/ "=r" (out)
+ : "r"(syscall_no), "r"(a1), "r"(a2), "r"(a3),
+ "r"(a4), "r"(a5), "r"(a6)
+ : "v0", "v1", "a0", "a1", "a2", "a3", "$8", "$9");
+ return out;
+}
+
#else
// Ensure the file compiles even if the syscall nr is not defined.
#ifndef __NR_mprotect
|