All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.