Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Feb 2019 16:09:09 +0100
From:      Willem Jan Withagen <wjw@digiware.nl>
To:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, Ed Maste <emaste@freebsd.org>
Subject:   Linking problem with lld
Message-ID:  <71079fbc-c3c0-9b93-0ae4-8ceda5d1f751@digiware.nl>

next in thread | raw e-mail | index | archive | help
Hi Ed ea,

In het ceph project, they started to use library versioning, so it seems.

But compiling/linking that now with Clang and lld I run into trouble 
building the ceph-tools.

This is what I get back of one of the Devs:
--------------
My guess is that your linker doesn't support the new symbol versioning 
exports and since the symbols are hidden by default they aren't visible 
in the shared library. Previously there was a bug (since Luminous and 
the switch the cmake) where every public and private symbol was exported 
by librados.

We just need to know the magic words to use for your compiler/linker to 
change the symbol visibility to public for the API methods.

--------------

Now I looked thru the options on both Clang and lld, but nothing 
obviously springs into focus, as to add to change....

This is how librados is build:
  /usr/bin/c++ -fPIC  -Wall -Wtype-limits -Wignored-qualifiers 
-Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing 
-fsigned-char -Wno-unknown-pragmas -Wno-unused-function 
-Wno-unused-local-typedef -Wno-varargs -Wno-gnu-designator 
-Wno-missing-braces -Wno-parentheses -Wno-deprecated-register 
-ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-unknown-pragmas 
-Wno-ignored-qualifiers -Wno-inconsistent-missing-override 
-Wno-mismatched-tags -Wno-unused-private-field 
-Wno-address-of-packed-member -DCEPH_DEBUG_MUTEX 
-fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc 
-fno-builtin-realloc -fno-builtin-free  -O0 -g 
-Wno-unused-command-line-argument -fuse-ld=/usr/bin/ld.lld 
-Wl,--exclude-libs,ALL 
-Wl,--version-script=/home/jenkins/workspace/ceph-master/src/librados/librados.map 
-shared -Wl,-soname,librados.so.2 -o ../../lib/librados.so.2.0.0 
CMakeFiles/librados.dir/librados_c.cc.o 
CMakeFiles/librados.dir/librados_cxx.cc.o 
../common/CMakeFiles/common_buffer_obj.dir/buffer.cc.o  -L/usr/local/lib 
-Wl,-rpath,/usr/local/lib:/home/jenkins/workspace/ceph-master/build/lib:/usr/local/lib/nss: 
../../lib/liblibrados_impl.a ../../lib/libosdc.a 
../../lib/libceph-common.so.0 ../../lib/libcls_lock_client.a 
/usr/local/lib/nss/libssl3.so /usr/local/lib/nss/libsmime3.so 
/usr/local/lib/nss/libnss3.so /usr/local/lib/nss/libnssutil3.so 
/usr/local/lib/libplds4.so /usr/local/lib/libplc4.so 
/usr/local/lib/libnspr4.so /usr/local/lib/libcrypto.so -lrt 
../../lib/libjson_spirit.a ../../lib/libcommon_utf8.a 
../../lib/liberasure_code.a ../../lib/libcrc32.a ../../lib/libarch.a 
/usr/local/lib/libboost_thread.so /usr/local/lib/libboost_chrono.so 
/usr/local/lib/libboost_atomic.so /usr/local/lib/libboost_random.so 
/usr/local/lib/libboost_system.so 
/usr/local/lib/libboost_program_options.so 
/usr/local/lib/libboost_date_time.so 
/usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_regex.so 
/usr/lib/libexecinfo.so /usr/local/lib/nss/libssl3.so 
/usr/local/lib/nss/libsmime3.so /usr/local/lib/nss/libnss3.so 
/usr/local/lib/nss/libnssutil3.so /usr/local/lib/libplds4.so 
/usr/local/lib/libplc4.so /usr/local/lib/libnspr4.so -lpthread

Any suggestions on getting the hidden symbols to reapear is greatly 
appriciated.

--WjW



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?71079fbc-c3c0-9b93-0ae4-8ceda5d1f751>