From: Paul Floyd Date: Wed, 29 Oct 2025 14:54:59 +0000 (+0100) Subject: FreeBSD regtest: clobber R11 for memcheck/tests/leak_cpp_interior X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=951a45bdb7d21923314d1a5228df82d398b71496;p=thirdparty%2Fvalgrind.git FreeBSD regtest: clobber R11 for memcheck/tests/leak_cpp_interior --- diff --git a/memcheck/tests/leak.h b/memcheck/tests/leak.h index 6b4450327..6d3a5f440 100644 --- a/memcheck/tests/leak.h +++ b/memcheck/tests/leak.h @@ -148,6 +148,11 @@ do { \ __asm__ __volatile__ ("movl $0, %ecx\n\t"); \ } while (0) +#elif defined (__clang__) && defined(VGA_amd64) +#define CLEAR_CALLER_SAVED_REGS \ + do { \ + __asm__ __volatile__ ("movq $0, %r11\n\t"); \ + } while (0) #elif defined(__arm__) /* 32bit arm */ #define CLEAR_CALLER_SAVED_REGS \ diff --git a/memcheck/tests/leak_cpp_interior.cpp b/memcheck/tests/leak_cpp_interior.cpp index 56c53709d..abfd0d1c2 100644 --- a/memcheck/tests/leak_cpp_interior.cpp +++ b/memcheck/tests/leak_cpp_interior.cpp @@ -8,6 +8,7 @@ #include #include #include "../memcheck.h" +#include "leak.h" // Derived from test provided by Timur Iskhodzhanov (bug 280271) class MyClass @@ -132,6 +133,7 @@ void doit(void) int main() { doit(); + CLEAR_CALLER_SAVED_REGS; (void) VALGRIND_MONITOR_COMMAND("v.set log_output"); fprintf(stderr, "VALGRIND_DO_LEAK_CHECK\n"); diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp b/memcheck/tests/leak_cpp_interior.stderr.exp index ae3ae23b2..6b6c5dc8e 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp +++ b/memcheck/tests/leak_cpp_interior.stderr.exp @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:119) - by 0x........: main (leak_cpp_interior.cpp:134) + by 0x........: doit() (leak_cpp_interior.cpp:120) + by 0x........: main (leak_cpp_interior.cpp:135) LEAK SUMMARY: definitely lost: x bytes in 1 blocks diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit index 5c85d9917..02e5968ae 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit +++ b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:119) - by 0x........: main (leak_cpp_interior.cpp:134) + by 0x........: doit() (leak_cpp_interior.cpp:120) + by 0x........: main (leak_cpp_interior.cpp:135) LEAK SUMMARY: definitely lost: x bytes in 1 blocks diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-arm b/memcheck/tests/leak_cpp_interior.stderr.exp-arm index 6f0a81f75..a236c7777 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp-arm +++ b/memcheck/tests/leak_cpp_interior.stderr.exp-arm @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:119) - by 0x........: main (leak_cpp_interior.cpp:134) + by 0x........: doit() (leak_cpp_interior.cpp:120) + by 0x........: main (leak_cpp_interior.cpp:135) x bytes in 1 blocks are possibly lost in loss record ... of ... by 0x........: doit() (leak_cpp_interior.cpp:109) diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd b/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd index ac9e462b3..52ead5fa9 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd +++ b/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:119) - by 0x........: main (leak_cpp_interior.cpp:134) + by 0x........: doit() (leak_cpp_interior.cpp:120) + by 0x........: main (leak_cpp_interior.cpp:135) LEAK SUMMARY: definitely lost: x bytes in 1 blocks diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd-32bit b/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd-32bit index 4f1cc7a2d..a6a654769 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd-32bit +++ b/memcheck/tests/leak_cpp_interior.stderr.exp-freebsd-32bit @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:119) - by 0x........: main (leak_cpp_interior.cpp:134) + by 0x........: doit() (leak_cpp_interior.cpp:120) + by 0x........: main (leak_cpp_interior.cpp:135) LEAK SUMMARY: definitely lost: x bytes in 1 blocks