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

Marek Vasut
2012-09-18T22:16:47Z

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