summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2021-03-29 16:30:37 +1100
committerKarolin Seeger <kseeger@samba.org>2021-04-14 07:34:20 +0000
commit12bfc43006347ad6f775181528b872c0a968f8cd (patch)
tree4c7def5408d55b11f85fffa8a4c7cbce11c5e0e6
parent0662726974b43c2caa9d4a143c98d6935ca28eb7 (diff)
downloadsamba-12bfc43006347ad6f775181528b872c0a968f8cd.tar.gz
build: Only add -Wl,--as-needed when supported
If -Wl,--as-needed is added to EXTRA_LDFLAGS (via ADD_LDFLAGS, as per commit 996560191ac6bd603901dcd6c0de5d239e019ef4) 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 commit 996560191ac6bd603901dcd6c0de5d239e019ef4. 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 commit ff1c3af603b47a7e8f9faad8d1c2e4a489559155) 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
-rw-r--r--wscript3
1 files changed, 2 insertions, 1 deletions
diff --git a/wscript b/wscript
index 334b2988234..172d05c052b 100644
--- a/wscript
+++ b/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)