Lui*_*BOL 27 linux gcc exception-handling elf
我知道,当使用支持异常的语言(例如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结构进行解释.谢谢.
小智 19
它应涵盖大多数部分的历史和理论.
关于eh_frame,它包含异常展开和源语言信息.本节中的每个条目都由单个CFI(呼叫帧信息)表示
eh_frame_hdr由c ++运行时代码用于访问eh_frame.这意味着,它包含指针和二进制搜索表,可以有效地从eh_frame中检索信息.
现在,如果您想看看如何读/写这些部分,那么我建议看看下面的链接器代码.
(寻找EhFrame.cpp,EhFrameHdr.cpp和EhFrameReader.cpp)
祝好运 !!
| 归档时间: |
|
| 查看次数: |
17674 次 |
| 最近记录: |