master
1#if defined(_REENTRANT)
2#include <stdatomic.h>
3extern void __wasi_init_tp(void);
4#endif
5extern void __wasm_call_ctors(void);
6
7__attribute__((export_name("_initialize")))
8void _initialize(void) {
9#if defined(_REENTRANT)
10 static volatile atomic_int initialized = 0;
11 int expected = 0;
12 if (!atomic_compare_exchange_strong(&initialized, &expected, 1)) {
13 __builtin_trap();
14 }
15
16 __wasi_init_tp();
17#else
18 static volatile int initialized = 0;
19 if (initialized != 0) {
20 __builtin_trap();
21 }
22 initialized = 1;
23#endif
24
25 // The linker synthesizes this to call constructors.
26 __wasm_call_ctors();
27}