Skip to content

Commit 40ae542

Browse files
authored
[MSP430] Further toolchain description updates (#20)
* Define __ELF__ preprocessor macro, as set by msp430gcc and as expected by compiler-rt * Support switching libgcc and compiler-rt
1 parent 1bd97c0 commit 40ae542

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

clang/lib/Basic/Targets/MSP430.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ void MSP430TargetInfo::getTargetDefines(const LangOptions &Opts,
2929
MacroBuilder &Builder) const {
3030
Builder.defineMacro("MSP430");
3131
Builder.defineMacro("__MSP430__");
32+
Builder.defineMacro("__ELF__");
3233
// FIXME: defines for different 'flavours' of MCU
3334
}

clang/lib/Driver/ToolChains/MSP430.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ void msp430::Linker::ConstructJob(Compilation &C, const JobAction &JA,
219219

220220
CmdArgs.push_back("--start-group");
221221
CmdArgs.push_back(Args.MakeArgString(getHWMultLib(Args)));
222-
CmdArgs.push_back("-lgcc");
222+
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
223223
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
224224
CmdArgs.push_back("-lc");
225225
CmdArgs.push_back("-lcrt");
@@ -231,7 +231,7 @@ void msp430::Linker::ConstructJob(Compilation &C, const JobAction &JA,
231231
const char *crtend = Args.hasArg(options::OPT_fexceptions) ?
232232
"crtend.o" : "crtend_no_eh.o";
233233
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
234-
CmdArgs.push_back("-lgcc");
234+
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
235235
}
236236
CmdArgs.push_back("-o");
237237
CmdArgs.push_back(Output.getFilename());

clang/lib/Driver/ToolChains/MSP430.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ class LLVM_LIBRARY_VISIBILITY MSP430ToolChain : public Generic_ELF {
4040
bool isPIEDefault() const override { return false; }
4141
bool isPICDefaultForced() const override { return true; }
4242

43+
UnwindLibType
44+
GetUnwindLibType(const llvm::opt::ArgList &Args) const override {
45+
return UNW_None;
46+
}
47+
4348
protected:
4449
Tool *buildLinker() const override;
4550

clang/test/Driver/msp430-toolchain.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@
2020
// RUN: --gcc-toolchain=%S/Inputs/basic_msp430_tree --sysroot="" 2>&1 \
2121
// RUN: | FileCheck -check-prefix=MSP430-EXC %s
2222

23+
// RUN: %clang %s -### -no-canonical-prefixes -target msp430 --rtlib=compiler-rt \
24+
// RUN: --gcc-toolchain=%S/Inputs/basic_msp430_tree --sysroot="" 2>&1 \
25+
// RUN: | FileCheck -check-prefix=MSP430-CLANG-RT %s
26+
27+
// MSP430-CLANG-RT: "{{.*}}Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/../../..{{/|\\\\}}..{{/|\\\\}}bin{{/|\\\\}}msp430-elf-ld"
28+
// MSP430-CLANG-RT: "-L{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/430"
29+
// MSP430-CLANG-RT: "-L{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/../../..{{/|\\\\}}..{{/|\\\\}}msp430-elf{{/|\\\\}}lib/430"
30+
// MSP430-CLANG-RT: "{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/../../..{{/|\\\\}}..{{/|\\\\}}msp430-elf{{/|\\\\}}lib/430{{/|\\\\}}crt0.o"
31+
// MSP430-CLANG-RT: "{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/430{{/|\\\\}}crtbegin_no_eh.o"
32+
// MSP430-CLANG-RT: "--start-group" "-lmul_none" "{{.*}}libclang_rt.builtins-msp430.a" "-lc" "-lcrt" "-lnosys" "--end-group"
33+
// MSP430-CLANG-RT: "{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/430{{/|\\\\}}crtend_no_eh.o" "{{.*}}libclang_rt.builtins-msp430.a"
34+
2335
// MSP430-EXC: "{{.*}}Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/../../..{{/|\\\\}}..{{/|\\\\}}bin{{/|\\\\}}msp430-elf-ld"
2436
// MSP430-EXC: "-L{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/430/exceptions"
2537
// MSP430-EXC: "-L{{.*}}/Inputs/basic_msp430_tree/lib/gcc/msp430-elf/8.3.1/../../..{{/|\\\\}}..{{/|\\\\}}msp430-elf{{/|\\\\}}lib/430/exceptions"

0 commit comments

Comments
 (0)