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