Skip to content

Commit 05e2fc1

Browse files
Stop using SHF_GNU_RETAIN for some reflection sections
To have consistent section flags between compiler emitted object files and swiftrt.o.
1 parent 0e410da commit 05e2fc1

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

stdlib/public/runtime/SwiftRT-ELF-WASM.cpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
4958
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)
5362

5463
DECLARE_SWIFT_SECTION(swift5_typeref)
5564
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)
6473
DECLARE_SWIFT_SECTION(swift5_runtime_attributes)
6574
}
6675

0 commit comments

Comments
 (0)