在elf文件中,如何找到变量定义在哪个编译单元?
In an elf file, how to find which compile unit the variable is defined?
我正在写一个工具来向a2l文件添加变量,输入是elf文件。
为了搜索哪个编译单元 (CU) 具有变量,我必须搜索所有 CU(直到遇到变量)。
因为SW很大,找一个变量需要时间。
我想知道是否有任何更快的方法来知道变量定义在哪个 CU?
DWARF 标准包括 可选 部分 .debug_pubnames
,它为 全局 对象提供 name-to-offset 翻译和功能。
另一种方法是使用符号table。如果它有一个变量条目,那么您可以将其地址与 optional .debug_aranges
部分一起使用,或者,如果失败,请阅读每个 DW_TAG_compile_unit
以查找带有封闭的地址范围。
我正在写一个工具来向a2l文件添加变量,输入是elf文件。 为了搜索哪个编译单元 (CU) 具有变量,我必须搜索所有 CU(直到遇到变量)。 因为SW很大,找一个变量需要时间。 我想知道是否有任何更快的方法来知道变量定义在哪个 CU?
DWARF 标准包括 可选 部分 .debug_pubnames
,它为 全局 对象提供 name-to-offset 翻译和功能。
另一种方法是使用符号table。如果它有一个变量条目,那么您可以将其地址与 optional .debug_aranges
部分一起使用,或者,如果失败,请阅读每个 DW_TAG_compile_unit
以查找带有封闭的地址范围。