genksyms
GENKSYMS(8) Linux Module Support GENKSYMS(8)
NAME
genksyms - generate symbol version information
SYNOPSIS
genksyms [-wq] [-dD] [-V] [-k version] [-p string] [output directory]
DESCRIPTION
Genksyms 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 -k option, the output
will either be written to a .ver file in the named output directory, or
to the standard output.
Genksyms normally looks for explicit symbol table definitions in the
source file. All definitions and declarations of type-
def, struct, union and enum 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 structs, 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: sym-
bol_R12345678, where 12345678 is the hexadecimal representation of the
CRC.
OPTIONS
-d, --debug
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 out-
put.
-D, --dump
Dump expanded symbol definitions to stderr. For debugging use
only.
-h, --help
Display a summary of options and immediately exit.
-k version, --kernel 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, --prefix 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.
-q, --quiet
Quiet warnings, i.e. reverse the -w option.
-V, --version
Display the version of genksyms.
-w, --warnings
Enable warnings due to unrecognized syntax and declared but
undefined structures. These warnings are normally suppressed.
SEE ALSO
insmod(8), modprobe(8)
BUGS
The -h option is broken; --help is fine.
genksyms [-V | --version] should display version information and then
exit immediately. Instead, it prints the version information and
behaves as if no options were given.
HISTORY
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
<bj0rn@blox.se> being mostly inspired by Jacques Gelinas <jack@solu-
corp.ca> and Jeremy Fitzhardinge <jeremy@suite.sw.oz.au>
It was rewritten in 1996 by Richard Henderson to use a proper lexer and
parser.
Linux January 30, 2002 GENKSYMS(8)