Newlib-3.3.0 build failed with gcc-9.3.0 armv6-m
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Wed Mar 25 18:02:47 GMT 2020
On 21/03/2020 17:45, bitmap kid via Newlib wrote:
> Hello,
>
> When I compile newlib with a gcc-9.3.0, i get the following error :
>
> arm-unknown-eabi-gcc
> -B/home/th/Downloads/newlib-3.3.0-build/arm-unknown-eabi/newlib/ -isystem
> /home/th/Downloads/newlib-3.3.0-build/arm-unknown-eabi/newlib/targ-include
> -isystem /home/th/Downloads/newlib-3.3.0/newlib/libc/include
> -B/home/th/Downloads/newlib-3.3.0-build/arm-unknown-eabi/libgloss/arm
> -L/home/th/Downloads/newlib-3.3.0-build/arm-unknown-eabi/libgloss/libnosys
> -L/home/th/Downloads/newlib-3.3.0/libgloss/arm -g -O2 -I.
> -I../../../../newlib-3.3.0/libgloss/arm/.. `if [ -d ./../../newlib ]; then
> echo -I../../../../newlib-3.3.0/libgloss/arm/../../newlib/libc/machine/arm;
> fi` -g -O2 -c ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S: Assembler messages:
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S:44: Error: SVC is
> not permitted on this architecture
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S:45: Error: SVC is
> not permitted on this architecture
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S:46: Error: SVC is
> not permitted on this architecture
> [...]
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S:102: Error: SVC is
> not permitted on this architecture
> ../../../../newlib-3.3.0/libgloss/arm/linux-syscalls0.S:103: Error: SVC is
> not permitted on this architecture
> make[3]: *** [Makefile:126 : linux-syscalls0.o] Erreur 1
>
> Not really surprising, because this GCC is armv6-m default arch, an
> unavailable coprocessor instructions cpu.
>
> Am I at an impasse ?
>
> Below, the newlib configure command :
>
> ../newlib-3.3.0/configure --prefix=/home/th/armv4vm-cc/
> --disable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld
> --with-gnu-as --disable-shared --disable-nls --enable-newlib-io-long-long
> --enable-newlib-io-long-double --enable-newlib-io-c99-formats
> --target=arm-unknown-eabi
>
> I I will not hide from you that I have not checked if this version of gcc
> is compatible with this one from newlib :(
>
> I thank you so much to help me to find a work around.
>
> thierry
>
SVC is supported by armv6s-m, which is a minor variant of the
architecture. You can use that if you want.
TLDR: the only difference between armv6-m and armv6s-m is how the SVC
opcode is handled by the hardware. In armv6s-m there is a specific
exception mode to handle it. In armv6-m this exception mode is lacking
and the instruction will take the undefined instruction exception (which
can then emulate the instruction if it so desires). Either can
therefore support SVC and the only difference is for 'kernel' code that
has to understand the different behaviours. There's a small performance
cost as well, of course, because the instruction has to be decoded first
if going via the undef instruction trap.
R.
More information about the Newlib
mailing list