50 lines
2.6 KiB
Diff
50 lines
2.6 KiB
Diff
|
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,
|
||
|
})
|