diff --git a/src/tools/illink/src/linker/Linker.Steps/RemoveFeaturesStep.cs b/src/tools/illink/src/linker/Linker.Steps/RemoveFeaturesStep.cs index 14bb889fae73a..1c65ab0ba8a39 100644 --- a/src/tools/illink/src/linker/Linker.Steps/RemoveFeaturesStep.cs +++ b/src/tools/illink/src/linker/Linker.Steps/RemoveFeaturesStep.cs @@ -12,6 +12,7 @@ public class RemoveFeaturesStep : BaseStep public bool FeatureCOM { get; set; } public bool FeatureETW { get; set; } + public bool FeatureSRE { get; set; } // // Manually overrides System.Globalization.Invariant mode @@ -57,6 +58,17 @@ void ProcessType (TypeDefinition type) ExcludeEventSourceImplementation (type); } + if (FeatureSRE) { + if (type.Namespace == "System" && type.Name == "RuntimeType") { + foreach (var method in type.Methods) { + if (method.Name == "MakeTypeBuilderInstantiation") { + Annotations.SetAction (method, MethodAction.ConvertToThrow); + break; + } + } + } + } + if (RemoveCustomAttributes (type)) { if (FeatureCOM && type.IsImport) { type.IsImport = false; diff --git a/src/tools/illink/src/linker/Linker/Driver.cs b/src/tools/illink/src/linker/Linker/Driver.cs index f6a2beebe00cd..3af5626bd91a9 100644 --- a/src/tools/illink/src/linker/Linker/Driver.cs +++ b/src/tools/illink/src/linker/Linker/Driver.cs @@ -369,6 +369,7 @@ public void Run (ILogger customLogger = null) p.AddStepBefore (typeof (MarkStep), new RemoveFeaturesStep () { FeatureCOM = excluded_features.Contains ("com"), FeatureETW = excluded_features.Contains ("etw"), + FeatureSRE = excluded_features.Contains ("sre"), FeatureGlobalization = excluded_features.Contains ("globalization") });