Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
CARE

 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

Glossary
MoreInfo
Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
FAQ
Copyright Info
Terms of Use
Privacy Info
Disclaimer
WorkBoard
Thanks
Donations
Advertising
Masthead / Impressum
Your Account

Communication
Feedback
Forums
Private Messages
Surveys

Features
HOWTOs
News Archive
Submit News
Topics
User Articles
Web Links

Google
Google


The Web
linux-tutorial.info

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

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

  

kallsyms



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

       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.

   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  "everything  is  an
  
Show your Support for the Linux Tutorial

Purchase one of the products from our new online shop. For each product you purchase, the Linux Tutorial gets a portion of the proceeds to help keep us going.


Login
Nickname

Password

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 help in many different ways.


Friends



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.10 Seconds