0

我有一些异常处理,使用 JIT 可以正常工作。现在我正在生成目标文件并链接它们,但似乎缺少异常处理表。我打电话_Unwind_RaiseException并得到 _URC_END_OF_STACK结果。

我使用生成我的目标文件TargetMachine::addPassesToEmitFile,然后将生成的文件链接到:

gcc -Wl,--eh-frame-hdr -o prog input.o

我确定我只是缺少一些生成 Dwarf 表的选项,但我不知道它是什么。对于我设置 JITExceptionHandlingJITEmitDebugInfo打开的 JIT 版本TargetOptions

为了检查每个步骤,我还发出了一个 LL (LLVM-IR) 文件。我验证了这有landingpad/invoke intructiosn。然后我使用该llc工具,然后使用 GCC 进行链接。这种组合也不会产生预期的结果。

我缺少哪个选项来正确执行此操作?

4

1 回答 1

0

我最终发现我的人格功能有问题。它有时没有设置正确的选择器和/或没有返回正确的返回值。运行时 JIT 异常处理程序似乎以不同的方式运行,因此测试将在该运行中通过。

于 2013-04-19T11:20:59.280 回答