forked from OSchip/llvm-project
[WebAssembly] Add crt1.o with calling lld
Also, for OS unknown targets like wasm, don't include 'unknown' in the library path. This is a fix for rL316719. Differential Revision: https://reviews.llvm.org/D39354 llvm-svn: 316777
This commit is contained in:
parent
3fa55c5026
commit
471d7afdf0
|
@ -309,14 +309,12 @@ static StringRef getArchNameForCompilerRTLib(const ToolChain &TC,
|
|||
|
||||
std::string ToolChain::getCompilerRTPath() const {
|
||||
SmallString<128> Path(getDriver().ResourceDir);
|
||||
StringRef OSLibName;
|
||||
if (Triple.isOSFreeBSD())
|
||||
OSLibName = "freebsd";
|
||||
else if (Triple.isOSBinFormatWasm())
|
||||
OSLibName = "wasm";
|
||||
else
|
||||
OSLibName = getOS();
|
||||
llvm::sys::path::append(Path, "lib", OSLibName);
|
||||
if (Triple.isOSUnknown()) {
|
||||
llvm::sys::path::append(Path, "lib");
|
||||
} else {
|
||||
StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS();
|
||||
llvm::sys::path::append(Path, "lib", OSLibName);
|
||||
}
|
||||
return Path.str();
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,9 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
Args.AddAllArgs(CmdArgs, options::OPT_L);
|
||||
ToolChain.AddFilePathLibArgs(Args, CmdArgs);
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles))
|
||||
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt1.o")));
|
||||
|
||||
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
|
||||
|
|
|
@ -27,10 +27,10 @@
|
|||
|
||||
// RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo %s 2>&1 | FileCheck -check-prefix=LINK %s
|
||||
// LINK: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
||||
// LINK: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "{{.*[/\\]}}libclang_rt.builtins-wasm32.a" "-o" "a.out"
|
||||
// LINK: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib" "crt1.o" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "{{.*[/\\]}}libclang_rt.builtins-wasm32.a" "-o" "a.out"
|
||||
|
||||
// A basic C link command-line with optimization.
|
||||
|
||||
// RUN: %clang -### -O2 -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo %s 2>&1 | FileCheck -check-prefix=LINK_OPT %s
|
||||
// LINK_OPT: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
||||
// LINK_OPT: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "{{.*[/\\]}}libclang_rt.builtins-wasm32.a" "-o" "a.out"
|
||||
// LINK_OPT: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib" "crt1.o" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "{{.*[/\\]}}libclang_rt.builtins-wasm32.a" "-o" "a.out"
|
||||
|
|
Loading…
Reference in New Issue