diff --git a/include/swift/Option/Options.td b/include/swift/Option/Options.td index 5894859b74660..15604478381ca 100644 --- a/include/swift/Option/Options.td +++ b/include/swift/Option/Options.td @@ -268,6 +268,10 @@ def use_ld : Joined<["-"], "use-ld=">, Flags<[DoesNotAffectIncrementalBuild]>, HelpText<"Specifies the linker to be used">; +def ld_path : Separate<["-"], "Blinker">, + Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, + HelpText<"Specifies where to look for the linker">; + def Xlinker : Separate<["-"], "Xlinker">, Flags<[DoesNotAffectIncrementalBuild]>, HelpText<"Specifies an option which should be passed to the linker">; diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 42e1e2c442b61..21147a44c8d34 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1281,6 +1281,12 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job, if (!Linker.empty()) { Arguments.push_back(context.Args.MakeArgString("-fuse-ld=" + Linker)); } + + // Add the linker search path + if (const Arg *A = context.Args.getLastArg(options::OPT_ld_path)) { + Arguments.push_back("-B"); + Arguments.push_back(context.Args.MakeArgString(A->getValue())); + } std::string Target = getTargetForLinker(); if (!Target.empty()) {