https://github.com/yamt created https://github.com/llvm/llvm-project/pull/104755
cf. https://github.com/WebAssembly/wasi-libc/pull/528 >From 9cd6ddd576c70dfd21c35ae4721ee9f2e03d986f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi <yamam...@midokura.com> Date: Mon, 19 Aug 2024 19:14:04 +0900 Subject: [PATCH] [clang][WebAssembly] Link crt2-command.o if available cf. https://github.com/WebAssembly/wasi-libc/pull/528 --- clang/lib/Driver/ToolChains/WebAssembly.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index 9aacda5fd5702f..7b95b95e3eee8d 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -103,6 +103,7 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA, bool IsCommand = true; const char *Crt1; + const char *Crt2 = nullptr; const char *Entry = nullptr; // When -shared is specified, use the reactor exec model unless @@ -132,13 +133,21 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA, Crt1 = "crt1.o"; if (ToolChain.GetFilePath("crt1-command.o") != "crt1-command.o") Crt1 = "crt1-command.o"; + // Link another object as well if it's provided. It's planned to + // be used to fix https://github.com/WebAssembly/wasi-libc/issues/485 + if (ToolChain.GetFilePath("crt2-command.o") != "crt2-command.o") { + Crt2 = "crt2-command.o"; + } } else { Crt1 = "crt1-reactor.o"; Entry = "_initialize"; } - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(Crt1))); + if (Crt2) + CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(Crt2))); + } if (Entry) { CmdArgs.push_back(Args.MakeArgString("--entry")); CmdArgs.push_back(Args.MakeArgString(Entry)); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits