2012-04-09 90 views
12

我想檢查Linux內核導出的符號列表。 所以我發出命令,Linux內核導出的符號

# cat /proc/kallsyms 
0000000000000000 D per_cpu__irq_stack_union 
0000000000000000 D __per_cpu_start 
0000000000004000 D per_cpu__gdt_page 
0000000000005000 d per_cpu__exception_stacks 
000000000000b000 d per_cpu__idt_desc 
000000000000b010 d per_cpu__xen_cr0_value 
000000000000b018 D per_cpu__xen_vcpu 
000000000000b020 D per_cpu__xen_vcpu_info 
000000000000b060 d per_cpu__mc_buffer 
000000000000c570 D per_cpu__xen_mc_irq_flags 

這是我得到的輸出。 我的問題是,這個輸出中每個字段的含義是什麼? 第一個字段看起來像地址,我沒有得到第二個字段的任何參考。 任何人都可以向我解釋第二個字段中的值D,d,t,T,s的含義嗎?

回答

18

在第二列中的字符具有它們在輸出做相同的含義從nm

D d的符號是在初始化數據段。

S s該符號位於未初始化的數據段中,用於小型對象。

T t該符號位於文本(代碼)部分。

大寫符號是全局/導出;小寫字母是本地未導出的符號。