Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/c-c++-common/asan/use-after-return-1.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do run } */ /* { dg-set-target-env-var ASAN_OPTIONS "detect_stack_use_after_return=1" } */ /* { dg-shouldfail "asan" } */ #include <stdio.h> #include <pthread.h> #ifndef kSize # define kSize 1 #endif #ifndef UseThread # define UseThread 0 #endif __attribute__((noinline)) char *Ident(char *x) { fprintf(stderr, "1: %p\n", x); return x; } __attribute__((noinline)) char *Func1() { char local[kSize]; return Ident(local); } __attribute__((noinline)) void Func2(char *x) { fprintf(stderr, "2: %p\n", x); *x = 1; } void *Thread(void *unused) { Func2(Func1()); return NULL; } int main(int argc, char **argv) { #if UseThread pthread_t t; pthread_create(&t, 0, Thread, 0); pthread_join(t, 0); #else Func2(Func1()); #endif return 0; } /* { dg-output "WRITE of size 1 at .* thread T0.*" } */ /* { dg-output " #0.*(Func2)?.*use-after-return-1.(c:31)?.*" } */ /* { dg-output "is located in stack of thread T0 at offset.*" } */ /* { dg-output "\'local\' \\(line 24\\) <== Memory access at offset 32 is inside this variable" } */