Messages in this thread Patch in this message | | | Date | Mon, 26 Mar 2012 18:58:24 -0700 | From | Frank Rowand <> | Subject | Re: [PATCH] modpost: Fix modpost's license checking V3 |
| |
On 03/23/12 19:04, Frank Rowand wrote: > On 07/13/11 23:51, Alessio Igor Bogani wrote: >> The commit f02e8a6 sorts symbols placing each of them in its own elf section. >> The sorting and merging into the canonical sections are done by the linker. >> Unfortunately modpost to generate Module.symvers file parses vmlinux > > Yet another unfortunately: modpost parses vmlinux.o instead of vmlinux (vmlinux > does not yet exist at this point of the build). vmlinux.o also does not have > the many sections sorted and merged into the canonical sections. As a result, > the Module.symvers created my modpost incorrectly reports the license of all > exports as "(unknown)". > > Can you fix this also please?
The attached patch modifies your patch to also use export_from_secname() for vmlinux and vmlinux.o.
This is a rather blind shot at fixing the problem, so please review carefully. After applying the patch, Module.symvers reports the license correctly for exports from vmlinux.o.
> > >> (already linked) and all modules object files (which aren't linked yet). >> These aren't sanitized by the linker yet. That breaks modpost that can't >> detect license properly for modules. This patch makes modpost aware of >> the new exported symbols structure. >> >> Thanks to Arnaud Lacombe <lacombar@gmail.com> and Anders Kaseorg >> <andersk@ksplice.com> for providing useful suggestions about code. >> >> This work was supported by a hardware donation from the CE Linux Forum. >> >> Reported-by: Jan Beulich <jbeulich@novell.com> >> Signed-off-by: Alessio Igor Bogani <abogani@kernel.org> >> --- >> scripts/mod/modpost.c | 29 ++++++++++++++++++++++++++++- >> 1 files changed, 28 insertions(+), 1 deletions(-) > > < snip > > > -Frank Rowand
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com> --- scripts/mod/modpost.c | 2 1 + 1 - 0 ! 1 file changed, 1 insertion(+), 1 deletion(-)
Index: b/scripts/mod/modpost.c =================================================================== --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -589,7 +589,7 @@ static void handle_modversions(struct mo unsigned int crc; enum export export; - if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0) + if (strncmp(symname, "__ksymtab", 9) == 0) export = export_from_secname(info, get_secindex(info, sym)); else export = export_from_sec(info, get_secindex(info, sym));
| |