このページを編集する際は、解読日記一覧の「概要」に従ってください。
関数ereport()から下位関数errstart()が呼び出されている。
しかし、関数errstart()をソース全体からgrepすると、elog.c と ipc_test.c の2つのファイルで定義が存在する。
通常は、以下の青の領域のソースファイルがコンパイル・リンクされ、矢印の流れで関数が呼び出されると想像される。
しかし、ipc_testのメイクファイルを確認したところ、elog.cはリンク対象に含まれておらず、さらにerrstart()がipc_test.c内で定義されている。
つまり、ipc_testをビルドした場合は、以下のオレンジの領域のソースファイルがコンパイル・リンクされ、ビルドされたipc_testを実行すると矢印の流れで関数が呼び出される。
現在は、ipc_testバイナリについて読解しているので、errstart()/postgresql-8.1.4の概要に、以下のような説明を付記することにする。
また、同じ ereport() を使用していても、 elog.c と ipc_test.c のどちらをリンクしているかで、動作が異なり、リンク方法によって、ereport()の概要が異なってくることがわかる。 対応として、上位関数ereport()/postgresql-8.1.4内でのコメントでは、以下のように記載することにする。
さらに、ereport()/postgresql-8.1.4の概要についても、バイナリ毎に説明を分けて記載するようにする。