I finally got a GDC cross-compiler built for the ARM Cortex-M, and it seems to generated executable code (code that can be executed). I'm working on getting a *very* minimal D runtime so I can run a simple semihosted hello world program as I did with LDC here (http://wiki.dlang.org/Extremely_minimal_semihosted_%22Hello_World%22). Please see the code there if you would like more context.

In my program, on this statement...

uint[3] message =
      [
        2,                            //stderr
        cast(uint)"hello\r\n".ptr,    //ptr to string
        7                             //size of string
      ];

...GDC seems to generate a call to _d_arraycopy, which I've implemented, and another call to _d_arrayliteralTX, which I don't want to implement because it does a dynamic memory allocation.

I argue that this code should call neither _d_arraycopy, nor _d_arrayliteralTX because I believe everything should be known at compile time.

Is this a bug, by design, a temporary convenience? Please advise and offer your suggestions?

Host: ArchLinux 64
arm-none-eabi-gdc (GCC) 4.8.2

Compilation: arm-none-eabi-gdc -march=armv7e-m -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -fno-emit-moduleinfo -c -ffunction-sections -fno-exceptions -fdata-sections start.d object.d Link: arm-none-eabi-ld -nodefaultlibs -nostdlib -nophoboslib -nostartfiles --gc-sections object.o start.o -o start.elf

Thanks,
Mike

Reply via email to