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