2012-04-09 5 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 

これは私が得た出力です。 私の質問は、この出力の各フィールドの意味は何ですか? 最初のフィールドはアドレスのように見えますが、2番目のフィールドの参照はありませんでした。 誰でも私に2番目のフィールドで値の意味、D、d、t、T、sを説明できますか? 2列目の

答えて

18

文字は、彼らがnmからの出力で行うのと同じ意味を持つ:

D dシンボルは初期化されたデータセクションにあります。

S シンボルは、小さなオブジェクトの初期化されていないデータセクションにあります。

T tシンボルはテキスト(コード)セクションにあります。

大文字の記号はグローバル/エクスポートされています。小文字はローカルで非公開のシンボルです。

関連する問題