18#define __PW_MUST_PLACE_STRINGIFY(x) #x
19#define _PW_MUST_PLACE_STRINGIFY(x) __PW_MUST_PLACE_STRINGIFY(x)
25#define ___PW_MUST_PLACE(isection, start_sym, end_sym) \
29 ASSERT(start_sym != end_sym, \
30 "Error: PW_MUST_PLACE did not find required input section(s) matching pattern:"); \
31 ASSERT(start_sym != end_sym, #isection); \
32 ASSERT(start_sym != end_sym, "at file, line:"); \
33 ASSERT(start_sym != end_sym, __FILE__); \
34 ASSERT(start_sym != end_sym, _PW_MUST_PLACE_STRINGIFY(__LINE__)); \
35 ASSERT(start_sym != end_sym, "")
37#define __PW_MUST_PLACE(isection, sym_prefix, unique) \
38 ___PW_MUST_PLACE(isection, sym_prefix ## start_ ## unique, sym_prefix ## end_ ## unique)
40#define _PW_MUST_PLACE(isection, sym_prefix, unique) \
41 __PW_MUST_PLACE(isection, sym_prefix, unique)
87#define PW_MUST_PLACE(isection) \
88 _PW_MUST_PLACE(isection, __section_place_, __COUNTER__)
92#define ___PW_MUST_PLACE_SIZE(isection, isize, start_sym, end_sym) \
96 ASSERT(end_sym - start_sym == isize , \
97 "Error: PW_MUST_PLACE_SIZE found input section(s) with unexpected size:"); \
98 ASSERT(end_sym - start_sym == isize, #isection); \
99 ASSERT(end_sym - start_sym == isize, "at file, line:"); \
100 ASSERT(end_sym - start_sym == isize, __FILE__); \
101 ASSERT(end_sym - start_sym == isize, _PW_MUST_PLACE_STRINGIFY(__LINE__)); \
102 ASSERT(end_sym - start_sym == isize, "")
104#define __PW_MUST_PLACE_SIZE(isection, isize, sym_prefix, unique) \
105 ___PW_MUST_PLACE_SIZE(isection, isize, sym_prefix ## start_ ## unique, sym_prefix ## end_ ## unique)
107#define _PW_MUST_PLACE_SIZE(isection, isize, sym_prefix, unique) \
108 __PW_MUST_PLACE_SIZE(isection, isize, sym_prefix, unique)
157#define PW_MUST_PLACE_SIZE(isection, isize) \
158 _PW_MUST_PLACE_SIZE(isection, isize, __section_place_, __COUNTER__)
162#define ___PW_MUST_NOT_PLACE(isection, start_sym, end_sym) \
166 ASSERT(start_sym == end_sym, \
167 "Error: PW_MUST_NOT_PLACE found unexpected input section(s) matching pattern:"); \
168 ASSERT(start_sym == end_sym, #isection); \
169 ASSERT(start_sym == end_sym, "at file, line:"); \
170 ASSERT(start_sym == end_sym, __FILE__); \
171 ASSERT(start_sym == end_sym, _PW_MUST_PLACE_STRINGIFY(__LINE__)); \
172 ASSERT(start_sym == end_sym, "")
174#define __PW_MUST_NOT_PLACE(isection, sym_prefix, unique) \
175 ___PW_MUST_NOT_PLACE(isection, sym_prefix ## start_ ## unique, sym_prefix ## end_ ## unique)
177#define _PW_MUST_NOT_PLACE(isection, sym_prefix, unique) \
178 __PW_MUST_NOT_PLACE(isection, sym_prefix, unique)
200#define PW_MUST_NOT_PLACE(isection) \
201 _PW_MUST_NOT_PLACE(isection, __section_not_place_, __COUNTER__)