2

実行中のプログラムのセクションの内容にアクセスしようとしています.eh_frame(具体的には、プログラムは Linux カーネル 2.6.34.8 です)。には.eh_frame、例外処理に使用される有用なデータが含まれており、カーネル コード内から内部的に使用したいと考えています。セクションは既にgcc( readelf -a vmlinux.ocontains .eh_frame) によって書き込まれています。問題はコードからの読み取りです。.eh_frameコードの実行中にアクセスできるとエルフ形式のドキュメントに書かれていると確信しています。

glibc使用法を求めて のソースを調べた.eh_frameところ、ほとんどの CFA 命令のマクロが見つかりましたが、データsysdeps/generic/sysdep.hをロードする実際のコードは見つかりませんでした。.eh_frame

ファイルからデータをロードするためにカーネルをロードするプロセスを変更する必要がありますか、それとも.eh_frameinfo/.eh_frame_hdrセクション ポインタがマクロ/アセンブラ名としてどこかに格納されていますか (C 変数に抽出できるようにするため)?

4

1 に答える 1

1

vmlinux.oロードされる実際のカーネルではありません。

実際のカーネル イメージ (通常はbzImage) は ELF ファイルではなく、カーネルの実行に必要なデータのみが含まれています。

さらに、カーネルのほとんどは、例外処理情報を使用してコンパイルされていません。

于 2013-08-07T07:29:19.360 に答える