llvm JIT强制保留frame pointer(栈帧)

llvm JIT强制保留frame pointer(栈帧)

搬运自我的百度空间

不优化时,在每个函数开头都会把ebp入栈,,这样可以方便调试时栈回溯(Stack Trace)等。push ebp的这个动作称为创建栈桢

但是llvm默认情况下,如果函数中没有alloca等栈操作,就会把栈桢动作优化掉(因为没有用到esp和ebp),这样调试时无法回溯了。

解决办法:

在创建execution engine 时

EngineBuilder&eb= EngineBuilder(m);

TargetMachine* tm=eb.selectTarget();

tm->Options.NoFramePointerElim=1;

TheExecutionEngine= eb.setErrorStr(&ErrStr).create(tm);

2014-09-21

没有早一步,也没有晚一步,刚好遇上了你!

llvm JIT强制保留frame pointer(栈帧)

相关文章:

你感兴趣的文章:

标签云: