Arm cross gcc-3.4.0, glibc-2.3.2, binutils-1.1[45] build failure.
Ken Wolcott
ken.wolcott@med.ge.com
Sun May 23 01:24:00 GMT 2004
I suggest using crosstool (http://www.kegel.com/crosstool/)...
also take a look at the crossgcc mailing list
(http://sources.redhat.com/ml/crossgcc/)
On Fri, 2004-05-21 at 10:28, Jonathan Marks wrote:
> 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"
>
>
> -------------------------------------------------------------------
> Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
> FAQ/Etiquette: http://www.arm.linux.org.uk/armlinux/mailinglists.php
------
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