arm-elf thumb-2 issue in newlib or gas?
Jeff Johnston
jjohnstn@redhat.com
Tue Apr 22 06:58:00 GMT 2008
info.gnu@rt-labs.com wrote:
> Hello
>
> I configure arm-elf with thumb-2 support but ran into problem when I came to
> Newlib
>
> $ ../newlib-1.16.0/configure --target=arm-elf
> --prefix=/proj/crossgcc/arm-elf --disable-nls
> --disable-newlib-supplied-syscalls --disable-newlib-mb
> --disable-newlib-io-pos-args --disable-newlib-io-long-long
> --disable-newlib-io-long-double --disable-newlib-iconv
> --enable-newlib-multithread
>
>
> arm-elf-gcc
> -B/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib/ -isystem
> /proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib/targ-include
> -isystem /proj/buildcross/build/newlib-1.16.0/newlib/libc/include
> -B/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/libgloss/arm
> -L/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/libgloss/libnosys
> -L/proj/buildcross/build/newlib-1.16.0/libgloss/arm -mthumb -march=armv7
> -O2 -D__NO_SYSCALLS__ -fno-builtin -mthumb -march=armv7 -c -o
> lib_a-setjmp.o `test -f 'setjmp.S' || echo
> '../../../../../../../../newlib-1.16.0/newlib/libc/machine/arm/'`setjmp.S
> ../../../../../../../../newlib-1.16.0/newlib/libc/machine/arm/setjmp.S:
> Assembler messages:
> ../../../../../../../../newlib-1.16.0/newlib/libc/machine/arm/setjmp.S:123:
> Error: SP not allowed in register list -- `stmea a1!,{v1-v7,fp,ip,sp,lr}'
> ../../../../../../../../newlib-1.16.0/newlib/libc/machine/arm/setjmp.S:145:
> Error: SP not allowed in register list -- `ldmfd a1!,{v1-v7,fp,ip,sp,lr}'
> make[9]: *** [lib_a-setjmp.o] Error 1
> make[9]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib/libc/machin
> e/arm'
> make[8]: *** [all-recursive] Error 1
> make[8]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib/libc/machin
> e'
> make[7]: *** [all-recursive] Error 1
> make[7]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib/libc'
> make[6]: *** [all-recursive] Error 1
> make[6]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib'
> make[5]: *** [all] Error 2
> make[5]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/thumb/thumb2/newlib'
> make[4]: *** [multi-do] Error 1
> make[4]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/newlib'
> make[3]: *** [all-multi] Error 2
> make[3]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/newlib'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory
> `/proj/buildcross/build/build_newlib/arm-elf/newlib'
> make[1]: *** [all-target-newlib] Error 2
> make[1]: Leaving directory `/proj/buildcross/build/build_newlib'
> make: *** [all] Error 2
>
>
> What is the correct solution, what I can see it is an issue in either
> setjmp.S using SP or the gas function triggering error for SP, or im a
> missing something else?
>
>
Nope, that seems to be about right. I would suggest you post to the gcc
list to see if the error is correct for the given compiler arguments.
There are __thumb__ and __thumb2__ flagged sections already in setjmp.S
and the particular insns above are not singled out.
-- Jeff J.
More information about the Newlib
mailing list