首页 > 解决方案 > 是否可以从编译器(LLVM/GCC)生成堆栈槽位置信息?

问题描述

我正在做一个小型研究项目。给定一个应用程序(源代码或 ELF 二进制文件),我需要知道每个函数的堆栈对象信息。例如,我需要知道堆栈对象的位置(从 RBP 的偏移量)和大小,如果可能的话,还想知道访问堆栈对象的指令。

以下是我正在考虑的一些方向:

  1. 我可以反汇编二进制文件,找到所有包含偏移量的指令。但我无法使用此方法获取堆栈对象大小。
  2. 看一下 DWARF 信息,可能它包含堆栈对象位置。
  3. 我注意到LLVM stackmap,但描述它的文档很少。

对这个问题有什么建议吗?

标签: gccstackclangllvmdwarf

解决方案


推荐阅读