[LLVMdev] [RFC] Simple control-flow integrity

Eric Christopher echristo at gmail.com
Tue Feb 11 00:30:31 PST 2014


On Tue, Feb 11, 2014 at 12:28 AM, Richard Osborne <richard at xmos.com> wrote:
>
> On 11 Feb 2014, at 08:15, Eric Christopher <echristo at gmail.com> wrote:
>
>> On Mon, Feb 10, 2014 at 11:51 PM, Reid Kleckner <rnk at google.com> wrote:
>>>
>>>
>>>
>>> IIRC this came up before, and I don't think we expose anything like a jump
>>> table at the IR level.  As an IR-to-IR transform, I think asm is the only
>>> way to do it.
>>
>> I'd have to look more at what he's doing, but wouldn't a simple switch
>> statement in IR suffice? Efficiency would be up to the various
>> lowering mechanisms, but it wouldn't require inline asm.
>>
>> -eric
> Another option might be to create an array of function pointers in the LLVM IR, i.e generate code that looks like:
>
> void (*jumptable[])() = {
>   &a,
>   &b
> };
>
> void f(int index) {
>   *(jumptable[index])();
> }

*nod* That's the sort of thing I was thinking about too.

-eric



More information about the llvm-dev mailing list