gcc - langhooks

tree を作っていくコードを見ようと思ったが、 wo さんの記述に従い、先に langhooks* を見る。 langhooks.h で lang_hooks 構造体が定義されていて、その中にさらに lang_hook_for_functions などの特定目的のフックを収める構造体がいくつか。それらは同じヘッダ内で定義されている。いずれも中身は関数ポインタばかり。そのポインタに langhooks-def.h で宣言されている lhd_* なりオリジナルで作ったものを渡せば良い作りであるようだ。

langhooks がどうかけられているかを調べるため、 toplev.c に。どこで lang_hooks がかけられているかがわからないまま (*lang_hooks.init)() されている。少し調べると、 c-lang.c で初期化されていた。

const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;

LANG_HOOKS_INITIALIZER は langhooks-def.h にある大きなマクロ。他のマクロをまた呼んでいる。…(若干省略(@@@))…結局、例えば langhooks.init を調べたければ c-lang.c の LANG_HOOKS_INIT を調べる、というような対応付けで良さそう。すると c_objc_common_init を見ることになる。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h