[LLVMdev] Emit a jump instruction to a place inside basicblock

Eric Christopher echristo at gmail.com
Thu Oct 30 15:28:33 PDT 2014


On Thu Oct 30 2014 at 2:01:24 PM Xiaoguang Wang <xgwang09 at gmail.com> wrote:

>
> On Thu, Oct 30, 2014 at 4:48 PM, Eric Christopher <echristo at gmail.com>
> wrote:
>
>>
>>
>> On Thu Oct 30 2014 at 1:16:38 PM Xiaoguang Wang <xgwang09 at gmail.com>
>> wrote:
>>
>>> On Thu, Oct 30, 2014 at 2:33 PM, Robin Morisset <morisset at google.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> From my understanding of the LLVM IR, it is impossible to jump to the
>>>> middle of a Basic Block, only to its beginning. But there is a
>>>> splitBasicBlock function that seems like it might be useful to you, to make
>>>> sure a basic block is starting at the exact place you want to jump.
>>>>
>>>> Best regards,
>>>> Robin
>>>>
>>>
>>> Thanks you all! I'm looking at splitBasicBlock and trying to use that.
>>> BTW, is there a way at lower level of LLVM that can implement this
>>> functionality? E.g. MCBasicBlock or MCInst?
>>>
>>>
>> You are unlikely to want to do this at the MC level, maybe the MI level.
>> What are you trying to accomplish?
>>
>> -eric
>>
> Thanks for the answer. I want to construct a table which can jump to the
> address after a call instruction. And replace the call/ret instructions
> with that indirection table. So to protect return address on stack.
>
>
An MI level pass will likely work, but you might end up having issues
replacing instructions. It'll be some effort though.

-eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141030/2e0e5257/attachment.html>


More information about the llvm-dev mailing list