clang Memory sanitizer (msan) and OpenJDK
Baesken, Matthias
matthias.baesken at sap.com
Tue Apr 29 14:47:51 UTC 2025
I checked the link call for javac .
/usr/bin/clang -fuse-ld=lld -fuse-ld=lld -Wl,--exclude-libs,ALL -Wl,-z,noexecstack -m64 -fsanitize=memory ....
Could it be that the -Wl,--exclude-libs,ALL “hides” the msan symbols like __msan_param_tls from exporting ?
But I guess we set this for a reason so removing it might cause other trouble ?
Best regards, Matthias
----------------------------------------------------
>>Maybe you can try patching out -fvisibility=hidden from the compile command line to see if that makes any difference.
>Sounds like a good idea to start with, I will try this! Seems the visibility stuff plays a role here.
I removed the -fvisibility=hidden from make/autoconf/flags-cflags.m4 (3 places) but the issue is still there.
When looking at our launchers in the msan – enabled build (java, javac) I see the msan_param_tls as “b” (local symbol) .
But I think it is expected as “B” (global/exported) .
In my simple working standalone example, the msan_param_tls is “B” .
So there must be something in out build that prevents the “export” of those msan symbols (even when removing -fvisibility=hidden ) .
Probably I should look in more details at our launcher builds and all the settings ...
Best regards, Matthias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/build-dev/attachments/20250429/65a007c0/attachment-0001.htm>
More information about the build-dev
mailing list