@@ -303,15 +303,16 @@ impl LinkerFlavor {
303303 }
304304 }
305305
306- fn infer_linker_hints ( linker_stem : & str ) -> ( Option < Cc > , Option < Lld > ) {
306+ fn infer_linker_hints ( linker_stem : & str ) -> Result < Self , ( Option < Cc > , Option < Lld > ) > {
307307 // Remove any version postfix.
308308 let stem = linker_stem
309309 . rsplit_once ( '-' )
310310 . and_then ( |( lhs, rhs) | rhs. chars ( ) . all ( char:: is_numeric) . then_some ( lhs) )
311311 . unwrap_or ( linker_stem) ;
312312
313- // GCC/Clang can have an optional target prefix.
314- if stem == "emcc"
313+ if stem == "llvm-bitcode-linker" {
314+ Ok ( Self :: Llbc )
315+ } else if stem == "emcc" // GCC/Clang can have an optional target prefix.
315316 || stem == "gcc"
316317 || stem. ends_with ( "-gcc" )
317318 || stem == "g++"
@@ -321,19 +322,19 @@ impl LinkerFlavor {
321322 || stem == "clang++"
322323 || stem. ends_with ( "-clang++" )
323324 {
324- ( Some ( Cc :: Yes ) , Some ( Lld :: No ) )
325+ Err ( ( Some ( Cc :: Yes ) , Some ( Lld :: No ) ) )
325326 } else if stem == "wasm-ld"
326327 || stem. ends_with ( "-wasm-ld" )
327328 || stem == "ld.lld"
328329 || stem == "lld"
329330 || stem == "rust-lld"
330331 || stem == "lld-link"
331332 {
332- ( Some ( Cc :: No ) , Some ( Lld :: Yes ) )
333+ Err ( ( Some ( Cc :: No ) , Some ( Lld :: Yes ) ) )
333334 } else if stem == "ld" || stem. ends_with ( "-ld" ) || stem == "link" {
334- ( Some ( Cc :: No ) , Some ( Lld :: No ) )
335+ Err ( ( Some ( Cc :: No ) , Some ( Lld :: No ) ) )
335336 } else {
336- ( None , None )
337+ Err ( ( None , None ) )
337338 }
338339 }
339340
@@ -357,7 +358,10 @@ impl LinkerFlavor {
357358 }
358359
359360 pub fn with_linker_hints ( self , linker_stem : & str ) -> LinkerFlavor {
360- self . with_hints ( LinkerFlavor :: infer_linker_hints ( linker_stem) )
361+ match LinkerFlavor :: infer_linker_hints ( linker_stem) {
362+ Ok ( linker_flavor) => linker_flavor,
363+ Err ( hints) => self . with_hints ( hints) ,
364+ }
361365 }
362366
363367 pub fn check_compatibility ( self , cli : LinkerFlavorCli ) -> Option < String > {
0 commit comments