]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
sanitizers: mark __elf_aux_vector as weak, to allow linking without libsys
authorDimitry Andric <dim@FreeBSD.org>
Sun, 14 Apr 2024 17:38:42 +0000 (19:38 +0200)
committerDimitry Andric <dim@FreeBSD.org>
Sun, 14 Apr 2024 17:40:12 +0000 (19:40 +0200)
commit8b181c2fbaa8c6b32e5510ef6e3a6d364ff4710e
tree823e2a0df27f760f10b84eb1626e25327ad4b944
parente6a4b57239dafc6c944473326891d46d966c0264
sanitizers: mark __elf_aux_vector as weak, to allow linking without libsys

After libsys was introduced, linking sanitized programs started failing
with:

  # c++ -fsanitize=address main.cc
  ld: error: undefined symbol: __elf_aux_vector
  >>> referenced by sanitizer_linux_libcdep.cpp:950 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp:950)
  >>>     sanitizer_linux_libcdep.o:(__sanitizer::ReExec()) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a
  c++: error: linker command failed with exit code 1 (use -v to see invocation)

Mark __elf_aux_vector as weak in the internal sanitizer declaration, so
the linker will accept it at link time. The dynamic linker will then
take care of the symbol at run time.

Suggestion by: brooks
PR: 276104, 277393
MFC after: 1 month
contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp