Skip to content

Commit 233844f

Browse files
committed
[6.0] IRGen: Rename the section pointing to rodata of generic classes to __objc_clsrolist
Also emit it per default. This is to enable rewriting method lists in generic class' metadata pattern by the linker to the relative format. Relative method lists are very important for pointer security. Risk: Very low. We emit an extra section containing pointers. No one currently consumes this section. rdar://129299739 (cherry picked from commit f063c7e)
1 parent 90961cd commit 233844f

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

include/swift/AST/IRGenOptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ class IRGenOptions {
554554
EnableGlobalISel(false), VirtualFunctionElimination(false),
555555
WitnessMethodElimination(false), ConditionalRuntimeRecords(false),
556556
InternalizeAtLink(false), InternalizeSymbols(false),
557-
EmitGenericRODatas(false), NoPreallocatedInstantiationCaches(false),
557+
EmitGenericRODatas(true), NoPreallocatedInstantiationCaches(false),
558558
DisableReadonlyStaticObjects(false), CollocatedMetadataFunctions(false),
559559
ColocateTypeDescriptors(true), UseRelativeProtocolWitnessTables(false),
560560
UseFragileResilientProtocolWitnesses(false),

lib/IRGen/GenDecl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,9 +1167,9 @@ void IRGenModule::emitGlobalLists() {
11671167
if (IRGen.Opts.EmitGenericRODatas) {
11681168
emitGlobalList(
11691169
*this, GenericRODatas, "generic_ro_datas",
1170-
GetObjCSectionName("__swift_rodatas", "regular"),
1170+
GetObjCSectionName("__objc_clsrolist", "regular"),
11711171
llvm::GlobalValue::InternalLinkage, Int8PtrTy, /*isConstant*/ false,
1172-
/*asContiguousArray*/ true, /*canBeStrippedByLinker*/ true);
1172+
/*asContiguousArray*/ true, /*canBeStrippedByLinker*/ false);
11731173
}
11741174

11751175
// Objective-C class references go in a variable with a meaningless

test/IRGen/generic_class_rodata_list.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// CHECK: .quad 0
3131
// CHECK: .quad __CLASS_METHODS__TtC25generic_class_rodata_list9Somethin
3232

33-
// CHECK: .section __DATA,__swift_rodatas
33+
// CHECK: .section __DATA,__objc_clsrolist
3434
// CHECK: .p2align 3
3535
// CHECK:_generic_ro_datas:
3636
// CHECK: .quad ___unnamed_1+40

0 commit comments

Comments
 (0)