1 // MSAN re-execs on unlimited stacks. We use that to verify ReExec() uses the
2 // right path.
3 // RUN: %clangxx_msan -O0 %s -o %t && ulimit -s unlimited && %run %t | FileCheck %s
4 
5 #include <stdio.h>
6 
7 #if !defined(__GLIBC_PREREQ)
8 #define __GLIBC_PREREQ(a, b) 0
9 #endif
10 
11 #if __GLIBC_PREREQ(2, 16)
12 #include <sys/auxv.h>
13 #endif
14 
main()15 int main() {
16 #if __GLIBC_PREREQ(2, 16)
17   // Make sure AT_EXECFN didn't get overwritten by re-exec.
18   puts(reinterpret_cast<const char *>(getauxval(AT_EXECFN)));
19 #else
20   puts("No getauxval");
21 #endif
22   // CHECK-NOT: /proc/self/exe
23 }
24