@@ -36,31 +36,40 @@ static const void *__backtraceRef __attribute__((used))
3636// by the linker. Otherwise, we may end up with undefined symbol references as
3737// the linker table section was never constructed.
3838#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 " );
4041#elif defined(__wasm__)
4142# define DECLARE_EMPTY_METADATA_SECTION (name ) __asm__ (" \t .section " #name " ,\"\" ,@\n " );
43+ # define DECLARE_EMPTY_RETAINED_METADATA_SECTION (name ) DECLAREDECLARE_EMPTY_METADATA_SECTION(name)
4244#endif
4345
44- #define DECLARE_SWIFT_SECTION (name ) \
45- DECLARE_EMPTY_METADATA_SECTION (name) \
46+ #define DECLARE_SWIFT_ENCAPSULATION_SYMBOLS (name ) \
4647 __attribute__ ((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __start_##name; \
4748 __attribute__ ((__visibility__(" hidden" ),__aligned__(1 ))) extern const char __stop_##name;
4849
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+
4958extern "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)
5362
5463DECLARE_SWIFT_SECTION (swift5_typeref)
5564DECLARE_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)
6473DECLARE_SWIFT_SECTION (swift5_runtime_attributes)
6574}
6675
0 commit comments