C++などの例外をサポートする言語を使用する場合、例外の処理中に展開する必要のある呼び出しフレームを説明する追加情報をランタイム環境に提供する必要があることを知っています。この情報は、.eh_frame
や.eh_frame_hdr
などのオブジェクトファイルの特別なセクションに含まれています。
しかし、これらのセクションにはどのようなデータ構造が格納されていますか?つまり、C構造体を使用して読み取ることができますか? .cfi
ステートメント(.cfi_startproc
、.cfi_endproc
、.cfi_offset
、.cfi_def_cfa_offset
、.cfi_personality
、.cfi_lsda
など)とは何か関係がありますか?GNUアセンブリコード?これらの句のそれぞれが原因.eh_frame_hdr
セクションは、.eh_frame
とどのような関係があるのでしょうか。
なるべくCの構造体を使った説明をお願いします。ありがとうございました。
cfi-directives を参照してください。
それは問題のセクションのほとんどの歴史と理論をカバーするべきです。
Eh_frameについては、例外の巻き戻しとソース言語情報が含まれています。このセクションの各エントリは、単一のCFI(コールフレーム情報)で表されます
参照してください ehfound in linuxfoundation
eh_frame_hdrは、eh_frameにアクセスするためにc ++ランタイムコードによって使用されます。つまり、eh_frameから情報を効率的に取得するためのポインタとバイナリ検索テーブルが含まれています。
ここで、このセクションの読み書き方法を確認したい場合は、次のリンカーコードを確認することをお勧めします。
( EhFrame.cpp、EhFrameHdr.cppおよびEhFrameReader.cpp を探します)
幸運を !!