[RFC PATCH u-boot 01/12] build: use thin archives instead of incremental linking
bmeng.cn at gmail.com
Fri Mar 5 14:34:42 CET 2021
On Fri, Mar 5, 2021 at 2:17 AM Marek Behun <marek.behun at nic.cz> wrote:
> On Thu, 4 Mar 2021 18:57:11 +0800
> Bin Meng <bmeng.cn at gmail.com> wrote:
> > Hi Marek,
> > On Wed, Mar 3, 2021 at 12:13 PM Marek Behún <marek.behun at nic.cz> wrote:
> > >
> > > Using thin archives instead of incremental linking
> > > - saves disk space
> > > - works better with dead code elimination
> > > - prepares for potential LTO
> > The commit message is a little bit confusing. This commit actually
> > does 2 things: don't do incremental linking (using --whole-archive),
> > and use thin archive (passing T to ar). I believe they are for
> > different purposes, so we cannot say "using thin archives instead of
> > incremental linking".
> > > - -Wl,--start-group $(patsubst $(obj)/%,%,$(u-boot-spl-main)) \
> > > - $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) -Wl,--end-group \
> > > + -Wl,--whole-archive $(patsubst $(obj)/%,%,$(u-boot-spl-main)) -Wl,--no-whole-archive \
> > > + -Wl,--start-group $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) -Wl,--end-group \
> > u-boot-spl-platdata is still within --start-group, --end-group, is
> > this intentional?
> I confess that I did not really study these options, I have made these
> changes according to old LTO patches for Linux. But you are right that
> it does not make sense. I have fixed this for the next version of this
> > Is P required to make everything work?
> It is not. Removed in next version.
I did more investigation on this.
The Linux kernel specially added P to ar, in below commit:
So it looks like we should keep P here?
But I don't get the point of switching to thin archives. Based on my
experiment, LTO does not rely on thin archives. The Linux kernel did
not introduce thin archives for LTO.
More information about the U-Boot