3 * @author Lunaixsky (lunaxisky@qq.com)
4 * @brief Linker generated array definition
8 * @copyright Copyright (c) 2023
11 #ifndef __LUNAIX_LDGA_H
12 #define __LUNAIX_LDGA_H
14 #include <lunaix/types.h>
16 #define export_ldga_el(ga_name, el_name, type, val) \
17 type __attribute__((section(".lga." #ga_name))) \
18 __lga_##ga_name##_##el_name = (type)(val)
20 #define ldga_foreach(ga_name, el_type, index, el) \
21 extern el_type __lga_##ga_name##_start[], __lga_##ga_name##_end; \
22 for (index = 0, el = __lga_##ga_name##_start[index]; \
23 (ptr_t)&__lga_##ga_name##_start[index] < \
24 (ptr_t)&__lga_##ga_name##_end; \
25 el = __lga_##ga_name##_start[++index])
27 #endif /* __LUNAIX_LDGA_H */