Monday, September 14, 2020

Re: valgrind + llvm10

Hi,

From: Martijn van Duren <openbsd+ports@list.imperialat.at>
Date: Mon, 14 Sep 2020 10:43:28 +0200

> I did some bisecting and it seems that the update to clang 10 broke
> valgrind. Specifically /usr/local/lib/valgrind/memcheck-amd64-openbsd:
>
> $ ktrace -i /usr/local/lib/valgrind/memcheck-amd64-openbsd
> Abort trap
> $ kdump
> 12913 ktrace RET ktrace 0
> 12913 ktrace CALL execve(0x7f7ffffc6fca,0x7f7ffffc6e68,0x7f7ffffc6e78)
> 12913 ktrace NAMI "/usr/local/lib/valgrind/memcheck-amd64-openbsd"
> 12913 ktrace ARGS
> [0] = "/usr/local/lib/valgrind/memcheck-amd64-openbsd"

Now, I am debugging this problem.

> Compiling valgrind with CC=gcc gives the same result, so my guess is
> that the linker does something unexpected.

Your guess is correct.

Anyway, the following changes seems to work correctly.
I will report the patch to this mailing list in the next few days.

--- a/devel/valgrind/patches/patch-coregrind_link_tool_exe_openbsd_in
+++ b/devel/valgrind/patches/patch-coregrind_link_tool_exe_openbsd_in
@@ -10,7 +10,7 @@
+# strip command rewrite offset and align in ELF file. Therefor, when valgrind
+# launch memcheck-amd64-openbsd, an Abort trap occurs in the execvp() system
+# call.
-+my $cmd = sprintf "$cc -static -nopie -Wl,--strip-all -Wl,-Ttext=0x%x -Wl,-T,$temp", $textbase;
++my $cmd = sprintf "$cc -static -nopie -Wl,--strip-all -Wl,-Ttext=0x%x", $textbase;

# Add the rest of the parameters
foreach my $n (2 .. $#ARGV) {
--
ASOU Masato

No comments:

Post a Comment