https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69863
Bug ID: 69863 Summary: no_sanitize_address doesn't disable stack instrumentation Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: ryabinin.a.a at gmail dot com CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org Target Milestone: --- Attribute no_sanitize_address doesn't disable instrumentation completely. Apparently no_sanitize_address only disables memory access checks, but it doesn't have influence on stack redzones. Regardless of this attribute gcc creates and poisons/unpoisons stack redzones. $ cat no_sanitize_stack_test.c void g(int *a); __attribute__((no_sanitize_address)) void func(void) { int a; g(&a); } $ gcc -fsanitize=address -c no_sanitize_stack_test.c && objdump -d no_sanitize_stack_test.o 0000000000000000 <func>: .... 4d: 49 c1 ec 03 shr $0x3,%r12 51: 41 c7 84 24 00 80 ff movl $0xf1f1f1f1,0x7fff8000(%r12) 58: 7f f1 f1 f1 f1 5d: 41 c7 84 24 04 80 ff movl $0xf4f4f404,0x7fff8004(%r12) 64: 7f 04 f4 f4 f4 69: 41 c7 84 24 08 80 ff movl $0xf3f3f3f3,0x7fff8008(%r12) 70: 7f f3 f3 f3 f3 75: 64 48 8b 14 25 28 00 mov %fs:0x28,%rdx