拦截Segfault上的处理器状态

时间:2012-05-03 09:51:20

标签: c++ debugging x86 segmentation-fault jit

我正在开发一个分析PowerPC代码并为其生成LLVM代码的程序。由于我对分支点/子程序的分析,代码可能不完整(例如,如果代码对函数指针做了一些非常奇怪的事情),我计划设置一个类似的回退机制:

  1. 生成的子程序尝试从原始程序分支到地址,原始程序将是未映射/不可执行的页面(取决于主机体系结构功能)。
  2. 分段错误结果。
  3. 分段错误处理程序识别发生的情况,在下次启动程序时保存地址以进行完整分析,然后执行快速而脏的分析,并使用LLVM的JIT容量为新分支目标生成可执行代码。
  4. 恢复分支时的处理器状态,除了指向新生成的代码。
  5. 问题是我无法弄清楚如何在分段错误中获得处理器状态。我相当确定有一种方法,因为GDB一直这样做。

    虽然代码是跨平台的,但我现在专注于在x86 OSX / Posix上实现它。

0 个答案:

没有答案