Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
Let The Music Play: Join EFF Today

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 69 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       kallsyms [-Vh] kernel_filename


       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.


       -h, --help
              Display a summary of options and exit.

       -V, --version
              Display the version of kallsyms and exit.


       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

       image, it can be stored separately from the kernel  image,
       it can be appended to a module just before loading, it can
       be stored in a separate area, etc.

       /usr/include/sys/kallsyms.h contains the mappings for  the
       __kallsyms data.

       *  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.

       A set of NUL terminated strings.  Each name is  referenced
       using  an  offset  from the start of the __kallsyms string

   Note [1]
       These fields are  exceptions  to  the  "everything  is  an



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
You can get all the latest Site and Linux news by checking out our news page.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.13 Seconds