2000-12-08 17:34:34

by Peng Dai

[permalink] [raw]
Subject: System.map with symbols from discarded sections

Quite a few functions in the 2.3 kernels and up are marked as __exit.
This puts the functions in the .text.exit section that is marked as
DISCARD
in vmlinux.lds.

It turns out that if the function is static, ld never puts it into the
symbol
table of vmlinux; however, if the function is global, ld throws it into
the
*ABS* section of vmlinux with an address most likely lower than
PAGE_OFFSET.
These symbols are included in System.map since they are not 'a' type but
'A'
type. An example of which is 'acpi_exit', as shown below,

00000000 A acpi_exit
c0100000 A _text
c0100000 t startup_32
c0100000 T _stext
...

It seems rather harmless except it breaks the readprofile utitlity which
reads
the System.map. I am wondering if ld is behaving correctly.

Regards,
Peng