mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-16 08:11:14 +08:00
Prevent invalid optimizations for linker sets
This commit is contained in:
@@ -51,35 +51,35 @@
|
|||||||
static void const * const __set_##set##_sym_##sym \
|
static void const * const __set_##set##_sym_##sym \
|
||||||
__section("set_" #set) __used = &sym
|
__section("set_" #set) __used = &sym
|
||||||
#else /* __rtems__ */
|
#else /* __rtems__ */
|
||||||
#define RTEMS_BSD_DEFINE_SET(set, type) \
|
#define RTEMS_BSD_DEFINE_SET(set, type) \
|
||||||
type const __CONCAT(_bsd__start_set_,set)[0] \
|
type volatile const __CONCAT(_bsd__start_set_,set)[0] \
|
||||||
__section(".rtemsroset.bsd." __STRING(set) ".begin") __used; \
|
__section(".rtemsroset.bsd." __STRING(set) ".begin") __used; \
|
||||||
type const __CONCAT(_bsd__stop_set_,set)[0] \
|
type volatile const __CONCAT(_bsd__stop_set_,set)[0] \
|
||||||
__section(".rtemsroset.bsd." __STRING(set) ".end") __used
|
__section(".rtemsroset.bsd." __STRING(set) ".end") __used
|
||||||
|
|
||||||
#define RTEMS_BSD_DECLARE_SET(set, type) \
|
#define RTEMS_BSD_DECLARE_SET(set, type) \
|
||||||
extern type const __CONCAT(_bsd__start_set_,set)[0]; \
|
extern type volatile const __CONCAT(_bsd__start_set_,set)[0]; \
|
||||||
extern type const __CONCAT(_bsd__stop_set_,set)[0]
|
extern type volatile const __CONCAT(_bsd__stop_set_,set)[0]
|
||||||
|
|
||||||
#define RTEMS_BSD_DEFINE_SET_ITEM(set, sym, type) \
|
#define RTEMS_BSD_DEFINE_SET_ITEM(set, sym, type) \
|
||||||
static type const __set_##set##_sym_##sym \
|
static type volatile const __set_##set##_sym_##sym \
|
||||||
__section(".rtemsroset.bsd." __STRING(set) ".content") __used
|
__section(".rtemsroset.bsd." __STRING(set) ".content") __used
|
||||||
|
|
||||||
#define __MAKE_SET(set, sym) \
|
#define __MAKE_SET(set, sym) \
|
||||||
RTEMS_BSD_DEFINE_SET_ITEM(set, sym, const void *) = &sym
|
RTEMS_BSD_DEFINE_SET_ITEM(set, sym, const void *) = &sym
|
||||||
|
|
||||||
#define RTEMS_BSD_DEFINE_RWSET(set, type) \
|
#define RTEMS_BSD_DEFINE_RWSET(set, type) \
|
||||||
type __CONCAT(_bsd__start_set_,set)[0] \
|
type __CONCAT(_bsd__start_set_,set)[0] \
|
||||||
__section(".rtemsrwset.bsd." __STRING(set) ".begin") __used; \
|
__section(".rtemsrwset.bsd." __STRING(set) ".begin") __used; \
|
||||||
type __CONCAT(_bsd__stop_set_,set)[0] \
|
type __CONCAT(_bsd__stop_set_,set)[0] \
|
||||||
__section(".rtemsrwset.bsd." __STRING(set) ".end") __used
|
__section(".rtemsrwset.bsd." __STRING(set) ".end") __used
|
||||||
|
|
||||||
#define RTEMS_BSD_DECLARE_RWSET(set, type) \
|
#define RTEMS_BSD_DECLARE_RWSET(set, type) \
|
||||||
extern type __CONCAT(_bsd__start_set_,set)[0]; \
|
extern type volatile __CONCAT(_bsd__start_set_,set)[0]; \
|
||||||
extern type __CONCAT(_bsd__stop_set_,set)[0]
|
extern type volatile __CONCAT(_bsd__stop_set_,set)[0]
|
||||||
|
|
||||||
#define RTEMS_BSD_DEFINE_RWSET_ITEM(set, sym, type) \
|
#define RTEMS_BSD_DEFINE_RWSET_ITEM(set, sym, type) \
|
||||||
static type __set_##set##_sym_##sym \
|
static type volatile __set_##set##_sym_##sym \
|
||||||
__section(".rtemsrwset.bsd." __STRING(set) ".content") __used
|
__section(".rtemsrwset.bsd." __STRING(set) ".content") __used
|
||||||
|
|
||||||
#define __MAKE_RWSET(set, sym) \
|
#define __MAKE_RWSET(set, sym) \
|
||||||
|
Reference in New Issue
Block a user