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