[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Building cross armel toolchain



On 2007-03-08 10:55 -0800, K. Richard Pixley wrote:
>    Wookey wrote:
> 
>  On 2007-03-05 10:42 -0800, K. Richard Pixley wrote:
> 
> 
>  Try running that last command manually with a -v.  I suspect that you
>  aren't getting the ld that you think you are and the -v will verify that.
> 
> 
>  Good idea.
> 
>  Like this:? ( I don't see anything obviously wrong there, nor do I see
>  it telling me excalty which ld it is using.)
> 
>  "/lib/ld-linux.so.3"  Looks wrong to me, but I think that's a different issue.
> 
>  Try LDFLAGS="-Xlinker -v".

This doesn't appear to change the output at all.

>  Collect2 is a cover for the linker.  That is, it calls the linker.

I can;t find any info on collect2 syntax/options. I had a look at
ld/gcc info and found -print-libgcc-file-name and -print-prog-name=ld

so /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/xgcc -v -print-prog-name=ld
gives:
Using built-in specs.
/usr/lib/gcc/../../arm-linux-gnueabi/bin/ld

and /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/xgcc -v
-print-libgcc-file-name
gives:
Using built-in specs.
libgcc.a

aha. adding -Xlinker -v to the gcc line directly does the trick:
Reading specs from /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/specs
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.1.2 --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-checking=release --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include --build=i486-linux-gnu --host=i486-linux-gnu --target=arm-linux-gnueabi 
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
 /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/collect2 --eh-frame-hdr -shared -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o ./libgcc_s.so.1.tmp /usr/arm-linux-gnueabi/lib/crti.o
/usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/crtbeginS.o -L/usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc -L/usr/arm-linux -L/usr/arm-linux-gnueabi/lib
-L/usr/lib/gcc/../../arm-linux-gnueabi/lib -v --soname=libgcc_s.so.1 --version-script=libgcc/./libgcc.map -O1 libgcc/./_udivsi3_s.o libgcc/./_divsi3_s.o libgcc/./_umodsi3_s.o libgcc/./_modsi3_s.o
libgcc/./_bb_init_func_s.o libgcc/./_call_via_rX_s.o libgcc/./_interwork_call_via_rX_s.o libgcc/./_lshrdi3_s.o libgcc/./_ashrdi3_s.o libgcc/./_ashldi3_s.o libgcc/./_negdf2_s.o
libgcc/./_addsubdf3_s.o libgcc/./_muldivdf3_s.o libgcc/./_cmpdf2_s.o libgcc/./_unorddf2_s.o libgcc/./_fixdfsi_s.o libgcc/./_fixunsdfsi_s.o libgcc/./_truncdfsf2_s.o libgcc/./_negsf2_s.o libgcc/./_addsubsf3_s.o
libgcc/./_muldivsf3_s.o libgcc/./_cmpsf2_s.o libgcc/./_unordsf2_s.o libgcc/./_fixsfsi_s.o libgcc/./_fixunssfsi_s.o libgcc/./_floatdidf_s.o libgcc/./_floatdisf_s.o libgcc/./_aeabi_lcmp_s.o
libgcc/./_aeabi_ulcmp_s.o libgcc/./_aeabi_ldivmod_s.o libgcc/./_aeabi_uldivmod_s.o libgcc/./_dvmd_lnx_s.o libgcc/./_muldi3_s.o libgcc/./_negdi2_s.o libgcc/./_cmpdi2_s.o
libgcc/./_ucmpdi2_s.o libgcc/./_clear_cache_s.o libgcc/./_enable_execute_stack_s.o libgcc/./_trampoline_s.o libgcc/./__main_s.o libgcc/./_absvsi2_s.o libgcc/./_absvdi2_s.o
libgcc/./_addvsi3_s.o libgcc/./_addvdi3_s.o libgcc/./_subvsi3_s.o libgcc/./_subvdi3_s.o libgcc/./_mulvsi3_s.o libgcc/./_mulvdi3_s.o libgcc/./_negvsi2_s.o libgcc/./_negvdi2_s.o libgcc/./_ctors_s.o
libgcc/./_ffssi2_s.o libgcc/./_ffsdi2_s.o libgcc/./_clz_s.o libgcc/./_clzsi2_s.o libgcc/./_clzdi2_s.o libgcc/./_ctzsi2_s.o libgcc/./_ctzdi2_s.o libgcc/./_popcount_tab_s.o
libgcc/./_popcountsi2_s.o libgcc/./_popcountdi2_s.o libgcc/./_paritysi2_s.o libgcc/./_paritydi2_s.o libgcc/./_powisf2_s.o libgcc/./_powidf2_s.o libgcc/./_powixf2_s.o libgcc/./_powitf2_s.o
libgcc/./_mulsc3_s.o libgcc/./_muldc3_s.o libgcc/./_mulxc3_s.o libgcc/./_multc3_s.o libgcc/./_divsc3_s.o libgcc/./_divdc3_s.o libgcc/./_divxc3_s.o libgcc/./_divtc3_s.o libgcc/./_fixunsxfsi_s.o
libgcc/./_fixsfdi_s.o libgcc/./_fixunssfdi_s.o libgcc/./_fixdfdi_s.o libgcc/./_fixunsdfdi_s.o libgcc/./_fixxfdi_s.o libgcc/./_fixunsxfdi_s.o libgcc/./_floatdixf_s.o libgcc/./_fixtfdi_s.o
libgcc/./_fixunstfdi_s.o libgcc/./_floatditf_s.o libgcc/./_divdi3_s.o libgcc/./_moddi3_s.o libgcc/./_udivdi3_s.o libgcc/./_umoddi3_s.o libgcc/./_udiv_w_sdiv_s.o libgcc/./_udivmoddi4_s.o libgcc/./bpabi_s.o
libgcc/./unaligned-funcs_s.o libgcc/./unwind-arm_s.o libgcc/./libunwind_s.o libgcc/./pr-support_s.o libgcc/./unwind-c_s.o -lc /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/crtendS.o /usr/arm-linux-gnueabi/lib/crtn.o
collect2 version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (ARM GNU/Linux with ELF)
/usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/collect-ld --eh-frame-hdr
-shared -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o ./libgcc_s.so.1.tmp /usr/arm-linux-gnueabi/lib/crti.o /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/crtbeginS.o
-L/usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc -L/usr/arm-linux -L/usr/arm-linux-gnueabi/lib -L/usr/lib/gcc/../../arm-linux-gnueabi/lib -v --soname=libgcc_s.so.1 --version-script=libgcc/./libgcc.map -O1 libgcc/./_udivsi3_s.o
libgcc/./_divsi3_s.o libgcc/./_umodsi3_s.o libgcc/./_modsi3_s.o libgcc/./_bb_init_func_s.o libgcc/./_call_via_rX_s.o libgcc/./_interwork_call_via_rX_s.o libgcc/./_lshrdi3_s.o libgcc/./_ashrdi3_s.o libgcc/./_ashldi3_s.o libgcc/./_negdf2_s.o
libgcc/./_addsubdf3_s.o libgcc/./_muldivdf3_s.o libgcc/./_cmpdf2_s.o libgcc/./_unorddf2_s.o libgcc/./_fixdfsi_s.o libgcc/./_fixunsdfsi_s.o libgcc/./_truncdfsf2_s.o libgcc/./_negsf2_s.o
libgcc/./_addsubsf3_s.o libgcc/./_muldivsf3_s.o libgcc/./_cmpsf2_s.o libgcc/./_unordsf2_s.o libgcc/./_fixsfsi_s.o libgcc/./_fixunssfsi_s.o libgcc/./_floatdidf_s.o libgcc/./_floatdisf_s.o libgcc/./_aeabi_lcmp_s.o
libgcc/./_aeabi_ulcmp_s.o libgcc/./_aeabi_ldivmod_s.o libgcc/./_aeabi_uldivmod_s.o libgcc/./_dvmd_lnx_s.o libgcc/./_muldi3_s.o libgcc/./_negdi2_s.o libgcc/./_cmpdi2_s.o libgcc/./_ucmpdi2_s.o libgcc/./_clear_cache_s.o
libgcc/./_enable_execute_stack_s.o libgcc/./_trampoline_s.o libgcc/./__main_s.o libgcc/./_absvsi2_s.o libgcc/./_absvdi2_s.o libgcc/./_addvsi3_s.o libgcc/./_addvdi3_s.o libgcc/./_subvsi3_s.o libgcc/./_subvdi3_s.o libgcc/./_mulvsi3_s.o libgcc/./_mulvdi3_s.o
libgcc/./_negvsi2_s.o libgcc/./_negvdi2_s.o libgcc/./_ctors_s.o libgcc/./_ffssi2_s.o libgcc/./_ffsdi2_s.o libgcc/./_clz_s.o libgcc/./_clzsi2_s.o libgcc/./_clzdi2_s.o libgcc/./_ctzsi2_s.o libgcc/./_ctzdi2_s.o libgcc/./_popcount_tab_s.o
libgcc/./_popcountsi2_s.o libgcc/./_popcountdi2_s.o libgcc/./_paritysi2_s.o libgcc/./_paritydi2_s.o libgcc/./_powisf2_s.o libgcc/./_powidf2_s.o libgcc/./_powixf2_s.o libgcc/./_powitf2_s.o libgcc/./_mulsc3_s.o libgcc/./_muldc3_s.o libgcc/./_mulxc3_s.o
libgcc/./_multc3_s.o libgcc/./_divsc3_s.o libgcc/./_divdc3_s.o libgcc/./_divxc3_s.o libgcc/./_divtc3_s.o libgcc/./_fixunsxfsi_s.o libgcc/./_fixsfdi_s.o libgcc/./_fixunssfdi_s.o
libgcc/./_fixdfdi_s.o libgcc/./_fixunsdfdi_s.o libgcc/./_fixxfdi_s.o libgcc/./_fixunsxfdi_s.o libgcc/./_floatdixf_s.o libgcc/./_fixtfdi_s.o libgcc/./_fixunstfdi_s.o libgcc/./_floatditf_s.o libgcc/./_divdi3_s.o libgcc/./_moddi3_s.o libgcc/./_udivdi3_s.o libgcc/./_umoddi3_s.o
libgcc/./_udiv_w_sdiv_s.o libgcc/./_udivmoddi4_s.o libgcc/./bpabi_s.o libgcc/./unaligned-funcs_s.o libgcc/./unwind-arm_s.o libgcc/./libunwind_s.o libgcc/./pr-support_s.o libgcc/./unwind-c_s.o -lc /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/crtendS.o /usr/arm-linux-gnueabi/lib/crtn.o
GNU ld version 2.17 Debian GNU/Linux
/usr/arm-linux-gnueabi/lib/libc.so.6: file not recognized: File format not recognized
collect2: ld returned 1 exit status

Where does the -m armelf-linux-eabi designation come from? That's
presumably an ld output format?

Is /usr/src/armel/gcc-4.1-4.1.1ds2/build/./gcc/collect-ld the expected
path?

the problem appears to be objdump:
# objdump -a /usr/arm-linux-gnueabi/lib/libc.so.6
File format not recognized

but readelf -a /usr/arm-linux-gnueabi/lib/libc.so.6
works fine. 

A bit more prodding found that binutils-multiarch was installed and
diverting objdump. Getting rid of it improved matters (objdump -a
above worked OK). (which makes sense - bintuils multiarch has not been
patched to know about eabi, or at least the version on this box hasn't
been).

so, now building again...

But it fails with the same error, so objdump-multiarch is apparently
not the problem. 

My arm-linux-gnu-objdump -i and arm-linux-gnueabi-objdump -i list the
same supported formats. Is that right?

So next I tried a different tack: building glibc-2.5 from sources
instead of using the pre-built lib that is giving troubles above, but
that currently fails quickly in configure claiming that autoconf is
not available, which is odd, as it;'s definately installed. I'll look
into that further.

Can anyone see what's wrong with the disgnostics above? I'm still
perplexed. 

Wookey
-- 
Principal hats:  Balloonz - Toby Churchill - Aleph One - Debian
http://wookware.org/

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



Reply to: