@@ -36,31 +36,40 @@ 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 " ,\" aR\"\n " );
39
+ # define DECLARE_EMPTY_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\" a\"\n " );
40
+ # define DECLARE_EMPTY_RETAINED_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\" aR\"\n " );
40
41
#elif defined(__wasm__)
41
42
# define DECLARE_EMPTY_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\"\" ,@\n " );
43
+ # define DECLARE_EMPTY_RETAINED_METADATA_SECTION (name ) DECLAREDECLARE_EMPTY_METADATA_SECTION(name)
42
44
#endif
43
45
44
- #define DECLARE_SWIFT_SECTION (name ) \
45
- DECLARE_EMPTY_METADATA_SECTION (name) \
46
+ #define DECLARE_SWIFT_ENCAPSULATION_SYMBOLS (name ) \
46
47
__attribute__ ((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __start_##name; \
47
48
__attribute__ ((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __stop_##name;
48
49
50
+ #define DECLARE_SWIFT_SECTION (name ) \
51
+ DECLARE_EMPTY_METADATA_SECTION (name) \
52
+ DECLARE_SWIFT_ENCAPSULATION_SYMBOLS(name)
53
+
54
+ #define DECLARE_SWIFT_RETAINED_SECTION (name ) \
55
+ DECLARE_EMPTY_RETAINED_METADATA_SECTION (name) \
56
+ DECLARE_SWIFT_ENCAPSULATION_SYMBOLS(name)
57
+
49
58
extern "C" {
50
- DECLARE_SWIFT_SECTION (swift5_protocols)
51
- DECLARE_SWIFT_SECTION (swift5_protocol_conformances)
52
- DECLARE_SWIFT_SECTION (swift5_type_metadata)
59
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_protocols)
60
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_protocol_conformances)
61
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_type_metadata)
53
62
54
63
DECLARE_SWIFT_SECTION (swift5_typeref)
55
64
DECLARE_SWIFT_SECTION (swift5_reflstr)
56
- DECLARE_SWIFT_SECTION (swift5_fieldmd)
57
- DECLARE_SWIFT_SECTION (swift5_assocty)
58
- DECLARE_SWIFT_SECTION (swift5_replace)
59
- DECLARE_SWIFT_SECTION (swift5_replac2)
60
- DECLARE_SWIFT_SECTION (swift5_builtin)
61
- DECLARE_SWIFT_SECTION (swift5_capture)
62
- DECLARE_SWIFT_SECTION (swift5_mpenum)
63
- DECLARE_SWIFT_SECTION (swift5_accessible_functions)
65
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_fieldmd)
66
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_assocty)
67
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_replace)
68
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_replac2)
69
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_builtin)
70
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_capture)
71
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_mpenum)
72
+ DECLARE_SWIFT_RETAINED_SECTION (swift5_accessible_functions)
64
73
DECLARE_SWIFT_SECTION (swift5_runtime_attributes)
65
74
}
66
75
0 commit comments