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. >