@@ -36,32 +36,43 @@ static const void *__backtraceRef __attribute__((used))
36
36
// by the linker. Otherwise, we may end up with undefined symbol references as
37
37
// the linker table section was never constructed.
38
38
#if defined(__ELF__)
39
- # define DECLARE_EMPTY_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\" a \"\n " );
39
+ # define DECLARE_EMPTY_METADATA_SECTION (name,attrs ) __asm__ (" \t .section " #name " ,\" " attrs " \"\n " );
40
40
#elif defined(__wasm__)
41
- # define DECLARE_EMPTY_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\" R\" ,@\n " );
41
+ # define DECLARE_EMPTY_METADATA_SECTION (name,attrs ) __asm__ (" \t .section " #name " ,\" R\" ,@\n " );
42
42
#endif
43
43
44
- #define DECLARE_SWIFT_SECTION (name ) \
45
- DECLARE_EMPTY_METADATA_SECTION (name) \
46
- __attribute__((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __start_##name; \
47
- __attribute__ ((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __stop_##name;
44
+ #define BOUNDS_VISIBILITY __attribute__ ((__visibility__(" hidden" ),__aligned__(1 )))
45
+ #define DECLARE_BOUNDS (name ) \
46
+ BOUNDS_VISIBILITY extern const char __start_##name; \
47
+ BOUNDS_VISIBILITY extern const char __stop_##name;
48
+
49
+ #define DECLARE_SWIFT_SECTION (name ) \
50
+ DECLARE_EMPTY_METADATA_SECTION (name," aR" ) \
51
+ DECLARE_BOUNDS(name)
52
+
53
+ // These may or may not be present, depending on compiler switches; it's
54
+ // worth calling them out as a result.
55
+ #define DECLARE_SWIFT_REFLECTION_SECTION (name ) \
56
+ DECLARE_SWIFT_SECTION (name)
48
57
49
58
extern "C" {
50
59
DECLARE_SWIFT_SECTION (swift5_protocols)
51
60
DECLARE_SWIFT_SECTION (swift5_protocol_conformances)
52
61
DECLARE_SWIFT_SECTION (swift5_type_metadata)
53
62
54
- DECLARE_SWIFT_SECTION(swift5_typeref)
55
- DECLARE_SWIFT_SECTION(swift5_reflstr)
56
- DECLARE_SWIFT_SECTION(swift5_fieldmd)
57
- DECLARE_SWIFT_SECTION(swift5_assocty)
63
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_fieldmd)
64
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_builtin)
65
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_assocty)
66
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_capture)
67
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_reflstr)
68
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_typeref)
69
+ DECLARE_SWIFT_REFLECTION_SECTION (swift5_mpenum)
70
+
58
71
DECLARE_SWIFT_SECTION (swift5_replace)
59
72
DECLARE_SWIFT_SECTION (swift5_replac2)
60
- DECLARE_SWIFT_SECTION(swift5_builtin)
61
- DECLARE_SWIFT_SECTION(swift5_capture)
62
- DECLARE_SWIFT_SECTION(swift5_mpenum)
63
73
DECLARE_SWIFT_SECTION (swift5_accessible_functions)
64
74
DECLARE_SWIFT_SECTION (swift5_runtime_attributes)
75
+
65
76
DECLARE_SWIFT_SECTION (swift5_tests)
66
77
}
67
78
0 commit comments