码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-14 09:27:43      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:llvm



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

搬运自我的百度空间

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

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

解决办法:

在创建execution engine

EngineBuilder&eb= EngineBuilder(m);

                   TargetMachine* tm=eb.selectTarget();

                   tm->Options.NoFramePointerElim=1;

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

 

NoFramePointerElim这个选项设为1,阻止优化栈桢操作


2014-09-21

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

标签:llvm

原文地址:http://blog.csdn.net/myjisgreat/article/details/46487045

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!