* [U-Boot-Users] link error on first compile @ 2005-02-04 1:17 Tim Bird 2005-02-04 2:59 ` Yang Yang 0 siblings, 1 reply; 5+ messages in thread From: Tim Bird @ 2005-02-04 1:17 UTC (permalink / raw) To: u-boot Hi all, On a fresh untar; make xxx_config; make all, I get an error linking the example program hello_world with start.o. This can be worked around by removing 'examples' from the list of SUBDIRS in the top-level Makefile. After building, I added 'examples' back in. Strangely, for one set of builds, this solved my problem (and hello_world linked OK, even after a 'make distclean'), but for another set of builds, hello_world wouldn't link even when cpu/arm925t/start.o was present. I haven't been able to figure out the problem, but I thought I'd report it. This is with a home-built gcc: arm-sony-linux-gcc (GCC) 3.4.3 -- Tim ---------------- [tbird at timdesk u-boot-1.1.2]$ make all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/examples' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/examples' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/post' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/post' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/post/cpu' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/post/cpu' make -C tools all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c -o img2srec.o img2srec.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o img2srec img2srec.o strip img2srec gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c mkimage.c gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c crc32.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o mkimage mkimage.o crc32.o strip mkimage gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c envcrc.c gcc -g -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -c environment.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o envcrc envcrc.o crc32.o environment.o gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c gen_eth_addr.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o gen_eth_addr gen_eth_addr.o strip gen_eth_addr gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c -o bmp_logo.o bmp_logo.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o bmp_logo bmp_logo.o strip bmp_logo ./bmp_logo logos/denx.bmp >/home/tbird/work/innovator/u-boot-1.1.2/include/bmp_logo.h make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make -C examples all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/examples' arm-sony-linux-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -c -o stubs.o stubs.c arm-sony-linux-ar crv libstubs.a stubs.o a - stubs.o arm-sony-linux-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -I.. -Bstatic -T /home/tbird/work/innovator/u-boot-1.1.2/board/omap1510inn/u-boot.lds -Ttext 0x11080000 hello_world.c -o hello_world /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3/../../../../arm-sony-linux/bin/ld: cannot find cpu/arm925t/start.o collect2: ld returned 1 exit status make[1]: *** [hello_world] Error 1 make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/examples' make: *** [examples] Error 2 ----- ============================= Tim Bird Architecture Group Chair, CE Linux Forum Senior Staff Engineer, Sony Electronics ============================= ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] link error on first compile 2005-02-04 1:17 [U-Boot-Users] link error on first compile Tim Bird @ 2005-02-04 2:59 ` Yang Yang 2005-02-04 17:40 ` Jon Loeliger 0 siblings, 1 reply; 5+ messages in thread From: Yang Yang @ 2005-02-04 2:59 UTC (permalink / raw) To: u-boot Hi Tim, I also met this problem. When I use MV31 for MPC85xx cross-compiler to compile for board MPC8560ADS, I was stuck at exactly the same place : can't link examples/hello_world.o, however if I use ELDK's compiler everything is fine. So I digged into them a little bit deeper. The problem happens at examples/stubs.c, when compile it to generate stubs.o, no symbols like dummy, or printf is in stubs.o, which is needed when link hello_world.o later. If we look at stubs.c, =========== static void __attribute__((unused)) dummy(void) { #include <_exports.h> } =========== this declaration makes dummy and all stubs functions not be included in stubs.o if using yours and MV31 compiler, it's the cross-compiler's optimization make this happen. Check the file u-boot/config.mk, and find OPTFLAGS = -Os, which ask compiler to optimize for the purpose of reducing code size. Some compilers, like yours arm-sony-linux-gcc (GCC) 3.4.3 and mine ppc_85xx-gcc (GCC) 3.4.1 (MontaVista 3.4.1-2.0.14.0401563 2004-11-12), optimize the stubs.c code by eliminating "unused" function "dummy" and of course all stubs functions defined in dummy() out of the stubs.o. If I change -Os to -O1, and compile again, then compiling was successful, in this case I can't guarantee the obj files are working or not :). So you should check your compiler documents on how to include those "unused" functions while in -Os optimization level. Just my 2 cents, hope it works. ----- Yang Yang Software Engineer, R&D Cyclades Corporation Phone: +1-510-771-6100 x253 Fax: +1-510-771-6200 E-mail: yang.yang at cyclades.com Tim Bird <tim.bird@am.sony .com> To Sent by: u-boot-users at lists.sourceforge.net u-boot-users-admi cc n at lists.sourcefor ge.net Subject [U-Boot-Users] link error on first compile 02/03/2005 05:17 PM Hi all, On a fresh untar; make xxx_config; make all, I get an error linking the example program hello_world with start.o. This can be worked around by removing 'examples' from the list of SUBDIRS in the top-level Makefile. After building, I added 'examples' back in. Strangely, for one set of builds, this solved my problem (and hello_world linked OK, even after a 'make distclean'), but for another set of builds, hello_world wouldn't link even when cpu/arm925t/start.o was present. I haven't been able to figure out the problem, but I thought I'd report it. This is with a home-built gcc: arm-sony-linux-gcc (GCC) 3.4.3 -- Tim ---------------- [tbird at timdesk u-boot-1.1.2]$ make all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2 /examples' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2 /examples' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/post' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/post' make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2 /post/cpu' make[1]: `.depend' is up to date. make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2 /post/cpu' make -C tools all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c -o img2srec.o img2srec.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o img2srec img2srec.o strip img2srec gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c mkimage.c gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c crc32.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o mkimage mkimage.o crc32.o strip mkimage gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c envcrc.c gcc -g -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -c environment.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o envcrc envcrc.o crc32.o environment.o gcc -g -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c gen_eth_addr.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o gen_eth_addr gen_eth_addr.o strip gen_eth_addr gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -c -o bmp_logo.o bmp_logo.c gcc -Wall -pedantic -idirafter ../include -DTEXT_BASE=0x11080000 -DUSE_HOSTCC -O -o bmp_logo bmp_logo.o strip bmp_logo ./bmp_logo logos/denx.bmp >/home/tbird/work/innovator/u-boot-1.1.2 /include/bmp_logo.h make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2/tools' make -C examples all make[1]: Entering directory `/home/tbird/work/innovator/u-boot-1.1.2 /examples' arm-sony-linux-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3 /include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -c -o stubs.o stubs.c arm-sony-linux-ar crv libstubs.a stubs.o a - stubs.o arm-sony-linux-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3 /include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -malignment-traps -msoft-float -D__KERNEL__ -DTEXT_BASE=0x11080000 -I/home/tbird/work/innovator/u-boot-1.1.2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3 /include -pipe -DCONFIG_ARM -D__ARM__ -mapcs-32 -march=armv4 -I.. -Bstatic -T /home/tbird/work/innovator/u-boot-1.1.2/board/omap1510inn/u-boot.lds -Ttext 0x11080000 hello_world.c -o hello_world /home/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.3 /../../../../arm-sony-linux/bin/ld: cannot find cpu/arm925t/start.o collect2: ld returned 1 exit status make[1]: *** [hello_world] Error 1 make[1]: Leaving directory `/home/tbird/work/innovator/u-boot-1.1.2 /examples' make: *** [examples] Error 2 ----- ============================= Tim Bird Architecture Group Chair, CE Linux Forum Senior Staff Engineer, Sony Electronics ============================= ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ U-Boot-Users mailing list U-Boot-Users at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] link error on first compile 2005-02-04 2:59 ` Yang Yang @ 2005-02-04 17:40 ` Jon Loeliger 2005-02-04 21:03 ` Wolfgang Denk 0 siblings, 1 reply; 5+ messages in thread From: Jon Loeliger @ 2005-02-04 17:40 UTC (permalink / raw) To: u-boot On Thu, 2005-02-03 at 20:59, Yang Yang wrote: > > > Hi Tim, > > I also met this problem. When I use MV31 for MPC85xx cross-compiler to > compile for board MPC8560ADS, I was stuck at exactly the same place : can't > link examples/hello_world.o, however if I use ELDK's compiler everything is > fine. So I digged into them a little bit deeper. The problem happens at > examples/stubs.c, when compile it to generate stubs.o, no symbols like > dummy, or printf is in stubs.o, which is needed when link hello_world.o > later. ...and I mentioned it on this list here as well: From: Jon Loeliger <jdl@fr...> Those hello_world compilation problems 2004-10-14 13:29 Folks, I did some digging on our toolchain here on our new Yellowdog 4.0 installed machines. They have a 3.3.2 compiler on them by default, apparently. As someone else discerned, that cause an issue with the dummy() function being static in the stubs.o file for the examples directory. I"ve found that all appears to be better if the test in the example/stubs.c file is changed from: #if GCC_VERSION < 3004 to #if GCC_VERSION < 3003 HTH, jdl PS -- Watch that list address carefully! ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] link error on first compile 2005-02-04 17:40 ` Jon Loeliger @ 2005-02-04 21:03 ` Wolfgang Denk 2005-02-04 21:47 ` Jon Loeliger 0 siblings, 1 reply; 5+ messages in thread From: Wolfgang Denk @ 2005-02-04 21:03 UTC (permalink / raw) To: u-boot In message <1107538825.12662.8.camel@cashmere.sps.mot.com> you wrote: > ... > I"ve found that all appears to be better if the test > in the example/stubs.c file is changed from: > > #if GCC_VERSION < 3004 > to > #if GCC_VERSION < 3003 I think this is not the case, as the current ELDK uses GCC-3.3.3 (GCC_VERSION = 3003), and "examples/stubs.c" builds just fine. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de Due to lack of disk space, this fortune database has been discontinued. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] link error on first compile 2005-02-04 21:03 ` Wolfgang Denk @ 2005-02-04 21:47 ` Jon Loeliger 0 siblings, 0 replies; 5+ messages in thread From: Jon Loeliger @ 2005-02-04 21:47 UTC (permalink / raw) To: u-boot On Fri, 2005-02-04 at 15:03, Wolfgang Denk wrote: > In message <1107538825.12662.8.camel@cashmere.sps.mot.com> you wrote: > > > ... > > I"ve found that all appears to be better if the test > > in the example/stubs.c file is changed from: > > > > #if GCC_VERSION < 3004 > > to > > #if GCC_VERSION < 3003 > > I think this is not the case, as the current ELDK uses GCC-3.3.3 > (GCC_VERSION = 3003), and "examples/stubs.c" builds just fine. Indeed. Though what it does point out is that there was a problem with the treatment of the "static-ness" of these symbols in the stubs.c file. In reality, I believe the issue was more accurately binutils hidden behind these compiler revs. jdl ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-02-04 21:47 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-02-04 1:17 [U-Boot-Users] link error on first compile Tim Bird 2005-02-04 2:59 ` Yang Yang 2005-02-04 17:40 ` Jon Loeliger 2005-02-04 21:03 ` Wolfgang Denk 2005-02-04 21:47 ` Jon Loeliger
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.