mirror of
https://github.com/samba-team/samba.git
synced 2025-01-03 01:18:10 +03:00
build: Only add -Wl,--as-needed when supported
If -Wl,--as-needed is added to EXTRA_LDFLAGS (via ADD_LDFLAGS, as per commit996560191a
) then on some platforms (at least CentOS 8 and Fedora 33), any indirect/recursive dependencies (i.e. private libraries) are added to both the binary (reqid_test in the CTDB case) and to samba-util.so. However, only samba-util.so has rpath set to find private libraries. When ld.so tries to resolve these dependencies for the binary it fails. This may be a bug on those platforms, but it occurs reliably and our users will also hit the bug. For binaries that have other private library dependencies (e.g. bundled talloc) rpath will contain the private library directory so the duplicate private library dependencies are then found... that is, when it works, it works by accident! For some reason (deep in waf or wafsamba) if -Wl,--as-needed is added to LINKFLAGS (as is done in conf.add_as_needed()) then it works: the direct dependencies are only added to samba-util.so and the same depenencies (indirect dependencies for binaries) are not added incorrectly to the binaries. So, without changing 1/2 of waf/wafsamba the simplest fix is to revert to adding -Wl,--as-needed to LINKFLAGS, which was the case before commit996560191a
. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14288 RN: Fix the build on OmniOS Signed-off-by: Amitay Isaacs <amitay@gmail.com> Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Bjoern Jacke <bj@sernet.de> Reviewed-by: Andrew Bartlett <abartlet@samba.org> (backported from commitff1c3af603
) Autobuild-User(v4-14-test): Karolin Seeger <kseeger@samba.org> Autobuild-Date(v4-14-test): Wed Apr 14 07:34:20 UTC 2021 on sn-devel-184
This commit is contained in:
parent
0662726974
commit
12bfc43006
3
wscript
3
wscript
@ -340,7 +340,8 @@ def configure(conf):
|
||||
# allows us to find problems on our development hosts faster.
|
||||
# It also results in faster load time.
|
||||
|
||||
conf.add_as_needed()
|
||||
if conf.CHECK_LDFLAGS('-Wl,--as-needed'):
|
||||
conf.env.append_unique('LINKFLAGS', '-Wl,--as-needed')
|
||||
|
||||
if not conf.CHECK_NEED_LC("-lc not needed"):
|
||||
conf.ADD_LDFLAGS('-lc', testflags=False)
|
||||
|
Loading…
Reference in New Issue
Block a user