Section: Linux Module Support (8)
Updated: Sep 10, 1997Index
Return to Main Contents
Copyright (c) 1994 Bjorn Ekwall <email@example.com
Copyright (c) 1997 Linux International
This program is distributed according to the Gnu General Public License.
genksyms - generate symbol version information
[ -wq ] [ -dD ] [ -V ] -k version [ -p string ]
[ output directory ]
reads (on standard input) the output from
gcc -E source.c
and generates a file containing version information.
Depending on the output format indicated by the
option, the output will either be written to a .ver file in the named
output directory, or to the standard output.
normally looks for explicit symbol table definitions in the source
file. All definitions and declarations of
typedef, struct, union
will be saved for later expansion.
Every global symbol will also be saved, together with pointers
that will enable a full expansion later on.
When a symbol table is found in the source, the symbol will be
expanded to its full definition, where all struct's, unions, enums
and typedefs will be expanded down to their basic part, recursively.
This final string will then be used as input to a CRC algorithm
that will give an integer that will change as soon as any of the
included definitions changes, for this symbol.
The version information in the kernel normally looks like:
where 12345678 is the hexadecimal representation of the CRC.
Enable warnings due to unrecognized syntax and declared but undefined
structures. These warnings are normally suppressed.
Quiet warnings, i.e. reverse the -w option.
Dump expanded symbol definitions to stderr. For debugging use only.
Output debugging information; repeating this option increases the
verbosity. Debug level 1 generates moderate information about the
actions being taken; debug level 2 enables parser recognition
output; debug level 3 enables lexical analysis output.
- -k version
Select the version of the kernel for which to generate output. Omitting
this option assumes a version below 2.1.0. Versions below 2.1.18
use checksum version 1, and produce their output in the directory given
on the command line. Versions 2.1.18 and above use checksum version 2
and produce their output on stdout.
- -p string
Prepend the given string to the CRCs generated for all symbols. This is
intended for use with e.g. SMP kernels, wherein the modules are not
compatible at a level below that described by the data types. This is
primarily caused by inline function expansions in the module code itself.
This versioning concept is a result from discussions, not at least
on the KERNEL-channel, with a lot of people.
The genksyms utility was created in 1994 by Bjorn Ekwall <firstname.lastname@example.org>
being mostly inspired by Jacques Gelinas <email@example.com>
and Jeremy Fitzhardinge <firstname.lastname@example.org>
It was rewritten in 1996 by Richard Henderson to use a proper lexer
- SEE ALSO