From 951a45bdb7d21923314d1a5228df82d398b71496 Mon Sep 17 00:00:00 2001 From: Paul Floyd Date: Wed, 29 Oct 2025 15:54:59 +0100 Subject: [PATCH] FreeBSD regtest: clobber R11 for memcheck/tests/leak_cpp_interior --- memcheck/tests/leak.h | 5 +++++ memcheck/tests/leak_cpp_interior.cpp | 2 ++ memcheck/tests/leak_cpp_interior.stderr.exp | 4 ++-- memcheck/tests/leak_cpp_interior.stderr.exp-64bit | 4 ++-- memcheck/tests/leak_cpp_interior.stderr.exp-arm | 4 ++-- memcheck/tests/leak_cpp_interior.stderr.exp-freebsd | 4 ++-- memcheck/tests/leak_cpp_interior.stderr.exp-freebsd-32bit | 4 ++-- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/memcheck/tests/leak.h b/memcheck/tests/leak.h index 6b44503276..6d3a5f4404 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 56c53709d1..abfd0d1c24 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 ae3ae23b27..6b6c5dc8e9 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 5c85d99176..02e5968ae2 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 6f0a81f753..a236c7777f 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 ac9e462b38..52ead5fa9a 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 4f1cc7a2d8..a6a654769e 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 -- 2.47.3