Compiling crtstuff.c with arm-elf-gcc 4.0.3 for -mthumb -fPIC -msingle-pic-base fails. I had no trouble compiling GCC 4.1.1.
Cheers, Shaun make[3]: Leaving directory `/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc' make GCC_FOR_TARGET="/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc/xgcc -B/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc/ -B/usr/local/arm-elf/bin/ -B/usr/local/arm-elf/lib/ -isystem /usr/local/arm-elf/include -isystem /usr/local/arm-elf/sys-include" \ AR_FOR_TARGET="arm-elf-ar" \ AR_CREATE_FOR_TARGET="arm-elf-ar rc" \ AR_EXTRACT_FOR_TARGET="arm-elf-ar x" \ AR_FLAGS_FOR_TARGET="" \ CC="gcc" CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes-Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition " \ BUILD_PREFIX="" \ BUILD_PREFIX_1="loser-" \ LANGUAGES="" \ LIBGCC2_CFLAGS="-O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -Dinhibit_libc -fno-inline -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -mthumb -fPIC -msingle-pic-base " \ MULTILIB_CFLAGS=" -mthumb -fPIC -msingle-pic-base" T=thumb/pic/xip/ thumb/pic/xip/crtbegin.o thumb/pic/xip/crtend.o thumb/pic/xip/crti.o thumb/pic/xip/crtn.o make[3]: Entering directory `/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc' /home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc/xgcc -B/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc/ -B/usr/local/arm-elf/bin/ -B/usr/local/arm-elf/lib/-isystem /usr/local/arm-elf/include -isystem /usr/local/arm-elf/sys-include -O2-DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -Ithumb/pic/xip -I../../gcc -I../../gcc/thumb/pic/xip -I../../gcc/../include -I../../gcc/../libcpp/include -mthumb -fPIC -msingle-pic-base -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-unit-at-a-time \ -Dinhibit_libc -c ../../gcc/crtstuff.c -DCRT_BEGIN \ -o thumb/pic/xip/crtbegin.o ../../gcc/crtstuff.c: In function 'frame_dummy': ../../gcc/crtstuff.c:325: internal compiler error: in thumb_find_work_register,at config/arm/arm.c:3140 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make[3]: *** [thumb/pic/xip/crtbegin.o] Error 1 make[3]: Leaving directory `/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc' make[2]: *** [extrathumb_pic_xip] Error 2 make[2]: Leaving directory `/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc' make[1]: *** [stmp-multilib] Error 2 make[1]: Leaving directory `/home/sjackman/src/toolchain/gcc-4.0.3/_build/gcc' make: *** [all-gcc] Error 2