DWARF情報からtypedefsファイルを生成する外部ツールや開発中のコードについてpgindentを走らせたい時のメモ1。基本的なやり方はここに書いてある方法と同じで、変更済みのソースコードをコンパイルしてできたpostgres実行ファイルからデバッグ情報を取得して、そこから構造体や変数定義の情報を抽出します。Xで使われているLLVMではデバッグ情報は実行ファイルとは別にあります2。pgindentの実行に必要な手順は以下の通りです。-gdwarf-2フラグをつけるコンパイル時にはgccのオプションとして-gdwarf-2フラグをつけます。-gdwarf-2"のような感じで指定します。Xでは以下のように、dsymutilを使ってデバッグ情報(DWARF情報)を取り出して、そこから構造体のや変数の定義情報を取得します(postgres.dwarfファイル)。pgindentコマンドでは--typedefsオプションで任意のtypedefsファイルを指定できるので、作成したtypedefsファイルを指定します。src/backend/postgres.dwarf上記の方法を使えば多くの場合で上手くいきますが、たまにgcc+objdumpで作ったtypedefsを使った場合と異なる結果になるので念の為チェックが必要です。あとコンパイル環境によっても当然バイナリが変わり、それによっても抽出できる定義情報は異なるので要注意です。コミットされているコードに対してpgindentを走らせる方法はsrc/tools/pgindent/READMEに書いてある通り。↩LLVMのリンカ(lld)では、デバッグ情報はリンクしないようです。@masahiko_sawada。