LDC with MSP430

Nicholas Wilson via digitalmars-d-ldc digitalmars-d-ldc at puremagic.com
Mon Jun 19 23:52:05 PDT 2017


On Tuesday, 20 June 2017 at 01:51:14 UTC, Luís Marques wrote:
> Hello,
>
> In the past I used LDC for bare metal programming of a RISC-V, 
> simply by tweaking the white list of accepted architectures. I 
> tried to do the same for the MSP430, but in this case it seems 
> some other things will have to be tweaked. This might be 
> something easy for someone more familiar with the LDC/LLVM 
> codebase, so could anyone give a helping hand here?
>
> The issue so far seems to be that LDC gets confused about the 
> data type sizes, probably because the MSP430 has a 16-bit CPU 
> core (C ints are 16 bit):
>
> ```
> Assertion failed: (llSize <= dSize && "LLVM type is bigger than 
> the corresponding D type, " "might lead to aggregate layout 
> mismatch."), function getMemberSize, file 
> ../gen/llvmhelpers.cpp, line 1351.
> 0  ldc2                     0x00000001034bbc9c 
> llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 60
> 1  ldc2                     0x00000001034bc1e9 
> PrintStackTraceSignalHandler(void*) + 25
> 2  ldc2                     0x00000001034b8139 
> llvm::sys::RunSignalHandlers() + 425
> 3  ldc2                     0x00000001034bc642 
> SignalHandler(int) + 354
> 4  libsystem_platform.dylib 0x00007fffcee36b3a _sigtramp + 26
> 5  ldc2                     0x000000010396ce00 cppmain(int, 
> char**)::DL + 48
> 6  libsystem_c.dylib        0x00007fffcecbb420 abort + 129
> 7  libsystem_c.dylib        0x00007fffcec82893 basename_r + 0
> 8  ldc2                     0x000000010145dbbf 
> getMemberSize(Type*) + 175
> 9  ldc2                     0x000000010154ddc8 
> AggrTypeBuilder::addAggregate(AggregateDeclaration*, 
> std::__1::map<VarDeclaration*, llvm::Constant*, 
> std::__1::less<VarDeclaration*>, 
> std::__1::allocator<std::__1::pair<VarDeclaration* const, 
> llvm::Constant*> > > const*, AggrTypeBuilder::Aliases) + 2824
> 10 ldc2                     0x000000010154d2b6 
> AggrTypeBuilder::addAggregate(AggregateDeclaration*) + 38
> 11 ldc2                     0x000000010155199e 
> IrTypeClass::addClassData(AggrTypeBuilder&, ClassDeclaration*) 
> + 414
> 12 ldc2                     0x00000001015520f4 
> IrTypeClass::get(ClassDeclaration*) + 612
> 13 ldc2                     0x000000010150ae3e DtoType(Type*) + 
> 958
> 14 ldc2                     0x0000000101549d0e 
> IrFuncTyArg::IrFuncTyArg(Type*, bool, AttrBuilder) + 126
> 15 ldc2                     0x0000000101549dbc 
> IrFuncTyArg::IrFuncTyArg(Type*, bool, AttrBuilder) + 44
> 16 ldc2                     0x000000010143eb3c 
> DtoFunctionType(Type*, IrFuncTy&, Type*, Type*, bool, bool, 
> bool, bool) + 3468
> 17 ldc2                     0x00000001015552ac 
> IrTypeFunction::get(Type*) + 220
> 18 ldc2                     0x000000010150ae6e DtoType(Type*) + 
> 1006
> 19 ldc2                     0x00000001014c6ce5 
> createFwdDecl(LINK, Type*, llvm::ArrayRef<llvm::StringRef>, 
> llvm::ArrayRef<Type*>, llvm::ArrayRef<unsigned long>, AttrSet) 
> + 373
> 20 ldc2                     0x00000001014b708f 
> buildRuntimeModule() + 9327
> 21 ldc2                     0x00000001014b4c02 initRuntime() + 
> 50
> 22 ldc2                     0x0000000101473178 
> codegenModule(IRState*, Module*) + 248
> 23 ldc2                     0x000000010158a3ac 
> ldc::CodeGenerator::emit(Module*) + 300
> 24 ldc2                     0x00000001015d8e4e 
> codegenModules(Array<Module*>&) + 574
> 25 ldc2                     0x00000001012949c0 
> mars_mainBody(Array<char const*>&, Array<char const*>&) + 5120
> ```
>
> (BTW, I used -mtriple=msp430, since `msp430-gcc -dumpmachine` 
> gives out that "triple")

What data layout is being used? Can you get clang to `-emit-llvm` 
and look at the resulting file 2nd line?

should look like target datalayout = "..." .Please post the ...

  also please also compile with `-vv` and post the last section of 
diagnostics printed (warning it spits out a lot), the length of 
the backtrace should suffice.

Nic


More information about the digitalmars-d-ldc mailing list