[U-Boot] [PATCH 62/71] serial: spl: Implement empty functions for SPL

Marek Vasut marex at denx.de
Wed Sep 19 00:16:47 CEST 2012


Dear Tom Rini,

> On 09/18/12 12:25, Marek Vasut wrote:
> > Dear Tom Rini,
> > 
> >> On 09/18/12 12:19, Marek Vasut wrote:
> >>> Dear Tom Rini,
> >>> 
> >>>> On 09/18/12 11:33, Marek Vasut wrote:
> >>>>> Dear Scott Wood,
> >>>> 
> >>>> [snip]
> >>>> 
> >>>>>> I think I got some wires crossed and was thinking about
> >>>>>> printf/puts. We want those to be optimized away at
> >>>>>> compile time (not pointed to a stub at link time) on an
> >>>>>> SPL that has no output support, but once that's done the
> >>>>>> low level serial functions shouldn't be referenced
> >>>>>> anymore, right?
> >>>>> 
> >>>>> But if you point them to stubs, that's OK. The compiler
> >>>>> will GC these useless stubs anyway. But wait, we're getting
> >>>>> to LTO here, right?
> >>>>> 
> >>>>> So the safest bet really is macro in serial.h ?
> >>>> 
> >>>> Due to the gcc bug I've mentioned before, yes.  Dummy
> >>>> functions will, I bet, keep the string constants around.  do
> >>>> {} while(0) will drop them out entirely.
> >>> 
> >>> Damn, not much gain on m28evk (with C functionss/with macros),
> >>> using gcc 4.7.1:
> >>> 
> >>> Configuring for m28evk board... text    data     bss     dec
> >>> hex filename 418994    7780  288632  715406   aea8e ./u-boot
> >>> 11773 788 12   12573    311d ./spl/u-boot-spl
> >>> 
> >>> Configuring for m28evk board... text    data     bss     dec
> >>> hex filename 418998    7780  288628  715406   aea8e ./u-boot
> >>> 11765 788 12   12565    3115 ./spl/u-boot-spl
> >> 
> >> Right, didn't have many strings.  But do you see what I mean now
> >> about not needing this patch as it stands currently?
> > 
> > No, I don't. If I remove this patch, the build breaks either
> > because serial_* is defined twice or not defined at all.
> 
> m28evk currently, needlessly, defines serial_puts/putc.  I locally
> patched master to drop them from arch/arm/cpu/arm926ejs/mxs/spl_boot.c
> and the references in common/libcommon.o are correctly
> garbage-collected.  They are in fact unused functions today as they're
> garbage collected without patching, see spl/u-boot-spl.map after
> building.  So again I say, if common/serial.o is NOT being discard in
> your series on m28evk there is a bug in your series to fix or a change
> to better understand and document (and then see if we can change since
> as Scott notes, this needs to work for 4kb boards and that is tight).

Ok, so we cleared this up on jabber, latest ToT works correctly, discard this 
patch.

Best regards,
Marek Vasut


More information about the U-Boot mailing list