https://bugs.llvm.org/show_bug.cgi?id=40579
Bug ID: 40579
Summary: clang's -nodefaultlibs breaks XRay instrumentation
Product: XRay
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Clang
Assignee: dber...@google.com
Reporter: lebedev...@gmail.com
CC: llvm-bugs@lists.llvm.org
I have just tried to build LLVM with xray instrumentation, and it fails with
CMake Warning at /build/libcxx/cmake/Modules/CheckLibcxxAtomic.cmake:52
(message):
Host compiler appears to require libatomic, but cannot find it.
Call Stack (most recent call first):
/build/libcxx/cmake/config-ix.cmake:63 (include)
/build/libcxx/CMakeLists.txt:471 (include)
CMake Error at /build/libcxx/CMakeLists.txt:526 (message):
C++11 or greater is required but the compiler does not support c++11
Configuring incomplete, errors occurred!
I have digged, and:
$ cat /tmp/test.cpp
int main(int argc, char* argv[]) {
return 0;
}
$ clang++ -fxray-instrument -fxray-instruction-threshold=0 -nodefaultlibs
/tmp/test.cpp
ld: error: undefined symbol: __libc_csu_fini
>>> referenced by
>>> /usr/lib64/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o:(_start)
ld: error: undefined symbol: __libc_csu_init
>>> referenced by
>>> /usr/lib64/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o:(_start)
ld: error: undefined symbol: __libc_start_main
>>> referenced by
>>> /usr/lib64/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o:(_start)
ld: error: undefined symbol: __errno_location
>>> referenced by
>>> sanitizer_allocator_checks.cc.o:(__sanitizer::SetErrnoToENOMEM()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: sigaction
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::internal_sigaction(int, void
>>> const*, void*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: getrlimit
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::GetThreadStackTopAndBottom(bool,
>>> unsigned long*, unsigned long*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: pthread_attr_init
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::GetThreadStackTopAndBottom(bool,
>>> unsigned long*, unsigned long*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: pthread_self
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::GetThreadStackTopAndBottom(bool,
>>> unsigned long*, unsigned long*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: pthread_getattr_np
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::GetThreadStackTopAndBottom(bool,
>>> unsigned long*, unsigned long*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: pthread_attr_destroy
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::GetThreadStackTopAndBottom(bool,
>>> unsigned long*, unsigned long*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: dlsym
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::SetEnv(char
>>> const*, char const*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: dlsym
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::InitTlsSize()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: confstr
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::ThreadDescriptorSize()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: dl_iterate_phdr
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::ListOfModules::init()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: getrusage
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::GetRSS()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: sched_getaffinity
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::GetNumberOfCPUs())
>>> in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: __sched_cpucount
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::GetNumberOfCPUs())
>>> in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: syslog
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::WriteOneLineToSyslog(char
>>> const*)) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: clock_gettime
>>> referenced by
>>> sanitizer_linux_libcdep.cc.o:(__sanitizer::MonotonicNanoTime()) in archive
>>> /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: undefined symbol: getauxval
>>> referenced by sanitizer_linux_libcdep.cc.o:(__sanitizer::ReExec()) in
>>> archive /usr/lib/llvm-9/lib/clang/9.0.0/lib/linux/libclang_rt.xray-x86_64.a
ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all
errors)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
$ clang++ -fxray-instrument -fxray-instruction-threshold=0 /tmp/test.cpp
$ # so it is -nodefaultlibs that is the culprit.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs