On Fri, Dec 06, 2013 at 01:34:43PM +0100, Jakub Jelinek wrote:
> On Fri, Dec 06, 2013 at 01:32:42PM +0100, Ondřej Bílka wrote:
> > On second though besides of decreasing of code size there is no reason
> > to complicate compilation for these features. A more flexible way is add
> > environment variable that will disable these at runtime.
> 
> That is not possible, the instrumentation is inserted inline by the
> compiler.
> 
>       Jakub

Currently this code with sanitize=address gets expanded

int foo(char *x, char *y, int i)
{
  x[i] = y[i];
}

to 

snip
        movq    %rsi, %rax
        movq    %rsi, %rdx
        shrq    $3, %rax
        andl    $7, %edx
        movzbl  2147450880(%rax), %eax
        cmpb    %dl, %al
        jle     .L18
.L2:

snip 

.L18:
        .cfi_restore_state
        testb   %al, %al
        je      .L2
        movq    %rsi, %rdi
        call    __asan_report_load1

There is nothing imposible about disabling these checks. You just fill a
page to make this check pass and use mmap to make entire shadow memory point
to that page.

Reply via email to