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, })