[LLVMdev] [RFC] Simple control-flow integrity

Richard Osborne richard at xmos.com
Tue Feb 11 00:28:27 PST 2014


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])();
}






More information about the llvm-dev mailing list