[oe] uclibc build failure on armv4t with -mthumb (internal compiler error)

David Huggins-Daines dhuggins at cs.cmu.edu
Fri Apr 3 20:54:59 UTC 2009


I'm having trouble building uclibc in thumb mode for armv4t.  It is 
getting an internal compiler error when compiling ldso.  The error 
message is:

NOTE: make STRIPTOOL=true LD=arm-angstrom-linux-uclibcgnueabi-ld 
LOCALE_DATA_FILENAME=uClibc-locale-030818.arm.tgz CC=ccache 
arm-angstrom-linux-uclibcgnueabi-gcc -march=armv4t -mtune=arm920t 
-mthumb-interwork -mthumb 
HOSTCFLAGS=-I/home/dhuggins/Projects/TeRK/oe/tmp/staging/x86_64-linux/usr/include
  CC ldso/ldso/ldso.oS
ldso/ldso/dl-elf.c: In function '_dl_dprintf':
ldso/ldso/dl-elf.c:913: error: unable to find a register to spill in 
class 'LO_REGS'
ldso/ldso/dl-elf.c:913: error: this is the insn:
(insn 121 120 122 6 (set (reg/f:SI 406)
        (plus:SI (reg/f:SI 25 sfp)
            (reg:SI 405))) 5 {*thumb_addsi3} (nil)
    (expr_list:REG_DEAD (reg:SI 405)
        (nil)))
ldso/ldso/dl-elf.c:913: confused by earlier errors, bailing out
make: *** [ldso/ldso/ldso.oS] Error 1
FATAL: oe_runmake failed

I'm using the stable/2009 branch and this is GCC 4.2.4-r5

I believe there were some patches for this recently (in particular, 
building ldso with -O0) but I'm still getting the error - note that it 
is in a different function than the one seen earlier.

I worked around this by forcing ldso to compile with the ARM instruction 
set, but I'm not sure if this is the right approach or not.




More information about the Openembedded-devel mailing list