[LLVMdev] can GlobalAlias point to a middle of a structure?

Duncan Sands baldrick at free.fr
Fri Jun 17 11:42:31 PDT 2011


Hi Kostya,

> In order to find out-of-bound accesses to global objects with AddressSanitizer
> (http://code.google.com/p/address-sanitizer/wiki/AddressSanitizer)
> I need to create redzones to the left and to the right of every global variable.
>
> I tried the following:
> Before:
>    @Extern = global [10 x i8] zeroinitializer, align 1
> After:
>    %0 = type { [32 x i8], [10 x i8], [54 x i8] }
>    @Extern_asan_redzone = global %0 zeroinitializer, align 1
>    @0 = global [10 x i8] zeroinitializer, align 1 << the old variable
>    @Extern = alias getelementptr inbounds (%0* @Extern_asan_redzone, i32 0, i32 1)
> I.e. I created a global struct @Extern_asan_redzone of 3 elements and an
> alias @Extern that points to the middle element of this struct.

this is not currently possible.  You are not the first person to ask for this.
If targets support it (I don't know if any do) then perhaps it can be added.

Ciao, Duncan.



More information about the llvm-dev mailing list