Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
kallsyms(8)
Edit
PageHistory
Diff
Info
LikePages
KALLSYMS !!!KALLSYMS NAME SYNOPSIS DESCRIPTION OPTIONS LINKER PASSES DATA FORMAT SEE ALSO HISTORY ---- !!NAME kallsyms - Extract all kernel symbols for debugging !!SYNOPSIS __kallsyms__ [[-Vh] kernel_filename !!DESCRIPTION __Kallsyms__ extracts all the non-stack symbols from a kernel and builds a data blob that can be linked into that kernel for use by debuggers. A normal kernel only exports symbols that are used by modules. For debugging you may want a list of all the non-stack symbols, not just the exported ones. __kallsyms__ extracts all sections and symbols from a kernel, constructs a list of the sections, symbols and their addresses and writes a relocatable object containing just the __kallsyms section. After the __kallsyms section is linked into the kernel and the kernel has been booted, any debugger can use the data in the __kallsyms section to get better symbol resolution. For example, a debugger can use the __kallsyms data to resolve a kernel address to: * The owning kernel or module. * The section within the owning code. * The nearest symbol. !!OPTIONS __-h__, __--help__ Display a summary of options and exit. __-V__, __--version__ Display the version of __kallsyms__ and exit. !!LINKER PASSES To create a kernel containing an accurate __kallsyms section, you have to make four linker passes instead of the normal single link step. kallsyms and the linker are fast, the three extra steps take a few seconds on a P200. 1 The initial build of the kernel, without any __kallsyms data. Run __kallsyms__ against the output of this link, creating a relocatable object which contains all the sections and symbols in the raw kernel. 2 Link the kernel again, this time including the __kallsyms__ output from step (1). Adding the __kallsyms section changes the number of sections and many of the kernel symbol offsets so run __kallsyms__ again against the second link, again saving the relocatable output. 3 Link the kernel again, this time including the __kallsyms__ output from step (2). Run __kallsyms__ against the latest version of the kernel. The size and position of the __kallsyms section on this run is now stable, none of the kernel sections or symbols will change after this run. The __kallsyms__ output contains the final values of the kernel symbols. 4 Link the final kernel, including the __kallsyms__ output from step (3). !!DATA FORMAT The __kallsyms section is a bit unusual. It deliberately has no relocatable data, all ''/usr/include/sys/kallsyms.h'' contains the mappings for the __kallsyms data. __Header__ * Size of header. * Total size of the __kallsyms data, including strings. * Number of sections. This only included sections which are loaded into memory. * Offset to the first section entry from start of the __kallsyms header. * Size of each section entry, excluding the name string. * Number of symbols. * Offset to the first symbol entry from the start of the __kallsyms header. * Size of each symbol entry, excluding the name string. * Offset to the first string from the start of the __kallsyms header. * Start address of the first section[[1]. * End address of the last section[[1]. __Section entry__ One entry per loaded section. Since __kallsyms is a loaded section, if the input file contains a __kallsyms section then it is included in this list. * Start of the section within the kernel[[1]. * Size of section. * Offset to the name of section, from the start of the __kallsyms strings. * Section flags, from the original Elf section. __Symbol entry__ One per symbol in the input file. Only symbols that fall within loaded sections are stored. * Offset to the __kallsyms section entry that this symbol falls within. The offset is from the start of the __kallsyms section entries. * Address of the symbol within the kernel[[1]. The symbols are sorted in ascending order on this field. * Offset to the name of symbol, from the start of the __kallsyms strings. __Strings__ A set of NUL terminated strings. Each name is referenced using an offset from the start of the __kallsyms string area. __Note [[1]__ These fields are exceptions to the !!SEE ALSO insmod(8). !!HISTORY Initial version by Keith Owens ----
One page links to
kallsyms(8)
:
Man8k
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.