.eh_frame和.eh_frame_hdr部分分别存储什么?
我知道,当使用支持异常的语言(例如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指令
它应涵盖所讨论的大多数部分的历史和理论。
关于eh_frame,它包含异常解除和源语言信息。此部分中的每个条目均由单个CFI(呼叫帧信息)表示
参见linuxfoundation中的eh_frame
eh_frame_hdr,c ++运行时代码用于访问eh_frame。这意味着,它包含指针和二进制搜索表,以有效地从eh_frame中检索信息。
现在,如果您想了解如何阅读/编写本节,那么我建议看看以下链接器代码。
(查找EhFrame.cpp,EhFrameHdr.cpp和EhFrameReader.cpp)
祝好运 !!
以上是 .eh_frame和.eh_frame_hdr部分分别存储什么? 的全部内容, 来源链接: utcz.com/qa/435571.html