@@ -1042,36 +1042,20 @@ static bool shouldAdhocSignByDefault(Architecture arch, PlatformType platform) {
1042
1042
platform == PLATFORM_XROS_SIMULATOR;
1043
1043
}
1044
1044
1045
- template <unsigned long N>
1046
- using MinVersions = std::array<std::pair<PlatformType, VersionTuple>, N>;
1047
-
1048
- // / Returns true if the platform is greater than the min version.
1049
- // / Returns false if the platform does not exist.
1050
- template <unsigned long N>
1051
- static bool greaterEqMinVersion (const MinVersions<N> &minVersions,
1052
- bool ignoreSimulator) {
1053
- PlatformType platform = config->platformInfo .target .Platform ;
1054
- if (ignoreSimulator)
1055
- platform = removeSimulator (platform);
1056
- auto it = llvm::find_if (minVersions,
1057
- [&](const auto &p) { return p.first == platform; });
1058
- if (it != minVersions.end ())
1059
- if (config->platformInfo .target .MinDeployment >= it->second )
1060
- return true ;
1061
- return false ;
1062
- }
1063
-
1064
1045
static bool dataConstDefault (const InputArgList &args) {
1065
- static const MinVersions<6 > minVersion = {{
1066
- {PLATFORM_MACOS, VersionTuple (10 , 15 )},
1067
- {PLATFORM_IOS, VersionTuple (13 , 0 )},
1068
- {PLATFORM_TVOS, VersionTuple (13 , 0 )},
1069
- {PLATFORM_WATCHOS, VersionTuple (6 , 0 )},
1070
- {PLATFORM_XROS, VersionTuple (1 , 0 )},
1071
- {PLATFORM_BRIDGEOS, VersionTuple (4 , 0 )},
1072
- }};
1073
- if (!greaterEqMinVersion (minVersion, true ))
1074
- return false ;
1046
+ static const std::array<std::pair<PlatformType, VersionTuple>, 6 > minVersion =
1047
+ {{{PLATFORM_MACOS, VersionTuple (10 , 15 )},
1048
+ {PLATFORM_IOS, VersionTuple (13 , 0 )},
1049
+ {PLATFORM_TVOS, VersionTuple (13 , 0 )},
1050
+ {PLATFORM_WATCHOS, VersionTuple (6 , 0 )},
1051
+ {PLATFORM_XROS, VersionTuple (1 , 0 )},
1052
+ {PLATFORM_BRIDGEOS, VersionTuple (4 , 0 )}}};
1053
+ PlatformType platform = removeSimulator (config->platformInfo .target .Platform );
1054
+ auto it = llvm::find_if (minVersion,
1055
+ [&](const auto &p) { return p.first == platform; });
1056
+ if (it != minVersion.end ())
1057
+ if (config->platformInfo .target .MinDeployment < it->second )
1058
+ return false ;
1075
1059
1076
1060
switch (config->outputType ) {
1077
1061
case MH_EXECUTE:
@@ -1122,18 +1106,30 @@ static bool shouldEmitChainedFixups(const InputArgList &args) {
1122
1106
if (requested)
1123
1107
return true ;
1124
1108
1125
- static const MinVersions<9 > minVersion = {{
1126
- {PLATFORM_IOS, VersionTuple (13 , 4 )},
1127
- {PLATFORM_IOSSIMULATOR, VersionTuple (16 , 0 )},
1128
- {PLATFORM_MACOS, VersionTuple (13 , 0 )},
1129
- {PLATFORM_TVOS, VersionTuple (14 , 0 )},
1130
- {PLATFORM_TVOSSIMULATOR, VersionTuple (15 , 0 )},
1131
- {PLATFORM_WATCHOS, VersionTuple (7 , 0 )},
1132
- {PLATFORM_WATCHOSSIMULATOR, VersionTuple (8 , 0 )},
1133
- {PLATFORM_XROS, VersionTuple (1 , 0 )},
1134
- {PLATFORM_XROS_SIMULATOR, VersionTuple (1 , 0 )},
1135
- }};
1136
- return greaterEqMinVersion (minVersion, false );
1109
+ static const std::array<std::pair<PlatformType, VersionTuple>, 9 > minVersion =
1110
+ {{
1111
+ {PLATFORM_IOS, VersionTuple (13 , 4 )},
1112
+ {PLATFORM_IOSSIMULATOR, VersionTuple (16 , 0 )},
1113
+ {PLATFORM_MACOS, VersionTuple (13 , 0 )},
1114
+ {PLATFORM_TVOS, VersionTuple (14 , 0 )},
1115
+ {PLATFORM_TVOSSIMULATOR, VersionTuple (15 , 0 )},
1116
+ {PLATFORM_WATCHOS, VersionTuple (7 , 0 )},
1117
+ {PLATFORM_WATCHOSSIMULATOR, VersionTuple (8 , 0 )},
1118
+ {PLATFORM_XROS, VersionTuple (1 , 0 )},
1119
+ {PLATFORM_XROS_SIMULATOR, VersionTuple (1 , 0 )},
1120
+ }};
1121
+ PlatformType platform = config->platformInfo .target .Platform ;
1122
+ auto it = llvm::find_if (minVersion,
1123
+ [&](const auto &p) { return p.first == platform; });
1124
+
1125
+ // We don't know the versions for other platforms, so default to disabled.
1126
+ if (it == minVersion.end ())
1127
+ return false ;
1128
+
1129
+ if (it->second > config->platformInfo .target .MinDeployment )
1130
+ return false ;
1131
+
1132
+ return true ;
1137
1133
}
1138
1134
1139
1135
static bool shouldEmitRelativeMethodLists (const InputArgList &args) {
@@ -1144,20 +1140,12 @@ static bool shouldEmitRelativeMethodLists(const InputArgList &args) {
1144
1140
if (arg && arg->getOption ().getID () == OPT_no_objc_relative_method_lists)
1145
1141
return false ;
1146
1142
1147
- // If no flag is specified, enable this on newer versions by default.
1148
- // The min versions is taken from
1149
- // ld64(https://github.com/apple-oss-distributions/ld64/blob/47f477cb721755419018f7530038b272e9d0cdea/src/ld/ld.hpp#L310)
1150
- // to mimic to operation of ld64
1151
- // [here](https://github.com/apple-oss-distributions/ld64/blob/47f477cb721755419018f7530038b272e9d0cdea/src/ld/Options.cpp#L6085-L6101)
1152
- static const MinVersions<6 > minVersion = {{
1153
- {PLATFORM_MACOS, VersionTuple (10 , 16 )},
1154
- {PLATFORM_IOS, VersionTuple (14 , 0 )},
1155
- {PLATFORM_WATCHOS, VersionTuple (7 , 0 )},
1156
- {PLATFORM_TVOS, VersionTuple (14 , 0 )},
1157
- {PLATFORM_BRIDGEOS, VersionTuple (5 , 0 )},
1158
- {PLATFORM_XROS, VersionTuple (1 , 0 )},
1159
- }};
1160
- return greaterEqMinVersion (minVersion, true );
1143
+ // TODO: If no flag is specified, don't default to false, but instead:
1144
+ // - default false on < ios14
1145
+ // - default true on >= ios14
1146
+ // For now, until this feature is confirmed stable, default to false if no
1147
+ // flag is explicitly specified
1148
+ return false ;
1161
1149
}
1162
1150
1163
1151
void SymbolPatterns::clear () {
0 commit comments