Linking problem with lld

Willem Jan Withagen wjw at digiware.nl
Fri Feb 22 21:25:32 UTC 2019


On 22-2-2019 21:09, Ed Maste wrote:
> On Fri, 22 Feb 2019 at 10:09, Willem Jan Withagen <wjw at digiware.nl> wrote:
>> 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.
> lld is largely compatible with GNU ld / gold on the command-line and
> in linker scripts and version scripts. Can you provide the error you
> see or an example of one of the symbols with incorrect visibility?

It could very be that the way versioning is introduced in the project is
not compatible with Clang, since the general compiler used is GCC.

I was afraid that that was going to be the counter question?? 8-(
This occurs while building Ceph, which is a "rather" large package
with a lot of include subpackages... and some local patches for things
that have not been send upstream.

But lets start with the error reported:

ld.lld: error: undefined symbol: rados_aio_get_return_value
referenced by cls_journal_client.cc:29 
(/home/jenkins/workspace/ceph-master/src/cls/journal/cls_journal_client.cc:29)
cls_journal_client.cc.o:(cls::journal::client::(anonymous 
namespace)::C_AioExec::rados_callback(void*, void*)) in archive 
../../../lib/libcls_journal_client.a
c++: error: linker command failed with exit code 1 (use -v to see 
invocation)
gmake[2]: *** 
[src/test/cls_journal/CMakeFiles/ceph_test_cls_journal.dir/build.make:129: 
bin/ceph_test_cls_journal] Error 1
gmake[2]: Leaving directory '/home/jenkins/workspace/ceph-master/build'
gmake[1]: *** [CMakeFiles/Makefile2:11020: 
src/test/cls_journal/CMakeFiles/ceph_test_cls_journal.dir/all] Error 2

===========

Not sure what you can make of this.

--WjW


More information about the freebsd-toolchain mailing list