[Bug 275854] -fsanitize=address and -fsanitize=memory fail with clang 17

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 20 Dec 2023 09:23:52 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275854

            Bug ID: 275854
           Summary: -fsanitize=address and -fsanitize=memory fail with
                    clang 17
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Ports Framework
          Assignee: portmgr@FreeBSD.org
          Reporter: jbeich@FreeBSD.org
                CC: ports-bugs@FreeBSD.org
            Blocks: 273753

$ echo 'int main() {}' >a.c

$ cc -fsanitize=address a.c
ld: error: undefined symbol:
__sanitizer::ThreadArgRetval::GetAllPtrsLocked(__sanitizer::InternalMmapVector<unsigned
long>*)
>>> referenced by asan_thread.cpp:560 (/usr/src/contrib/llvm-project/compiler-rt/lib/asan/asan_thread.cpp:560)
>>>               asan_thread.o:(__lsan::GetAdditionalThreadContextPtrsLocked(__sanitizer::InternalMmapVector<unsigned long>*)) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol:
__sanitizer::ThreadArgRetval::CreateLocked(unsigned long, bool,
__sanitizer::ThreadArgRetval::Args const&)
>>> referenced by sanitizer_thread_arg_retval.h:48 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_thread_arg_retval.h:48)
>>>               asan_interceptors.o:(__interceptor_pthread_create) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol: __sanitizer::ThreadArgRetval::BeforeJoin(unsigned
long) const
>>> referenced by sanitizer_thread_arg_retval.h:74 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_thread_arg_retval.h:74)
>>>               asan_interceptors.o:(__interceptor_pthread_join) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol: __sanitizer::ThreadArgRetval::AfterJoin(unsigned
long, unsigned int)
>>> referenced by sanitizer_thread_arg_retval.h:76 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_thread_arg_retval.h:76)
>>>               asan_interceptors.o:(__interceptor_pthread_join) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol:
__sanitizer::ThreadArgRetval::DetachLocked(unsigned long)
>>> referenced by sanitizer_thread_arg_retval.h:65 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_thread_arg_retval.h:65)
>>>               asan_interceptors.o:(__interceptor_pthread_detach) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol: __sanitizer::ThreadArgRetval::Finish(unsigned
long, void*)
>>> referenced by asan_interceptors.cpp:290 (/usr/src/contrib/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:290)
>>>               asan_interceptors.o:(__interceptor_pthread_exit) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a
>>> referenced by asan_interceptors.cpp:226 (/usr/src/contrib/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:226)
>>>               asan_interceptors.o:(asan_thread_start(void*)) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a

ld: error: undefined symbol: __sanitizer::ThreadArgRetval::GetArgs(unsigned
long) const
>>> referenced by asan_interceptors.cpp:224 (/usr/src/contrib/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:224)
>>>               asan_interceptors.o:(asan_thread_start(void*)) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.asan-x86_64.a
cc: error: linker command failed with exit code 1 (use -v to see invocation)

$ cc -fsanitize=memory a.c
ld: error: undefined symbol: __msan::UnpoisonDllAddrInfo(void*)
>>> referenced by msan_interceptors.cpp:1550 (/usr/src/contrib/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:1550)
>>>               msan_interceptors.o:(__interceptor_dladdr) in archive /usr/lib/clang/17/lib/freebsd/libclang_rt.msan-x86_64.a
cc: error: linker command failed with exit code 1 (use -v to see invocation)

Note, -fsanitize=undefined, -fsanitize=thread work fine.


Referenced Bugs:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273753
[Bug 273753] [exp-run] Against llvm-17-update branch on GitHub
-- 
You are receiving this mail because:
You are on the CC list for the bug.