Index: lib/Driver/GnuLdDriver.cpp =================================================================== --- lib/Driver/GnuLdDriver.cpp +++ lib/Driver/GnuLdDriver.cpp @@ -423,10 +423,6 @@ if (auto *arg = parsedArgs->getLastArg(OPT_sysroot)) ctx->setSysroot(arg->getValue()); - // Add the default search directory specific to the target. - if (!parsedArgs->hasArg(OPT_nostdlib)) - addPlatformSearchDirs(*ctx, triple, baseTriple); - // Handle --demangle option(For compatibility) if (parsedArgs->hasArg(OPT_demangle)) ctx->setDemangleSymbols(true); @@ -545,6 +541,10 @@ for (auto *arg : parsedArgs->filtered(OPT_L)) ctx->addSearchPath(arg->getValue()); + // Add the default search directory specific to the target. + if (!parsedArgs->hasArg(OPT_nostdlib)) + addPlatformSearchDirs(*ctx, triple, baseTriple); + for (auto *arg : parsedArgs->filtered(OPT_u)) ctx->addInitialUndefinedSymbol(arg->getValue()); Index: test/Driver/Inputs/libtest.a =================================================================== --- /dev/null +++ test/Driver/Inputs/libtest.a @@ -0,0 +1 @@ +! Index: test/Driver/def-lib-search.test =================================================================== --- /dev/null +++ test/Driver/def-lib-search.test @@ -0,0 +1,8 @@ +# Check that search paths explicitly provided by the -L option +# are used in search before default paths. + +RUN: not lld -flavor gnu -target x86_64 -t -ltest \ +RUN: --sysroot=%p/Inputs -L%p/Inputs 2> %t +RUN: FileCheck %s < %t + +CHECK: {{[^ ]+}}{{[\\/]}}Inputs{{[\\/]}}libtest.a