GDC 9 and ARM Cortex-M

Timo Sintonen t.sintonen at luukku.com
Sun May 19 13:57:36 UTC 2019


On Sunday, 19 May 2019 at 10:49:51 UTC, Mike Franklin wrote:
> On Sunday, 19 May 2019 at 06:54:14 UTC, Timo Sintonen wrote:
>> I am updating my toolset and libraries to GCC/GDC 9.1 release. 
>> First impression is that druntime needs more work than with 
>> previous versions. Many places to change and even compiler 
>> crashes when compiling some files.
>>
>> Before I look further I want to ask if there has been any 
>> testing with this target (cross compiler linux->arm-eabi). Is 
>> it expected to work, not to work or not tested at all.
>
> Several months ago, I used this script 
> (https://github.com/JinShil/native-gdc/blob/master/native-gdc.sh) to build a native GDC compiler.  I then used that compiler by way of this script (https://github.com/JinShil/arm-none-eabi-gdc/blob/master/arm-none-eabi-gdc.sh) to build an arm-none-eabi cross-compiler from head.
>
> I then used that cross-compiler to build this ARM Cortex-M 
> project (https://github.com/JinShil/stm32f42_discovery_demo). 
> Everything worked fine.
>
> I don't know if that helps, but that's my experience for 
> whatever it's worth.
>
> Mike

As we know there is always three possible sources of failure:
- the compiler sources may have a bug
- my local tools (gcc binutils etc) may build a buggy compiler
- my use of the built compiler is wrong (compiler flags etc)

This is what I currently use to build the compiler. C compilers 
built with this are used in production.

cat >file <<EOF
MULTILIB_OPTIONS  += 
mcpu=cortex-m0/mcpu=cortex-m0plus/mcpu=cortex-m3/mcpu=cortex-m4/mcpu=cortex-m7  mfloat-abi=hard mfpu=fpv4-sp-d16 mfpu=fpv5-sp-d16
MULTILIB_DIRNAMES += cortex-m0 cortex-m0plus cortex-m3 cortex-m4 
cortex-m7 hardfp fpv4 fpv5
MULTILIB_REQUIRED += mcpu=cortex-m0
MULTILIB_REQUIRED += mcpu=cortex-m0plus
MULTILIB_REQUIRED += mcpu=cortex-m3
MULTILIB_REQUIRED += 
mcpu=cortex-m4/mfloat-abi=hard/mfpu=fpv4-sp-d16
MULTILIB_REQUIRED += 
mcpu=cortex-m7/mfloat-abi=hard/mfpu=fpv5-sp-d16
MULTILIB_EXTRA_OPTS += mthumb

EOF
cp file gcc/gcc/config/arm/t-arm-elf

rm -rf build-gcc
mkdir build-gcc
cd build-gcc

../gcc/configure --disable-bootstrap --disable-nls 
--disable-werror \
--target=arm-eabi --enable-languages=c,d \
--without-isl --without-cloog \
--enable-multilib --disable-libphobos \
--disable-libstdcxx  --disable-libssp --disable-libquadmath \
--without-headers --with-newlib --with-system-zlib



More information about the D.gnu mailing list