当前位置: 首页 > 面试题库 >

.eh_frame和.eh_frame_hdr部分分别存储什么?

乐正心思
2023-03-14
问题内容

我知道,当使用支持异常的语言(例如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)

祝好运 !!



 类似资料:
  • 本文向大家介绍Git部分存储,包括了Git部分存储的使用技巧和注意事项,需要的朋友参考一下 示例 如果您只想存储工作集中的一些差异,则可以使用部分存储。 然后以交互方式选择要存储的块。 从2.13.0版开始,您还可以避免使用交互模式,并使用新的push关键字使用pathspec创建部分存储。            

  • 问题内容: 这行是问题所在: 每个部分在此结构中起什么作用???? 谢谢,我很抱歉询问Beacuse,因为我是Java新手。 问题答案: 大概大多数代码都是清晰的,这里唯一让您感到困惑的是此表达式: 第一部分: 加宽在位置字节到的比特位置8-31用零值。在Java中,数据类型是带符号的整数值,因此加宽的符号会扩展该值。如果没有,则大于0x7f的值最终将变为负值。剩下的就很明显了:它添加了0x100

  • 本文向大家介绍MySQL由哪些部分组成, 分别用来做什么?相关面试题,主要包含被问及MySQL由哪些部分组成, 分别用来做什么?时的应答技巧和注意事项,需要的朋友参考一下 Server 连接器: 管理连接, 权限验证. 分析器: 词法分析, 语法分析. 优化器: 执行计划生成, 索引的选择. 执行器: 操作存储引擎, 返回执行结果. 存储引擎: 存储数据, 提供读写接口.

  • 我试图优化两个spark dataframes之间的联接查询,让我们将它们称为df1、df2(在公共列“saleid”上联接)。df1非常小(5M),所以我在spark集群的节点中广播它。df2非常大(200米行),所以我尝试通过“saleid”对它进行桶/重新分区。 例如: 分区: 水桶: 我不知道哪一个是正确的技术使用。谢谢。

  • 我是一个全新的Docker和正在学习入门教程。在第7步,它说 键入命令并按Return。该命令列出本地系统上的所有映像。您应该在列表中看到。 但第一列清楚地表示“存储库”,而不是例如“图像名称”。我还在别人的机器上注意到,因为一个图像可以有多个标记,所以这个列表经常包含重复的条目--每个标记一个。那么这是一个图像列表,一个存储库列表,一个图像-标签组合列表还是其他什么呢?映像和存储库有什么区别?

  • 本文向大家介绍react16的reconciliation和commit分别是什么?相关面试题,主要包含被问及react16的reconciliation和commit分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 React 16 三个核心: Scheduler 调度器:决定什么时候调度 Reconciler Reconciler 协调器:进行 Fiber diff 及新的 Fiber