mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
a359de7893
This changes *NSYNC to allocate waiters on the stack so our locks don't need to depend on dynamic memory. This make our runtiem simpler, and it also fixes bugs with thread cancellation support.
21 lines
749 B
C
21 lines
749 B
C
#ifndef COSMOPOLITAN_LIBC_INTRIN_LEAKY_INTERNAL_H_
|
|
#define COSMOPOLITAN_LIBC_INTRIN_LEAKY_INTERNAL_H_
|
|
#include "libc/dce.h"
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
#if IsAsan()
|
|
#define IGNORE_LEAKS(FUNC) \
|
|
__static_yoink("_leaky_start"); \
|
|
void *_leaky_##FUNC[] _Section(".piro.relo.sort.leaky.2." #FUNC \
|
|
",\"aw\",@init_array #") = {FUNC};
|
|
#else
|
|
#define IGNORE_LEAKS(FUNC)
|
|
#endif
|
|
|
|
extern intptr_t _leaky_end[] __attribute__((__weak__));
|
|
extern intptr_t _leaky_start[] __attribute__((__weak__));
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_INTRIN_LEAKY_INTERNAL_H_ */
|