Re: [genksyms patch 3/4] Track symbol checksum changes

Andreas Gruenbacher
2008-09-03T08:13:48Z

On Wednesday 03 September 2008 07:02:31 Andrew Morton wrote:
> On Mon, 21 Jul 2008 04:28:26 +0200 Andreas Gruenbacher <agruen@suse.de>
wrote:
> > Sometimes it is preferable to avoid changes of exported symbol checksums
> > (to avoid breaking externally provided modules). When a checksum change
> > occurs, it can be hard to figure out what caused this change: underlying
> > types may have changed, or additional type information may simply have
> > become available at the point where a symbol is exported.
> >
> > Add a new --reference option to genksyms which allows it to report why
> > checksums change, based on the type information dumps it creates with
> > the --dump-types flag. Genksyms will read in such a dump from a previous
> > run, and report which symbols have changed (and why).
> >
> > The behavior can be controlled for an entire build as follows: If
> > KBUILD_SYMTYPES is set, genksyms uses --dump-types to produce *.symtypes
> > dump files. If any *.symref files exist, those will be used as the
> > reference to check against. If KBUILD_PRESERVE is set, checksum changes
> > will fail the build.
>
> This breaks `make M=...'
>
> With i386 allmodconfig,
>
>
> akpm2:/usr/src/25> make M=drivers/rtc
>
> WARNING: Symbol version dump /usr/src/devel/Module.symvers
> is missing; modules will have no dependencies and modversions.
>
> LD drivers/rtc/built-in.o
> CC [M] drivers/rtc/rtc-lib.o
> scripts/genksyms/genksyms: invalid option -- r
> Usage:
> genksyms [-adDTwqhV] > /path/to/.tmp_obj.ver
>
> -a, --arch Select architecture
> -d, --debug Increment the debug level (repeatable)
> -D, --dump Dump expanded symbol defs (for debugging only)
> -T, --dump-types file Dump expanded types into file (for debugging only)
> -w, --warnings Enable warnings
> -q, --quiet Disable warnings (default)
> -h, --help Print this message
> -V, --version Print the release version
> make[1]: *** [drivers/rtc/rtc-lib.o] Error 1
> make: *** [_module_drivers/rtc] Error 2

The usage information above is from an unpatched genksyms; a "make scripts" is
needed. On a clean tree, this works for me:

make allmodconfig prepare scripts
make M=drivers/rtc

When compiling out-of-tree modules with M=, the O= tree is not rebuilt
automatically; it may even be read-only (as when building an external module
as a user using the distro kernel packages).

Thanks,
Andreas