Arm cross gcc-3.4.0, glibc-2.3.2, binutils-1.1[45] build failure.
Jonathan Marks
jonathan@wideray.com
Fri May 21 14:20:00 GMT 2004
Hi,
Perhaps someone can help, please.
Building on a RH9.0 box, with either a RH9.0 gcc, or gcc-3.4.0 as the native compiler.
I get the same failure using binutils-2.14 or 2.15. If I use gcc-3.3.2, the compile
works fine.
Here's the reported failure.
sed -n -e '1,/@HEADER_ENDS/p' \
-e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
-e '/@TRAILER_BEGINS/,$p' /usr/src/xscale/glibc-2.3.2-bld/csu/initfini.s > /usr/src/xscale/glibc-2.3.2-bld/csu/crti.S
sed -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' /usr/src/xscale/glibc-2.3.2-bld/csu/initfini.s | \
gawk -f defs.awk > /usr/src/xscale/glibc-2.3.2-bld/csu/defs.h
arm-linux-gcc /usr/src/xscale/glibc-2.3.2-bld/csu/crti.S -c -I../include -I. -I/usr/src/xscale/glibc-2.3.2-bld/csu -I.. -I../libio
-I/usr/src/xscale/glibc-2.3.2-bld -I../sysdeps/arm/elf -I../linuxthreads/sysdeps/unix/sysv/linux/arm
-I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv
-I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/arm -I../sysdeps/unix/sysv/linux/arm -I../sysdeps/unix/sysv/linux
-I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/arm
-I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32
-I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem
/usr/local/xscale/3.4.0/lib/gcc/arm-linux/3.4.0/include -isystem /usr/src/xscale/elroy-jack/sw/linux-2.6.6/include -D_LIBC_REENTRANT
-include ../include/libc-symbols.h -DHAVE_INITFINI -DASSEMBLER -I/usr/src/xscale/glibc-2.3.2-bld/csu/. -g0 -o
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.o
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S: Assembler messages:
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S:96: Error: can't resolve `_GLOBAL_OFFSET_TABLE_' {*UND* section} - `.L7' {.text section}
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S:61: Error: internal_relocation (type: OFFSET_IMM) not fixed up
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S:62: Error: internal_relocation (type: OFFSET_IMM) not fixed up
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S:63: Error: internal_relocation (type: OFFSET_IMM) not fixed up
/usr/src/xscale/glibc-2.3.2-bld/csu/crti.S:64: Error: internal_relocation (type: OFFSET_IMM) not fixed up
make[2]: *** [/usr/src/xscale/glibc-2.3.2-bld/csu/crti.o] Error 1
make[2]: Leaving directory `/usr/src/xscale/glibc-2.3.2/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory `/usr/src/xscale/glibc-2.3.2'
make: *** [all] Error 2
Here's a summary of the build process:
../binutils-2.14/configure --target=arm-linux --prefix=/usr/local/xscale/3.4.0 --host=i686-pc-linux-gnu --with-cpu=xscale
make
make install
../gcc-3.4.0/configure --target=arm-linux --prefix=/usr/local/xscale/3.4.0 --host=i686-pc-linux-gnu --with-cpu=xscale \
--with-headers=/usr/src/xscale/elroy-jack/sw/linux-2.6.6/include --disable-shared --disable-threads --enable-languages=c \
--with-float=soft --disable-nls --enable--symvers=gnu --enable-__cxa_atexit
make
make install
../glibc-2.3.2/configure --host=arm-linux --build=i686-pc-linux-gnu \
--with-headers=/usr/src/xscale/elroy-jack/sw/linux-2.6.6/include \
--enable-add-ons=linuxthreads --enable-shared --prefix=/usr/local/xscale/3.4.0 \
--with-cpu=xscale --without-fp --enable-kernel=2.6.6
make
make install
So what have I found out so far?
A file .../sysdeps/generic/initfini.c is run through the compiler and generates an assembler file ..../csu/initfini.s.
Below is a copy of initfini.s It looks like the compiler did not do too good a job of generating it.
The gcc-3.3.2 compiler did a much better job. Note how _BEGIN's and _END's are mixed up -
eg. PROLOG_BEGIN with EPILOG_END. We all know what we can expect when this file is passed through sed - as shown in
the transscript snippet.
Anyone know what I can do to fix it.
Thanks
Jonathan
>>>>>>>>>>>>>>>>>>>>>>>>>>
.file "initfini.c"
#APP
#include "defs.h"
/*@HEADER_ENDS*/
/*@TESTS_BEGIN*/
/*@TESTS_END*/
/*@_init_PROLOG_BEGINS*/
.section .init
END_INIT
/*@_init_EPILOG_ENDS*/
/*@_fini_PROLOG_BEGINS*/
.section .fini
END_FINI
/*@_fini_EPILOG_ENDS*/
/*@TRAILER_BEGINS*/
.text
.align 2
.global dummy
.type dummy, %function
dummy:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
cmp r0, #0
str lr, [sp, #-4]!
ldreq pc, [sp], #4
mov lr, pc
mov pc, r0
ldr pc, [sp], #4
.align 2
.global _init
.type _init, %function
_init:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {sl, lr}
ldr sl, .L8
ldr r3, .L8+4
.L7:
add sl, pc, sl
ldr r3, [sl, r3]
cmp r3, #0
movne lr, pc
movne pc, r3
.L6:
#APP
ALIGN
END_INIT
/*@_init_PROLOG_ENDS*/
/*@_init_EPILOG_BEGINS*/
.section .init
ldmfd sp!, {sl, pc}
.L9:
.align 2
.L8:
.word _GLOBAL_OFFSET_TABLE_-(.L7+8)
.word __gmon_start__(GOT)
.align 2
.global _fini
.type _fini, %function
_fini:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
str lr, [sp, #-4]!
#APP
ALIGN
END_FINI
/*@_fini_PROLOG_ENDS*/
bl i_am_not_a_leaf(PLT)
#APP
/*@_fini_EPILOG_BEGINS*/
.section .fini
ldr pc, [sp], #4
.weak __gmon_start__
.ident "GCC: (GNU) 3.4.0"
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list