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