*参照元 [#u6ede88a]
#backlinks

*説明 [#abb8e537]
-パス: [[linux-2.6.25/include/asm-generic/vmlinux.lds.h]]

-__bug_table セクションを定義するリンカスクリプトである。

-まだ仕組みがよくわかっていないです。


**参考 [#c5728bb8]

-以下のシンボルも同時に定義される。
--__start___bug_table: __bug_table セクションの開始アドレス。
--__stop___bug_table: __bug_table セクションの末尾アドレス + 1。


*実装 [#df597568]
 #ifndef LOAD_OFFSET
 #define LOAD_OFFSET 0
 #endif
-LOAD_OFFSET: 特に定義されなければ 0 である。

 
 (...略...)
 

 #define BUG_TABLE                                                       \
         . = ALIGN(8);                                                   \
-現在のカウンタ値(アドレス?)を 8バイト境界に
アライメントした値にする。

         __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) {             \
-出力セクション名: __bug_table
-もし LOAD_OFFSET が定義されていれば、アライメントのずれた位置に
__bug_table をロードすることが出来る?
--AT: セクションの LMA(ロードアドレス)を
AT に指定した VMA(仮想アドレス)と等しくする。
--LMA: セクションがロードされるときのアドレスである。
--VMA: コードを実行するときのセクションのアドレスである。
--ADDR: セクションの絶対アドレス(VMA、仮想アドレス)を返す。
--LOAD_OFFSET: 特に定義されなければ 0 である。

                 __start___bug_table = .;                                \
-シンボル __start__bug_table に現在のカウンタ値を代入する。
--このシンボルは __bug_table の先頭アドレスを持つ。

                 *(__bug_table)                                          \
-全入力オブジェクトファイルの __bug_table セクションを
出力ファイルの __bug_table セクションに出力する。

                 __stop___bug_table = .;                                 \
-シンボル __stop__bug_table に現在のカウンタ値を代入する。
--このシンボルは __bug_table 末尾 + 1 のアドレスを持つ。

         }

*コメント [#v86b412b]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS