.eh_frame和.eh_frame_hdr节具体存储什么?

我知道,当使用支持异常的语言(如C++)时,必须向运行时环境提供附加信息,以描述在处理异常时必须解开的调用帧。此信息包含在对象文件的特殊部分中,例如.eh\u frame.eh\u frame\u hdr

但是,这些部分中存储了什么样的数据结构?我的意思是,它们可以用任何C结构来读取吗?它们与GNU汇编代码中的.cfi语句(如.cfi\u startproc.cfi\u endproc.cfi\u offset.cfi\u offset.cfi\u personality.cfi\u lsda)有关吗?如果他们这样做了,这些条款中的每一条在这些章节中会导致什么?.eh\u frame\u hdr部分与.eh\u frame部分有什么关系

我希望尽可能多地使用C结构进行解释。多谢各位

请参见cfi指令

它应该涵盖大部分相关章节的历史和理论

关于eh_框架,它包含异常解除和源语言信息。本节中的每个条目由单个CFI(调用帧信息)表示

参见linuxfoundation中的eh_框架

EHFrimulyHDR,C++运行时代码用于访问EH帧。这意味着,它包含指针和二进制搜索表,可以有效地从eh_帧检索信息

现在,如果您想了解如何读/写这些部分,那么我建议您看看下面的链接器代码

(查找EhFrame.cpp、EhFrameHdr.cpp和EhFrameReader.cpp)

祝你好运

发表评论