Skip to content

Commit bfc9ae1

Browse files
committed
[Xtensa] Corrected Xtensa toolchain
Modified linker options. Added "no-rtti" directory to library search path in case of -fno-rtti option is in arguments. Added "-lgcc" option.
1 parent 72de7ca commit bfc9ae1

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

clang/lib/Driver/ToolChains/Xtensa.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -235,17 +235,20 @@ void Xtensa::Linker::ConstructJob(Compilation &C, const JobAction &JA,
235235
const char *LinkingOutput) const {
236236
const auto &TC =
237237
static_cast<const toolchains::XtensaToolChain &>(getToolChain());
238-
239-
if (!TC.XtensaGCCToolchain.IsValid())
240-
llvm_unreachable("Unable to find Xtensa GCC linker");
241-
238+
std::string Slash = TC.XtensaGCCToolchain.Slash;
242239
std::string LibDir = "";
240+
243241
if ((Args.getLastArg(options::OPT_mfix_esp32_psram_cache_issue) != nullptr) ||
244-
(Args.getLastArg(options::OPT_malways_memw) != nullptr)) {
245-
LibDir = "esp32-psram";
242+
(Args.getLastArg(options::OPT_malways_memw) != nullptr)) {
243+
LibDir = "esp32-psram" + Slash;
246244
}
247245

248-
std::string Slash = TC.XtensaGCCToolchain.Slash;
246+
if ((Args.getLastArg(options::OPT_fno_rtti) != nullptr)) {
247+
LibDir += "no-rtti" + Slash;
248+
}
249+
250+
if (!TC.XtensaGCCToolchain.IsValid())
251+
llvm_unreachable("Unable to find Xtensa GCC linker");
249252

250253
std::string Linker = getToolChain().getDriver().Dir + Slash +
251254
TC.XtensaGCCToolchain.GCCToolchainName + "-ld";
@@ -257,26 +260,25 @@ void Xtensa::Linker::ConstructJob(Compilation &C, const JobAction &JA,
257260

258261
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA);
259262

260-
std::string Libs =
261-
TC.XtensaGCCToolchain.GCCToolchainDir + Slash + "lib" + Slash + "gcc" +
262-
Slash + TC.XtensaGCCToolchain.GCCToolchainName + Slash +
263-
TC.XtensaGCCToolchain.GCCLibAndIncVersion + Slash + LibDir + Slash;
263+
std::string Libs = TC.XtensaGCCToolchain.GCCToolchainDir + Slash + "lib" +
264+
Slash + "gcc" + Slash +
265+
TC.XtensaGCCToolchain.GCCToolchainName + Slash +
266+
TC.XtensaGCCToolchain.GCCLibAndIncVersion + Slash + LibDir;
264267
CmdArgs.push_back("-L");
265268
CmdArgs.push_back(Args.MakeArgString(Libs));
266269

267270
Libs = TC.XtensaGCCToolchain.GCCToolchainDir + Slash +
268271
TC.XtensaGCCToolchain.GCCToolchainName + Slash + "lib" + Slash +
269-
LibDir + Slash;
272+
LibDir;
270273
CmdArgs.push_back("-L");
271274
CmdArgs.push_back(Args.MakeArgString(Libs));
272275

273-
CmdArgs.push_back("-v");
276+
CmdArgs.push_back("-lgcc");
274277

275278
CmdArgs.push_back("-o");
276279
CmdArgs.push_back(Output.getFilename());
277280
C.addCommand(
278281
std::make_unique<Command>(JA, *this, ResponseFileSupport::AtFileCurCP(),
279-
Args.MakeArgString(Linker),
280-
CmdArgs, Inputs));
282+
Args.MakeArgString(Linker), CmdArgs, Inputs));
281283
}
282284

0 commit comments

Comments
 (0)