Re: info on System.map

From: Adam (adam@eax.com)
Date: Thu May 11 2000 - 22:41:36 EST


> i just wanted to know what is the significance of the
> System.map file which is present in the /boot directory ? .I see
> that it contains a list with three columns .
> coul someone describe what each column represents.

First one is address in memory where given "item" is located once
kernel is loaded into memroy

the last one is name of the "item"

the middle denotes type of the "item", you can find definitions of
all types in nm info page (be sure to look up the binutils man page
not the just info-nized version of plain man page). For reference they
are quoted below

Thus they let you determine what the function is from address in
memory. For example I believe 'ps' makes use of such information
(though it probably rather uses /proc/ksyms nowdays) when it
displays where given process is at given time

   * The symbol type. At least the following types are used; others
     are, as well, depending on the object file format. If lowercase,
     the symbol is local; if uppercase, the symbol is global (external).

    `A'
          The symbol's value is absolute, and will not be changed by
          further linking.

    `B'
          The symbol is in the uninitialized data section (known as
          BSS).

    `C'
          The symbol is common. Common symbols are uninitialized data.
          When linking, multiple common symbols may appear with the
          same name. If the symbol is defined anywhere, the common
          symbols are treated as undefined references. For more
          details on common symbols, see the discussion of -warn-common
          in *Note Linker options: (ld.info)Options.
          details on common symbols, see the discussion of -warn-common
          in *Note Linker options: (ld.info)Options.

    `D'
          The symbol is in the initialized data section.

    `G'
          The symbol is in an initialized data section for small
          objects. Some object file formats permit more efficient
          access to small data objects, such as a global int variable
          as opposed to a large global array.

    `I'
          The symbol is an indirect reference to another symbol. This
          is a GNU extension to the a.out object file format which is
          rarely used.

    `N'
          The symbol is a debugging symbol.

    `R'
          The symbol is in a read only data section.
    `R'
          The symbol is in a read only data section.

    `S'
          The symbol is in an uninitialized data section for small
          objects.

    `T'
          The symbol is in the text (code) section.

    `U'
          The symbol is undefined.

    `W'
          The symbol is weak. When a weak defined symbol is linked
          with a normal defined symbol, the normal defined symbol is
          used with no error. When a weak undefined symbol is linked
          and the symbol is not defined, the value of the weak symbol
          becomes zero with no error.

    `-'
          The symbol is a stabs symbol in an a.out object file. In
    `-'
          The symbol is a stabs symbol in an a.out object file. In
          this case, the next values printed are the stabs other field,
          the stabs desc field, and the stab type. Stabs symbols are
          used to hold debugging information; for more information, see
          *Note Stabs: (stabs.info)Top.

    `?'
          The symbol type is unknown, or object file format specific.

-- 
Adam
http://www.eax.com      The Supreme Headquarters of the 32 bit registers

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon May 15 2000 - 21:00:19 EST