Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux: Kernel

[PATCH 59/74] lto: Handle LTO common symbols in module loader

 

 

Linux kernel RSS feed   Index | Next | Previous | View Threaded


andi at firstfloor

Aug 18, 2012, 7:56 PM

Post #1 of 3 (51 views)
Permalink
[PATCH 59/74] lto: Handle LTO common symbols in module loader

From: Joe Mario <jmario [at] redhat>

Here is the workaround I made for having the kernel not reject modules
built with -flto. The clean solution would be to get the compiler to not
emit the symbol. Or if it has to emit the symbol, then emit it as
initialized data but put it into a comdat/linkonce section.

Minor tweaks by AK over Joe's patch.

Cc: rusty [at] rustcorp
Signed-off-by: Andi Kleen <ak [at] linux>
---
kernel/module.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index c00565a..2cbbae3 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1904,6 +1904,10 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)

switch (sym[i].st_shndx) {
case SHN_COMMON:
+ /* Ignore common symbols */
+ if (!strncmp(name, "__gnu_lto", 9))
+ break;
+
/* We compiled with -fno-common. These are not
supposed to happen. */
pr_debug("Common symbol: %s\n", name);
--
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


jbeulich at suse

Aug 19, 2012, 1:53 AM

Post #2 of 3 (49 views)
Permalink
Re: [PATCH 59/74] lto: Handle LTO common symbols in module loader [In reply to]

>>> Andi Kleen <andi [at] firstfloor> 08/19/12 4:59 AM >>>
>@@ -1904,6 +1904,10 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
>
> switch (sym[i].st_shndx) {
> case SHN_COMMON:
>+ /* Ignore common symbols */
>+ if (!strncmp(name, "__gnu_lto", 9))
>+ break;
>+
> /* We compiled with -fno-common. These are not
> supposed to happen. */
> pr_debug("Common symbol: %s\n", name);

I think it is dangerous to just match the start of the symbol name here -
this may in the future well lead to ignoring symbols we shouldn't be
ignoring.

Also I would think the added comment ought to say "Ignore LTO symbols."
Otherwise its sort of contradicting the purpose of the case being handled
here.

Jan

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


andi at firstfloor

Aug 19, 2012, 8:23 AM

Post #3 of 3 (47 views)
Permalink
Re: [PATCH 59/74] lto: Handle LTO common symbols in module loader [In reply to]

On Sun, Aug 19, 2012 at 09:53:02AM +0100, Jan Beulich wrote:
> >>> Andi Kleen <andi [at] firstfloor> 08/19/12 4:59 AM >>>
> >@@ -1904,6 +1904,10 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
> >
> > switch (sym[i].st_shndx) {
> > case SHN_COMMON:
> >+ /* Ignore common symbols */
> >+ if (!strncmp(name, "__gnu_lto", 9))
> >+ break;
> >+
> > /* We compiled with -fno-common. These are not
> > supposed to happen. */
> > pr_debug("Common symbol: %s\n", name);
>
> I think it is dangerous to just match the start of the symbol name here -
> this may in the future well lead to ignoring symbols we shouldn't be
> ignoring.
>
> Also I would think the added comment ought to say "Ignore LTO symbols."
> Otherwise its sort of contradicting the purpose of the case being handled
> here.

Ok maybe should error out. This case only happens with fat LTO when
the LTO step is not actually run.

It used to happen because old versions of this patchkit
didn't correctly LTO modules

I'll change it to error out. The reason for the prefix was that
there is a __gnu_lto_vXXX and the version number could change.

Thanks for the reviewws.

-Andi


--
ak [at] linux -- Speaking for myself only.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Linux kernel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.