On Friday 31 August 2007 13:06, [EMAIL PROTECTED] wrote: > Denys Vlasenko wrote: > > On Friday 31 August 2007 08:36, [EMAIL PROTECTED] wrote: > >> Denys Vlasenko wrote: > >>> On Thursday 30 August 2007 14:02, [EMAIL PROTECTED] wrote: > >>>> Hi, > >>>> > >>>> We are using rather old version of busybox (1.1.2) on our embedded > >>>> systems and would like to upgrade to the latest stable version - > >>>> 1.6.1. The applets seem to compile just fine, but linking fails to > >>>> produce busybox_unstripped. We are using uClibc. > >>>> > >>>> Complete build (with make V=1) is located at: > >>>> > >>>> http://4thway.0catch.com/busybox-error_3.txt > >>> > >>> Strange, I don't see error message. > >>> > >>> Do you have busybox_ld.err file? It may contain error message. > >> > >> Yes. I have uploaded it to the > >> http://4thway.0catch.com/busybox_ld.err > >> > >>> Can you remove "-Wl,-M" from Makefile and rerun the command? > >> > >> I've rebuild without the "-Wl,-M" and the result seems the same but the > >> busybox_ld.err is smaller. See > >> http://4thway.0catch.com/busybox_ld.err_nowlm > > > > This is fixed in 1.7.0. Link map is saved into separate file, > > making error message much easer to find. Sorry. > > > > Does it make sense to you to jump to 1.7.0, since you > > have to jump anyway? > > I'll try it out. I guess it is not that of a problem, just that it is > labeled unstable and I hesitate to break something else by introducing > untested code in the production systems [like it is not enough that our > own untested stuff makes it there :-/]... > > >> It is something about the glibc _start symbol?! > > > > uclibc. > > > > applets/built-in.o: In function `__negdi2': > > /usr/src/redhat/BUILD/cris-dist-1.62/gnu-toplev/gcc/libgcc2.c:52: > > multiple definition of `_start' > > /fw/car2_R1.gen/stage.uclibc/lib/crt0.o(.text+0x0): first defined here > > applets/built-in.o: In function `__negdi2': > > /usr/src/redhat/BUILD/cris-dist-1.62/gnu-toplev/gcc/libgcc2.c:52: > > multiple definition of `__mainp' > > /fw/car2_R1.gen/stage.uclibc/lib/crt0.o(.data.rel+0x0): first defined > > here applets/built-in.o: In function `__negdi2': > > /usr/src/redhat/BUILD/cris-dist-1.62/gnu-toplev/gcc/libgcc2.c:52: > > multiple definition of `__data_start' > > /fw/car2_R1.gen/stage.uclibc/lib/crt0.o(.data+0x0): first defined here > > collect2: ld returned 1 exit status > > > > Something is messed up in the toolchain. > > > > Does libgcc2.c in gcc you use really define _start? Why? > > Can't tell since the path points to non-existent source file on my > system - it is pre-built toolchain that Axis supplies (makers of the > cris CPU). Would have to download the toolchain source and check (maybe > later). > > > Can you successfully cross-compile "Hello world"? > > Sure, it even runs:). > > [EMAIL PROTECTED] /tmp $ cat hello.c > #include <stdio.h> > > int main (void) > { > printf("Hello world..\n"); > return 0; > } > > [EMAIL PROTECTED] /tmp $ gcc_cris -mlinux -DLINUX -DLINUX_SYSTEM > -D_REENTRANT -mno-mul-bug-workaround > -muclibc=/fw/car2_R1.gen/stage.uclibc/ hello.c > [EMAIL PROTECTED] /tmp $ scp a.out [EMAIL PROTECTED]:/tmp > [EMAIL PROTECTED]'s password: > a.out 100% 2228 2.2KB/s > 00:00 > [EMAIL PROTECTED] /tmp $ ssh [EMAIL PROTECTED] /tmp/a.out > [EMAIL PROTECTED]'s password: > Hello world.. > > > Let me just say that I had no problems while compiling (ancient) > busybox-1.1.2 source. I would bet my money in the linker options - but > which?!
According to your logs trylink script is started with: /home/hinkok/delo/fw/car2_R1.gen/pkg/busybox-R2/build/uclibc/static/scripts/trylink gcc_cris -mlinux -DLINUX -DLINUX_SYSTEM -D_REENTRANT -mno-mul-bug-workaround -muclibc=/fw/car2_R1.gen/stage.uclibc -L/fw/car2_R1.gen/stage.uclibc/lib -Wl,-rpath-link,/fw/car2_R1.gen/stage.uclibc/lib -o busybox_unstripped -Wl,-M -Wl,--warn-common -Wl,--sort-common -Wl,--start-group applets/built-in.o archival/lib.a archival/libunarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a ipsvd/lib.a libbb/lib.a libpwdgrp/lib.a login utils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a archival/built-in.o archival/libunarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o ipsvd/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o -Wl,--end-group Nothing especially interesting. You may go into trylink and set debug=true, you will make trylink report commands it tries to run. Do gcc -v hello_world.c and compare linker flags used for it and for bbox. And btw, note that gcc commands which compile .c files into .o contains -static-libgcc - maybe this is the problem? Makefile.flags ============== CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,) ^^^^^^^^^^^^^^ -- vda _______________________________________________ busybox mailing list busybox@busybox.net http://busybox.net/cgi-bin/mailman/listinfo/busybox