Wolfgang Denk <w...@denx.de> wrote on 2011/04/24 22:48:09:
>
> Dear Joakim Tjernlund,
>
> In message <1303633774-22961-4-git-send-email-joakim.tjernl...@transmode.se> 
> you wrote:
> > Seems like recent linker/fpic changes broke a few 8xx boards.
> > This makes them build again.
> >
> > Signed-off-by: Joakim Tjernlund <joakim.tjernl...@transmode.se>
> > ---
> >  board/LEOX/elpt860/u-boot.lds |    2 +-
> >  board/etx094/u-boot.lds       |    2 +-
> >  board/svm_sc8xx/u-boot.lds    |    2 +-
> >  board/tqc/tqm8xx/u-boot.lds   |    2 ++
> >  4 files changed, 5 insertions(+), 3 deletions(-)
>
> Sorry, but isn't this just papering over the original problem?
> In the reverted commit you claimed:
>
>     -msingle-pic-base is a new gcc option for ppc and
>     it reduces the size of my u-boot with 6-8 KB.
>     While at it, add -fno-jump-tables too to save a
>     few more bytes.
>
> This promises to reduce the overall code size, but instead the
> observation is that it is growing, which is the reson for the build
> problem on some boards.

Well, your gcc is different from mine and I know nothing about it as
you won't say anything about it.
This is what I get:

With -msingle-pic-base:

## 4.4.5 has been patched to support msingle-pic-base
CROSS_COMPILE=powerpc-4.4.5_softfloat-linux-gnu- ./MAKEALL  TQM855L TQM860L
Configuring for TQM855L board...
   text    data     bss     dec     hex filename
 267022    5284   27200  299506   491f2 ./u-boot
Configuring for TQM860L board...
   text    data     bss     dec     hex filename
 267043    5284   27200  299527   49207 ./u-boot

##powerpc-softfloat-linux-gnu- is 3.4.6
CROSS_COMPILE=powerpc-softfloat-linux-gnu- ./MAKEALL  TQM855L TQM860L
Configuring for TQM855L board...
u-boot.lds:90 cannot move location counter backwards (from 00000000400081d4 to 
0000000040008000)
make: *** [u-boot] Error 1
powerpc-softfloat-linux-gnu-size: './u-boot': No such file
Configuring for TQM860L board...
u-boot.lds:90 cannot move location counter backwards (from 00000000400081e0 to 
0000000040008000)
make: *** [u-boot] Error 1
powerpc-softfloat-linux-gnu-size: './u-boot': No such file

Reverted -msingle-pic-base:

CROSS_COMPILE=powerpc-4.4.5_softfloat-linux-gnu- ./MAKEALL  TQM855L TQM860L
Configuring for TQM855L board...
u-boot.lds:75 cannot move location counter backwards (from 40008180 to 40008000)
make: *** [u-boot] Error 1
powerpc-4.4.5_softfloat-linux-gnu-size: './u-boot': No such file
Configuring for TQM860L board...
u-boot.lds:75 cannot move location counter backwards (from 40008190 to 40008000)
make: *** [u-boot] Error 1
powerpc-4.4.5_softfloat-linux-gnu-size: './u-boot': No such file

CROSS_COMPILE=powerpc-softfloat-linux-gnu- ./MAKEALL  TQM855L TQM860L
Configuring for TQM855L board...
u-boot.lds:90 cannot move location counter backwards (from 00000000400081d4 to 
0000000040008000)
make: *** [u-boot] Error 1
powerpc-softfloat-linux-gnu-size: './u-boot': No such file
Configuring for TQM860L board...
u-boot.lds:90 cannot move location counter backwards (from 00000000400081e0 to 
0000000040008000)
make: *** [u-boot] Error 1
powerpc-softfloat-linux-gnu-size: './u-boot': No such file

So I strongly suspect that as soon as you move your gcc version upwards, it 
will break
these boards too.

> For example TQM860L (top of tree, with 8c4734e reverted (i. e. your
> old 39768f7 reapplied) and this patch here applied, I see:
>
>    text    data     bss     dec     hex filename
>  258663   14676   27228  300567   49617 ./u-boot
>
> and
>
>                 0x00008000                . = DEFINED 
> (env_offset)?env_offset:.
>  *fill*         0x40007d28      0x2d8 00
>  common/env_embedded.o(.ppcenv*)
>  .ppcenv        0x40008000     0x8000 common/env_embedded.o
>
> Without these two changes we have:
>
>    text    data     bss     dec     hex filename
>  257955   14744   27228  299927   49397 ./u-boot
>
> and
>
>  670                 0x00008000                . = DEFINED 
> (env_offset)?env_offset:.
>  671  *fill*         0x40007fb4       0x4c 00
>  672  common/env_embedded.o(.ppcenv*)
>  673  .ppcenv        0x40008000     0x8000 common/env_embedded.o
>
>
> The gap before the embedded environment which is just 76 bytes
> without your patches now grows to 728 bytes (i. e. by a factor of
> nearly 10), and the total image sie grows, too.

Of course, I had for these boards move something from the small space
before the environment as some gcc's produce larger code so the targeted
space was too small, something had to give.

>
>
> I will not apply either of these commits - neither the reverted one,
> nor this additional one, as both of them grow the memory footprint
> instead of redusing it as you promised in the commit message.

You should read the commit msg again. It requires a gcc which
supports -msingle-pic-base.
I still don't know why it broke with your gcc but I suspect
it is due to -fno-jump-tables(which is in the msingle-pic-base patch).
Seems like that option in your case makes the code bigger.

 Jocke

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to