Re: Newlib-3.3.0 build failed with gcc-9.3.0 armv6-m

bitmap kid via Newlib <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAPeH3Xw0hBRZcjF01RJr0ssYu=PGNjej9iyGA+CAKjD56JwQsA@mail.gmail.com>
Thank you both for the advice and details.

Laboriously, I arrived at a solution which suits me. Precede the call to
./configure by setting the flag CFLAGS_FOR_TARGET with the following values:

CFLAGS_FOR_TARGET='- mcpu=arm7tdmi -marm -mlittle-endian -mfloat-abi=soft
-O0' ../newlib-3.3.0/configure --prefix = ... etc.

That does the job. Thank you again.

Le mer. 25 mars 2020 à 19:02, Richard Earnshaw (lists) <
[email protected]> a écrit :

> 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.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.