31 lines
468 B
C++
31 lines
468 B
C++
// RUN: %clangxx_asan %s -o %t && %run %t | FileCheck %s
|
|
|
|
#include <stdio.h>
|
|
|
|
int c = 0;
|
|
|
|
static void foo() {
|
|
++c;
|
|
}
|
|
|
|
static void fini() {
|
|
printf("fini\n");
|
|
}
|
|
|
|
int main() {
|
|
printf("c=%d\n", c);
|
|
return 0;
|
|
}
|
|
|
|
__attribute__((section(".preinit_array")))
|
|
void (*call_foo)(void) = &foo;
|
|
|
|
__attribute__((section(".init_array")))
|
|
void (*call_foo_2)(void) = &foo;
|
|
|
|
__attribute__((section(".fini_array")))
|
|
void (*call_foo_3)(void) = &fini;
|
|
|
|
// CHECK: c=2
|
|
// CHECK: fini
|