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 informa
tion.
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 defini
tions in the source file. All definitions and declara
tions of typedef, 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:
symbol_R12345678, where 12345678 is the hexadecimal repre
sentation 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 output.
-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 gen
erate output. Omitting this option assumes a ver
sion below 2.1.0. Versions below 2.1.18 use
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 expan
sions 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 informa
tion 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@solucorp.ca> and Jeremy Fitzhardinge
<jeremy@suite.sw.oz.au>
It was rewritten in 1996 by Richard Henderson to use a
proper lexer and parser.
Man(1) output converted with
man2html