Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/linker_set.h
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
#else | #else | ||||
#define __MAKE_SET_CONST const | #define __MAKE_SET_CONST const | ||||
#endif | #endif | ||||
/* | /* | ||||
* Private macros, not to be used outside this header file. | * Private macros, not to be used outside this header file. | ||||
*/ | */ | ||||
#ifdef __GNUCLIKE___SECTION | #ifdef __GNUCLIKE___SECTION | ||||
/* | |||||
* The userspace address sanitizer inserts redzones around global variables, | |||||
* violating the assumption that linker set elements are packed. | |||||
*/ | |||||
#ifdef _KERNEL | |||||
#define __NOASAN | |||||
#else | |||||
#define __NOASAN __nosanitizeaddress | |||||
#endif | |||||
#define __MAKE_SET_QV(set, sym, qv) \ | #define __MAKE_SET_QV(set, sym, qv) \ | ||||
__WEAK(__CONCAT(__start_set_,set)); \ | __WEAK(__CONCAT(__start_set_,set)); \ | ||||
__WEAK(__CONCAT(__stop_set_,set)); \ | __WEAK(__CONCAT(__stop_set_,set)); \ | ||||
static void const * qv \ | static void const * qv \ | ||||
__NOASAN \ | |||||
__set_##set##_sym_##sym __section("set_" #set) \ | __set_##set##_sym_##sym __section("set_" #set) \ | ||||
__nosanitizeaddress \ | |||||
__used = &(sym) | __used = &(sym) | ||||
#define __MAKE_SET(set, sym) __MAKE_SET_QV(set, sym, __MAKE_SET_CONST) | #define __MAKE_SET(set, sym) __MAKE_SET_QV(set, sym, __MAKE_SET_CONST) | ||||
#else /* !__GNUCLIKE___SECTION */ | #else /* !__GNUCLIKE___SECTION */ | ||||
#error this file needs to be ported to your compiler | #error this file needs to be ported to your compiler | ||||
#endif /* __GNUCLIKE___SECTION */ | #endif /* __GNUCLIKE___SECTION */ | ||||
/* | /* | ||||
* Public macros. | * Public macros. | ||||
Show All 40 Lines |