| // RUN: %clangxx_msan -O0 %s -o %t && %run %t |
| |
| #include <assert.h> |
| #include <execinfo.h> |
| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| |
| __attribute__((noinline)) |
| void f() { |
| void *buf[10]; |
| int sz = backtrace(buf, sizeof(buf) / sizeof(*buf)); |
| assert(sz > 0); |
| for (int i = 0; i < sz; ++i) |
| if (!buf[i]) { |
| #if defined(__s390x__) |
| // backtrace() may return a bogus trailing NULL on s390x. |
| if (i == sz - 1) |
| continue; |
| #endif |
| exit(1); |
| } |
| char **s = backtrace_symbols(buf, sz); |
| assert(s != 0); |
| for (int i = 0; i < sz; ++i) |
| printf("%d\n", (int)strlen(s[i])); |
| } |
| |
| int main(void) { |
| f(); |
| return 0; |
| } |