Re: [PATCH 0/3] build system: section garbage collection for vmlinux

Denys Vlasenko
2007-09-06T17:08:03Z

On Thursday 06 September 2007 16:13, Daniel Walker wrote:
> On Thu, 2007-09-06 at 11:57 +0100, Denys Vlasenko wrote:
> > On Wednesday 05 September 2007 20:46, Daniel Walker wrote:
> > > On Wed, 2007-09-05 at 20:49 +0100, Denys Vlasenko wrote:
> > >
> > > > What does "it" stand for in this sentence?
> > >
> > > "it" is your patches, and I think we got to bottom of it .. "it" (i.e.
> > > your patches) don't actually work with modules, which is what you
> > > originally contended ..
> >
> > Kernel builds, loads and runs with my patches, and modules load just fine.
>
> Ok, so I guess we're not clear on this point .. In your last email you
> said that module exports might get removed? Is that what you intended to
> say or not?

I said this:

On Wednesday 05 September 2007 20:14, Denys Vlasenko wrote:
> On Wednesday 05 September 2007 19:38, Daniel Walker wrote:
> > > > You version doesn't work with CONFIG_MODULES right?
> > >
> > > It works with CONFIG_MODULES.
> >
> > Really? Take a look at this version,
> >
> > http://lkml.org/lkml/2006/6/4/169
> >
> > Marcello had to implement a two pass build to add back symbol used in
> > modules which got removed from the main kernel.. You don't appear to do
> > that. Marcelo also claims better size reduction than you.
>
> This will discard EXPORT_SYMBOLs potentially used by
> out-of-tree modules.
>
> I also saw ~10% size reductions, but then at run-time test modules
> failed to load, they didn't find needed symbols.

A bit extended version:

In the process in making it work I saw ~10% vmlinux size reductions
(which basically matches what Marcelo says) when I wasn't retaining
sections needed for EXPORT_SYMBOLs, but module loading didn't work.

Thus I fixed that by adding KEEP() directives so that EXPORT_SYMBOLs
are never discarded. This was just one of many fixes until kernel
started to actually boot and work.

I did that before I posted patches to lkml.
IOW: posted patches are not broken versus module loading.
--
vda