在执行期间访问.eh_frame数据

时间:2013-08-06 17:51:57

标签: kernel linux-kernel c glibc elf

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

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

是否需要修改加载内核以从文件加载数据的过程,或者.eh_frame info / .eh_frame部分指针存储在某处作为宏/汇编程序名称(所以它可以提取成C变量)?

1 个答案:

答案 0 :(得分:1)

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

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

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