After emerged libcxx, all command that are linked to /usr/lib/libc++.so.1 returns Undefined symbol "__dso_handle". The command does not work. e.g) # ldd /usr/bin/clang++ /usr/bin/clang++: libLLVM-3.3.so => /usr/lib/llvm/libLLVM-3.3.so (0x8014bc000) libz.so.1 => /lib/libz.so.1 (0x8023d7000) libthr.so.3 => /lib/libthr.so.3 (0x8025ec000) libm.so.5 => /lib/libm.so.5 (0x80280f000) libc++.so.1 => /usr/lib/libc++.so.1 (0x802a2f000) libc.so.7 => /lib/libc.so.7 (0x802ce8000) libcxxrt.so.1 => /usr/lib/libcxxrt.so.1 (0x803038000) libffi.so.6 => /usr/lib/libffi.so.6 (0x803252000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x80345a000) # clang++ /usr/lib/libc++.so.1: Undefined symbol "__dso_handle" Maybe, requires crti.o, crtbeginS.o, crtendS.o, crtn.o ? In addition, it seems not detected -lpthread -lc -lrt -lcxxrt -lpthread -lc -lrt when -nostdlib is set. Reproducible: Always Steps to Reproduce: 1. emerge libcxx 2. Run the command that is linked to libc++.so.1. 3.
FreeBSD amd64) CXX="clang++ -nostdlib -v" Linking CXX shared library libc++.so cd /var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib && /usr/bin/cmake -E cmake_link_script CMakeFiles/cxx.dir/link.txt --verbose=1 /usr/bin/clang++ -nostdlib -v -fPIC -O2 -pipe -nodefaultlibs -shared -Wl,-soname,libc++.so.1 -o libc++.so.1.0 CMakeFiles/cxx.dir/__/src/regex.cpp.o CMakeFiles/cxx.dir/__/src/ios.cpp.o CMakeFiles/cxx.dir/__/src/algorithm.cpp.o CMakeFiles/cxx.dir/__/src/valarray.cpp.o CMakeFiles/cxx.dir/__/src/hash.cpp.o CMakeFiles/cxx.dir/__/src/mutex.cpp.o CMakeFiles/cxx.dir/__/src/typeinfo.cpp.o CMakeFiles/cxx.dir/__/src/chrono.cpp.o CMakeFiles/cxx.dir/__/src/thread.cpp.o CMakeFiles/cxx.dir/__/src/system_error.cpp.o CMakeFiles/cxx.dir/__/src/future.cpp.o CMakeFiles/cxx.dir/__/src/condition_variable.cpp.o CMakeFiles/cxx.dir/__/src/strstream.cpp.o CMakeFiles/cxx.dir/__/src/new.cpp.o CMakeFiles/cxx.dir/__/src/stdexcept.cpp.o CMakeFiles/cxx.dir/__/src/iostream.cpp.o CMakeFiles/cxx.dir/__/src/memory.cpp.o CMakeFiles/cxx.dir/__/src/debug.cpp.o CMakeFiles/cxx.dir/__/src/locale.cpp.o CMakeFiles/cxx.dir/__/src/bind.cpp.o CMakeFiles/cxx.dir/__/src/exception.cpp.o CMakeFiles/cxx.dir/__/src/utility.cpp.o CMakeFiles/cxx.dir/__/src/random.cpp.o CMakeFiles/cxx.dir/__/src/string.cpp.o -lcxxrt clang version 3.3 (tags/RELEASE_33/final) Target: x86_64-gentoo-freebsd9.0 Thread model: posix clang: warning: argument unused during compilation: '-nodefaultlibs' "/usr/bin/x86_64-gentoo-freebsd9.0-ld" --eh-frame-hdr -Bshareable --hash-style=both --enable-new-dtags -o libc++.so.1.0 -L/usr/lib -soname libc++.so.1 CMakeFiles/cxx.dir/__/src/regex.cpp.o CMakeFiles/cxx.dir/__/src/ios.cpp.o CMakeFiles/cxx.dir/__/src/algorithm.cpp.o CMakeFiles/cxx.dir/__/src/valarray.cpp.o CMakeFiles/cxx.dir/__/src/hash.cpp.o CMakeFiles/cxx.dir/__/src/mutex.cpp.o CMakeFiles/cxx.dir/__/src/typeinfo.cpp.o CMakeFiles/cxx.dir/__/src/chrono.cpp.o CMakeFiles/cxx.dir/__/src/thread.cpp.o CMakeFiles/cxx.dir/__/src/system_error.cpp.o CMakeFiles/cxx.dir/__/src/future.cpp.o CMakeFiles/cxx.dir/__/src/condition_variable.cpp.o CMakeFiles/cxx.dir/__/src/strstream.cpp.o CMakeFiles/cxx.dir/__/src/new.cpp.o CMakeFiles/cxx.dir/__/src/stdexcept.cpp.o CMakeFiles/cxx.dir/__/src/iostream.cpp.o CMakeFiles/cxx.dir/__/src/memory.cpp.o CMakeFiles/cxx.dir/__/src/debug.cpp.o CMakeFiles/cxx.dir/__/src/locale.cpp.o CMakeFiles/cxx.dir/__/src/bind.cpp.o CMakeFiles/cxx.dir/__/src/exception.cpp.o CMakeFiles/cxx.dir/__/src/utility.cpp.o CMakeFiles/cxx.dir/__/src/random.cpp.o CMakeFiles/cxx.dir/__/src/string.cpp.o -lcxxrt cd /var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib && /usr/bin/cmake -E cmake_symlink_library libc++.so.1.0 libc++.so.1 libc++.so # clang++ -v --stdlib=libc++ -L/var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib -o hello hello.cc clang version 3.3 (tags/RELEASE_33/final) Target: x86_64-gentoo-freebsd9.0 Thread model: posix "/usr/bin/clang" -cc1 -triple x86_64-gentoo-freebsd9.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name hello.cc -mrelocation-model static -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version 2.22 -v -resource-dir /usr/bin/../lib/clang/3.3 --stdlib=libc++ -fdeprecated-macro -fdebug-compilation-dir /root -ferror-limit 19 -fmessage-length 119 -mstackrealign -fobjc-runtime=gnustep -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o /tmp/hello-YFI2DF.o -x c++ hello.cc clang -cc1 version 3.3 based upon LLVM 3.3 default target x86_64-gentoo-freebsd9.0 #include "..." search starts here: #include <...> search starts here: /usr/include/c++/v1 /usr/bin/../lib/clang/3.3/include /usr/include End of search list. "/usr/bin/x86_64-gentoo-freebsd9.0-ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 --hash-style=both --enable-new-dtags -o hello /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib -L/usr/lib /tmp/hello-YFI2DF.o -lc++ -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtend.o /usr/lib/crtn.o /usr/bin/x86_64-gentoo-freebsd9.0-ld: hello: hidden symbol `__dso_handle' in /usr/lib/crtbegin.o is referenced by DSO /usr/bin/x86_64-gentoo-freebsd9.0-ld: final link failed: Bad value clang: error: linker command failed with exit code 1 (use -v to see invocation) # cd /var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib # nano -w CMakeFiles/cxx.dir/link.txt Manually add begin) /usr/lib/crti.o /usr/lib/crtbeginS.o Manually add end) /usr/lib/crtendS.o /usr/lib/crtn.o # /usr/bin/cmake -E cmake_link_script CMakeFiles/cxx.dir/link.txt --verbose=1 retry compile hello.cc # clang++ --stdlib=libc++ -L/var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib -o hello hello.cc compile ok. # LD_LIBRARY_PATH=/var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib ./hello Hello, world!
FYI, FreeBSD amd64) CXX="clang++ --stdlib=libc++ -v" Linking CXX shared library libc++.so cd /var/tmp/portage/sys-libs/libcxx-0.0_p20130531-r1/work/libcxx-0.0_p20130531_shared/lib && /usr/bin/cmake -E cmake_link_script CMakeFiles/cxx.dir/link.txt --verbose=1 /usr/bin/clang++ --stdlib=libc++ -v -fPIC -O2 -pipe -nodefaultlibs -shared -Wl,-soname,libc++.so.1 -o libc++.so.1.0 CMakeFiles/cxx.dir/__/src/regex.cpp.o CMakeFiles/cxx.dir/__/src/ios.cpp.o CMakeFiles/cxx.dir/__/src/algorithm.cpp.o CMakeFiles/cxx.dir/__/src/valarray.cpp.o CMakeFiles/cxx.dir/__/src/hash.cpp.o CMakeFiles/cxx.dir/__/src/mutex.cpp.o CMakeFiles/cxx.dir/__/src/typeinfo.cpp.o CMakeFiles/cxx.dir/__/src/chrono.cpp.o CMakeFiles/cxx.dir/__/src/thread.cpp.o CMakeFiles/cxx.dir/__/src/system_error.cpp.o CMakeFiles/cxx.dir/__/src/future.cpp.o CMakeFiles/cxx.dir/__/src/condition_variable.cpp.o CMakeFiles/cxx.dir/__/src/strstream.cpp.o CMakeFiles/cxx.dir/__/src/new.cpp.o CMakeFiles/cxx.dir/__/src/stdexcept.cpp.o CMakeFiles/cxx.dir/__/src/iostream.cpp.o CMakeFiles/cxx.dir/__/src/memory.cpp.o CMakeFiles/cxx.dir/__/src/debug.cpp.o CMakeFiles/cxx.dir/__/src/locale.cpp.o CMakeFiles/cxx.dir/__/src/bind.cpp.o CMakeFiles/cxx.dir/__/src/exception.cpp.o CMakeFiles/cxx.dir/__/src/utility.cpp.o CMakeFiles/cxx.dir/__/src/random.cpp.o CMakeFiles/cxx.dir/__/src/string.cpp.o -lcxxrt -lpthread -lc -lrt -lcxxrt -lpthread -lc -lrt clang version 3.3 (tags/RELEASE_33/final) Target: x86_64-gentoo-freebsd9.0 Thread model: posix clang: warning: argument unused during compilation: '--stdlib=libc++' "/usr/bin/x86_64-gentoo-freebsd9.0-ld" --eh-frame-hdr -Bshareable --hash-style=both --enable-new-dtags -o libc++.so.1.0 /usr/lib/crti.o /usr/lib/crtbeginS.o -L/usr/lib -soname libc++.so.1 CMakeFiles/cxx.dir/__/src/regex.cpp.o CMakeFiles/cxx.dir/__/src/ios.cpp.o CMakeFiles/cxx.dir/__/src/algorithm.cpp.o CMakeFiles/cxx.dir/__/src/valarray.cpp.o CMakeFiles/cxx.dir/__/src/hash.cpp.o CMakeFiles/cxx.dir/__/src/mutex.cpp.o CMakeFiles/cxx.dir/__/src/typeinfo.cpp.o CMakeFiles/cxx.dir/__/src/chrono.cpp.o CMakeFiles/cxx.dir/__/src/thread.cpp.o CMakeFiles/cxx.dir/__/src/system_error.cpp.o CMakeFiles/cxx.dir/__/src/future.cpp.o CMakeFiles/cxx.dir/__/src/condition_variable.cpp.o CMakeFiles/cxx.dir/__/src/strstream.cpp.o CMakeFiles/cxx.dir/__/src/new.cpp.o CMakeFiles/cxx.dir/__/src/stdexcept.cpp.o CMakeFiles/cxx.dir/__/src/iostream.cpp.o CMakeFiles/cxx.dir/__/src/memory.cpp.o CMakeFiles/cxx.dir/__/src/debug.cpp.o CMakeFiles/cxx.dir/__/src/locale.cpp.o CMakeFiles/cxx.dir/__/src/bind.cpp.o CMakeFiles/cxx.dir/__/src/exception.cpp.o CMakeFiles/cxx.dir/__/src/utility.cpp.o CMakeFiles/cxx.dir/__/src/random.cpp.o CMakeFiles/cxx.dir/__/src/string.cpp.o -lcxxrt -lpthread -lc -lrt -lcxxrt -lpthread -lc -lrt /usr/lib/crtendS.o /usr/lib/crtn.o
thanks; reverted the change for now until I find a better solution. simplest one seems to rewrite the build system like for libcxxrt
(In reply to Alexis Ballier from comment #3) > simplest one seems to rewrite the build system like for libcxxrt done that in -9999; please test!