[LLVMdev] should asan catch tihs?
Richard Smith
richard at metafoo.co.uk
Tue Nov 6 09:53:27 PST 2012
On Fri, Nov 2, 2012 at 6:27 PM, Rafael EspĂndola
<rafael.espindola at gmail.com> wrote:
> I just tried asan on an optimized 32 bit build of
> -------------------------------------
> #include <stdint.h>
> __attribute__((noinline))
> void f(uint64_t *p) {
> *p = 42;
> }
> int main() {
> void *p;
> f((uint64_t*)&p);
> }
> ------------------------------------
>
> and it correctly catches the invalid access. If I comment the
> attribute, the optimizers find and exploit the undefined behavior and
> asan fails to report it. Is this the expected behavior? Is this
> something that needs -fcatch-undefined-behavior instead?
-fcatch-undefined-behavior (more specifically, -fsanitize=object-size)
already catches this if the function gets inlined:
$ clang -x c++ <(grep -v attribute testcase.cpp) -fsanitize=object-size -m32 -O3
$ ./a.out
<stdin>:4:3: fatal error: store to address 0xff97f8c8 with
insufficient space for an object of type 'uint64_t' (aka 'unsigned
long long')
More information about the llvm-dev
mailing list