[RFC PATCH u-boot 01/12] build: use thin archives instead of incremental linking
marek.behun at nic.cz
Fri Mar 5 16:39:27 CET 2021
On Fri, 5 Mar 2021 21:34:42 +0800
Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Marek,
> 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
> > patch.
> > > 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.
It does not matter whether we use thin archives or real archives. But
we did not use any of this before, instead we linked the object files
in a directory into one object file in that directory. And to do this
with LTO would cause unnecessary complications.
More information about the U-Boot