[WebAssembly] Add default -allow-undefined-file to linker args
Also, don't use the outdated lib32/lib64 naming of files within the sysroot. The more modern/flexible approach IIUC is to use seperate sysroots or /lib/<target-tripple> and /include/<target-tripple>. Differential Revision: https://reviews.llvm.org/D33565 llvm-svn: 306074
This commit is contained in:
parent
9bd593e0d7
commit
8202e86a99
|
@ -83,6 +83,8 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
if (Args.hasArg(options::OPT_pthread))
|
if (Args.hasArg(options::OPT_pthread))
|
||||||
CmdArgs.push_back("-lpthread");
|
CmdArgs.push_back("-lpthread");
|
||||||
|
|
||||||
|
CmdArgs.push_back("-allow-undefined-file");
|
||||||
|
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("wasm.syms")));
|
||||||
CmdArgs.push_back("-lc");
|
CmdArgs.push_back("-lc");
|
||||||
CmdArgs.push_back("-lcompiler_rt");
|
CmdArgs.push_back("-lcompiler_rt");
|
||||||
}
|
}
|
||||||
|
@ -104,8 +106,7 @@ WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple,
|
||||||
|
|
||||||
getProgramPaths().push_back(getDriver().getInstalledDir());
|
getProgramPaths().push_back(getDriver().getInstalledDir());
|
||||||
|
|
||||||
getFilePaths().push_back(
|
getFilePaths().push_back(getDriver().SysRoot + "/lib");
|
||||||
getDriver().SysRoot + "/lib" + (Triple.isArch32Bit() ? "32" : "64"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebAssembly::IsMathErrnoDefault() const { return false; }
|
bool WebAssembly::IsMathErrnoDefault() const { return false; }
|
||||||
|
|
|
@ -27,18 +27,18 @@
|
||||||
|
|
||||||
// RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo %s 2>&1 | FileCheck -check-prefix=LINK %s
|
// 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: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
||||||
// LINK: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib32" "crt1.o" "crti.o" "[[temp]]" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
// LINK: lld{{.*}}" "-flavor" "wasm" "-L/foo/lib" "crt1.o" "crti.o" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
||||||
|
|
||||||
// A basic C link command-line with optimization. WebAssembly is somewhat
|
// A basic C link command-line with optimization. WebAssembly is somewhat
|
||||||
// special in enabling --gc-sections by default.
|
// special in enabling --gc-sections by default.
|
||||||
|
|
||||||
// RUN: %clang -### -O2 -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo %s 2>&1 | FileCheck -check-prefix=LINK_OPT %s
|
// 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: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
||||||
// LINK_OPT: lld{{.*}}" "-flavor" "wasm" "--gc-sections" "-L/foo/lib32" "crt1.o" "crti.o" "[[temp]]" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
// LINK_OPT: lld{{.*}}" "-flavor" "wasm" "--gc-sections" "-L/foo/lib" "crt1.o" "crti.o" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
||||||
|
|
||||||
// Ditto, but ensure that a user --no-gc-sections comes after the
|
// Ditto, but ensure that a user --no-gc-sections comes after the
|
||||||
// default --gc-sections.
|
// default --gc-sections.
|
||||||
|
|
||||||
// RUN: %clang -### -O2 -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo -Wl,--no-gc-sections %s 2>&1 | FileCheck -check-prefix=NO_GC_SECTIONS %s
|
// RUN: %clang -### -O2 -no-canonical-prefixes -target wasm32-unknown-unknown --sysroot=/foo -Wl,--no-gc-sections %s 2>&1 | FileCheck -check-prefix=NO_GC_SECTIONS %s
|
||||||
// NO_GC_SECTIONS: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
// NO_GC_SECTIONS: clang{{.*}}" "-cc1" {{.*}} "-o" "[[temp:[^"]*]]"
|
||||||
// NO_GC_SECTIONS: lld{{.*}}" "-flavor" "wasm" "--gc-sections" "-L/foo/lib32" "crt1.o" "crti.o" "--no-gc-sections" "[[temp]]" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
// NO_GC_SECTIONS: lld{{.*}}" "-flavor" "wasm" "--gc-sections" "-L/foo/lib" "crt1.o" "crti.o" "--no-gc-sections" "[[temp]]" "-allow-undefined-file" "wasm.syms" "-lc" "-lcompiler_rt" "crtn.o" "-o" "a.out"
|
||||||
|
|
Loading…
Reference in New Issue