System.map

In Linux, the System.map 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 System.map 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 codice_1 is enabled so that tools like ksymoops are not required.
Internals.
The following is part of a codice_2 file:
 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
 ffffe410 A SYSENTER_RETURN
 ffffe420 A __kernel_sigreturn
 ffffe440 A __kernel_rt_sigreturn
Because addresses may change from one build to the next, a new codice_2 is generated for each build of the kernel.
Symbol types.
The character between the address and the symbol (separated by spaces) is the "type" of a symbol. The codice_4 utility program on Unix systems list the symbols from object files. The codice_2 is directly related to it, in that this file is produced by codice_4 on the whole kernel program just like codice_4 lists the symbols and their types for any small object programs.
Some of these types are:
Filesystem location.
After building the Linux kernel, codice_2 is located in the root of the source directory. However, some further software installation steps expect to locate the file elsewhere: