summarylogtreecommitdiffstats
path: root/mongodb-5.0.5-no-force-lld.patch
diff options
context:
space:
mode:
authorJustKidding2022-08-03 16:06:57 -0500
committerJustKidding2022-08-03 16:06:57 -0500
commit8c576ee6fcfb1f8aac72e39f68f4f0512f5d441f (patch)
tree8a2f18b64532521d83093a90af5e1859d8386e2a /mongodb-5.0.5-no-force-lld.patch
downloadaur-8c576ee6fcfb1f8aac72e39f68f4f0512f5d441f.tar.gz
initial commit
Diffstat (limited to 'mongodb-5.0.5-no-force-lld.patch')
-rw-r--r--mongodb-5.0.5-no-force-lld.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/mongodb-5.0.5-no-force-lld.patch b/mongodb-5.0.5-no-force-lld.patch
new file mode 100644
index 000000000000..6ce92778b6bd
--- /dev/null
+++ b/mongodb-5.0.5-no-force-lld.patch
@@ -0,0 +1,49 @@
+Don't automagically force lld > gold > bfd. Leave it up to the user.
+
+In particular, avoids issues with LTO enabled (via the flag/scons option)
+where using GCC as compiler, as lld can't do LTO with GCC.
+
+https://bugs.gentoo.org/769986
+--- a/SConstruct
++++ b/SConstruct
+@@ -2824,40 +2824,6 @@ def doConfigure(myenv):
+ def AddToSHLINKFLAGSIfSupported(env, flag):
+ return AddFlagIfSupported(env, 'C', '.c', flag, True, SHLINKFLAGS=[flag])
+
+- if myenv.ToolchainIs('gcc', 'clang'):
+- # This tells clang/gcc to use the gold linker if it is available - we prefer the gold linker
+- # because it is much faster. Don't use it if the user has already configured another linker
+- # selection manually.
+- if any(flag.startswith('-fuse-ld=') for flag in env['LINKFLAGS']):
+- myenv.FatalError(f"Use the '--linker' option instead of modifying the LINKFLAGS directly.")
+-
+- linker_ld = get_option('linker')
+- if linker_ld == 'auto':
+- # lld has problems with separate debug info on some platforms. See:
+- # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+- # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+- #
+- # lld also apparently has problems with symbol resolution
+- # in some esoteric configurations that apply for us when
+- # using --link-model=dynamic mode, so disable lld there
+- # too. See:
+- # - https://bugs.llvm.org/show_bug.cgi?id=46676
+- #
+- # We should revisit all of these issues the next time we upgrade our clang minimum.
+- if get_option('separate-debug') == 'off' and get_option('link-model') != 'dynamic':
+- if not AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=lld'):
+- AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+- else:
+- AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+- elif link_model.startswith("dynamic") and linker_ld == 'bfd':
+- # BFD is not supported due to issues with it causing warnings from some of
+- # the third party libraries that mongodb is linked with:
+- # https://jira.mongodb.org/browse/SERVER-49465
+- myenv.FatalError(f"Linker {linker_ld} is not supported with dynamic link model builds.")
+- else:
+- if not AddToLINKFLAGSIfSupported(myenv, f'-fuse-ld={linker_ld}'):
+- myenv.FatalError(f"Linker {linker_ld} could not be configured.")
+-
+ detectCompiler = Configure(myenv, help=False, custom_tests = {
+ 'CheckForCXXLink': CheckForCXXLink,
+ })