2

我正在尝试从其中访问.eh_frame正在运行的程序部分的内容(具体来说,该程序是 Linux 内核 2.6.34.8)。包含用于异常处理的.eh_frame有用数据,我想在内核代码内部使用它。该部分已经由gccreadelf -a vmlinux.o包含.eh_frame)编写,问题是从代码中读取它。我很确定精灵格式文档说.eh_frame在代码执行期间可以访问。

我查看了 的来源glibc以寻找.eh_frame用法,并在 中找到了大多数 CFA 指令的宏sysdeps/generic/sysdep.h,但没有找到加载.eh_frame数据的实际代码。

是否需要修改加载内核的过程以从文件中加载数据,或者.eh_frame信息/.eh_frame_hdr节指针是否作为宏/汇编程序名称存储在某处(因此可以将其提取到 C 变量中)?

4

1 回答 1

1

vmlinux.o不是被加载的实际内核。

实际的内核映像(通常bzImage)不是 ELF 文件,仅包含运行内核所需的数据。

此外,大多数内核都没有使用异常处理信息进行编译。

于 2013-08-07T07:29:19.360 回答