1 | // Regression test for PR33206 |
2 | // |
3 | // RUN: %clang -DDYN=1 -DMALLOC=1 -fPIC -shared %s -o %t-dso1.so |
4 | // RUN: %clang -DDYN=1 -DMALLOC=1 -fPIC -shared %s -o %t-dso2.so %t-dso1.so |
5 | // RUN: %clang %s -o %t-1 %t-dso2.so |
6 | // RUN: env LD_PRELOAD=%shared_libasan %run %t-1 2>&1 | FileCheck %s |
7 | // RUN: %clang -DDYN=1 -DREALLOC=1 -fPIC -shared %s -o %t-dso3.so |
8 | // RUN: %clang -DDYN=1 -DREALLOC=1 -fPIC -shared %s -o %t-dso4.so %t-dso3.so |
9 | // RUN: %clang %s -o %t-2 %t-dso4.so |
10 | // RUN: env LD_PRELOAD=%shared_libasan %run %t-2 2>&1 | FileCheck %s |
11 | // REQUIRES: asan-dynamic-runtime |
12 | |
13 | // FIXME: Test regressed while android bot was disabled. Needs investigation. |
14 | // UNSUPPORTED: android |
15 | |
16 | #include <stdlib.h> |
17 | #include <stdio.h> |
18 | |
19 | #ifdef DYN |
20 | __attribute__((constructor)) void foo() { |
21 | void *p; |
22 | #ifdef MALLOC |
23 | p = malloc(1 << 20); |
24 | #endif |
25 | #ifdef REALLOC |
26 | p = realloc (0, 1 << 20); |
27 | #endif |
28 | free(p); |
29 | } |
30 | #else |
31 | int main() { |
32 | // CHECK: Success |
33 | printf(format: "Success\n" ); |
34 | return 0; |
35 | } |
36 | #endif |
37 | |