From Wikipedia, the free encyclopedia
Jump to: navigation, search

In Linux, the file is a symbol table used by the kernel.

A symbol table is a look-up between symbol names and their addresses in memory. A symbol name may be the name of a variable or the name of a function. The is required when the address of a symbol name, or the symbol name of an address, is needed. It is especially useful for debugging kernel panics and kernel oopses. The kernel does the address-to-name translation itself when CONFIG_KALLSYMS is enabled so that tools like ksymoops are not required.[1]


The following is part of a file:[2]

c041bc90 b packet_sklist
c041bc94 b packet_sklist_lock
c041bc94 b packet_socks_nr
c041bc98 A __bss_stop
c041bc98 A _end
c041c000 A pg0
ffffe400 A __kernel_vsyscall
ffffe420 A __kernel_sigreturn
ffffe440 A __kernel_rt_sigreturn

Because addresses may change from one build to the next, a new is generated for each build of the kernel.[3]

Symbol types[edit]

The character between the address and the symbol (separated by spaces) is the type of a symbol. The nm utility program on Unix systems list the symbols from object files. The is directly related to it, in that this file is produced by nm on the whole kernel program – just like nm lists the symbols and their types for any small object programs.[4]

Some of these types are:[4]

  • A for absolute
  • B or b for uninitialized data section (called BSS)
  • D or d for initialized data section
  • G or g for initialized data section for small objects (global)
  • i for sections specific to DLLs
  • N for debugging symbol
  • p for stack unwind section
  • R or r for read only data section
  • S or s for uninitialzed data section for small objects
  • T or t for text (code) section
  • U for undefined
  • V or v for weak object
  • W or w for weak objects which have not been tagged so
  • - for stabs symbol in an a.out object file
  • ? for "symbol type unknown"

Filesystem location[edit]

After building the Linux kernel, is located in the root of the source directory. However, some further software installation steps expect to locate the file elsewhere:[5]

  • as /boot/$(uname -r)
  • building SVGALib expects to find /lib/modules/$(uname -r)/build/

See also[edit]


  1. ^ "FAQ/ - Linux Kernel Newbies". 2006-04-14. Retrieved 2014-04-06. 
  2. ^ Peter Jay Salzman (2003-05-28). "The File". Retrieved 2014-04-06. 
  3. ^ "Kernel-HOWTO". Retrieved 2014-04-06. 
  4. ^ a b "nm(1): symbols from object files - Linux man page". Retrieved 2014-04-06. 
  5. ^ "Peter's Notes:". 2003-05-29. Retrieved 2014-04-06.