[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