Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 475500 - sys-libs/libcxx-0.0_p20130531-r1: Compile was successful, but /usr/lib/libc++.so.1 returns Undefined symbol "__dso_handle"
Summary: sys-libs/libcxx-0.0_p20130531-r1: Compile was successful, but /usr/lib/libc++...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: All All
: Normal normal
Assignee: Alexis Ballier
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-02 13:02 UTC by Yuta SATOH
Modified: 2013-07-03 21:15 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Yuta SATOH 2013-07-02 13:02:40 UTC
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.
Comment 1 Yuta SATOH 2013-07-02 13:03:30 UTC
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!
Comment 2 Yuta SATOH 2013-07-02 13:04:43 UTC
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
Comment 3 Alexis Ballier gentoo-dev 2013-07-02 21:56:33 UTC
thanks; reverted the change for now until I find a better solution.

simplest one seems to rewrite the build system like for libcxxrt
Comment 4 Alexis Ballier gentoo-dev 2013-07-03 21:15:52 UTC
(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!