diff --git a/src/coreclr/tools/ILTrim.Core/ILTrim.Core.csproj b/src/coreclr/tools/ILTrim.Core/ILTrim.Core.csproj
index 4297b6878b3706..95f9c6fd4230be 100644
--- a/src/coreclr/tools/ILTrim.Core/ILTrim.Core.csproj
+++ b/src/coreclr/tools/ILTrim.Core/ILTrim.Core.csproj
@@ -51,6 +51,7 @@
+
diff --git a/src/coreclr/tools/ILTrim.Tests/ILTrimExpectedFailures.txt b/src/coreclr/tools/ILTrim.Tests/ILTrimExpectedFailures.txt
index 90c596ee59fa81..bea4bab55c9367 100644
--- a/src/coreclr/tools/ILTrim.Tests/ILTrimExpectedFailures.txt
+++ b/src/coreclr/tools/ILTrim.Tests/ILTrimExpectedFailures.txt
@@ -237,11 +237,6 @@ Inheritance.Interfaces.OnReferenceType.InterfaceTypeInOtherUsedOnlyByCopiedAssem
Inheritance.Interfaces.OnReferenceType.InterfaceUsedOnlyAsConstraintIsKept
Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndAssemblyPreserveAll
Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveAll
-Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveFields
-Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveFieldsWithInterfacesMarked
-Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveMethods
-Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveMethodsWithInterfacesMarked
-Inheritance.Interfaces.OnReferenceType.NoInstanceCtor.NoInstanceCtorAndTypePreserveNone
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.DynamicDependencyPreservesInterfaceMethod
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.ExplicitInterfaceCanBeRemovedFromClassWithOnlyStaticMethodUsed
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.GenericWithConstraintDoesNotCauseOtherTypesToKeepInterface
@@ -253,8 +248,6 @@ Inheritance.Interfaces.OnReferenceType.NoKeptCtor.PreserveDependencyPreservesInt
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeHasExplicitInterfaceMethodPreservedViaXml
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeHasExplicitInterfacePropertyPreservedViaXml
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeHasInterfaceMethodPreservedViaXml
-Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeWithPreserveFields
-Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeWithPreserveMethods
Inheritance.Interfaces.OnReferenceType.NoKeptCtor.UnusedTypeWithPreserveMethodsAndInterfaceTypeMarked
Inheritance.Interfaces.OnReferenceType.NoKeptCtorButInterfaceNeeded.ArrayWithIndexAssignedToReturnValue
Inheritance.Interfaces.OnReferenceType.NoKeptCtorButInterfaceNeeded.FieldDowncastedToInterface
@@ -282,14 +275,12 @@ Inheritance.Interfaces.OnReferenceType.NoKeptCtorButInterfaceNeeded.ReturnValueD
Inheritance.Interfaces.OnReferenceType.ObjectCastedToSecondInterfaceHasMemberRemovedButInterfaceKept
Inheritance.Interfaces.OnReferenceType.UnusedComInterfaceIsKept
Inheritance.Interfaces.OnReferenceType.UnusedExplicitInterfaceHasMethodPreservedViaXml
-Inheritance.Interfaces.OnReferenceType.UnusedInterfaceHasMethodPreservedViaXml
Inheritance.Interfaces.OnValueType.NoKeptCtor.InterfaceTypeRemovedWhenOnlyUsedByClassWithOnlyStaticMethod
Inheritance.Interfaces.OnValueType.NoKeptCtor.InterfaceTypeRemovedWhenOnlyUsedByClassWithOnlyStaticMethodMultiple
Inheritance.Interfaces.OnValueType.StructImplementingInterfaceMethodsNested2
Inheritance.Interfaces.OnValueType.StructUsedFromConcreteTypeHasInterfaceMethodRemoved2
Inheritance.Interfaces.OnValueType.StructWithNestedStructImplementingInterface
Inheritance.Interfaces.OnValueType.UnusedExplicitInterfaceHasMethodPreservedViaXml
-Inheritance.Interfaces.OnValueType.UnusedInterfaceHasMethodPreservedViaXml
Inheritance.Interfaces.RecursiveInterfaces.GenericInterfaceImplementedRecursively
Inheritance.Interfaces.RecursiveInterfaces.InterfaceImplementedRecursively
Inheritance.Interfaces.RecursiveInterfaces.OverrideOfRecursiveInterfaceIsRemoved
@@ -348,34 +339,23 @@ LinkAttributes.TypedArgumentsErrors
LinkXml.AssemblyWithPreserveAll
LinkXml.CanPreserveAnExportedType
LinkXml.CanPreserveExportedTypesUsingRegex
-LinkXml.CanPreserveNamespace
-LinkXml.CanPreserveTypesUsingRegex
LinkXml.EmbeddedLinkXmlFromCopyAssemblyIsProcessed
LinkXml.EmbeddedLinkXmlPreservesAdditionalAssemblyWithOverriddenMethod
LinkXml.EmbeddedLinkXmlUnresolvedReferencesAreReported
LinkXml.LinkXmlErrorCases
LinkXml.PreserveIndividualMembersOfNonRequiredType
-LinkXml.PreserveSecondLevelMethodsOfNonRequiredType
-LinkXml.TypeWithPreserveFieldsHasBackingFieldsOfPropertiesRemoved
-LinkXml.UnusedAssemblyWithNoDefinedPreserveHasAllTypesPreserved
LinkXml.UnusedEventPreservedByLinkXmlIsKept
LinkXml.UnusedFieldPreservedByLinkXmlIsKept
LinkXml.UnusedGenericTypeWithPreserveAllHasAllMembersPreserved
LinkXml.UnusedInterfaceTypeOnTypeWithPreserveAllIsKept
-LinkXml.UnusedInterfaceTypeOnTypeWithPreserveNothingIsRemoved
LinkXml.UnusedMethodPreservedByLinkXmlIsKept
-LinkXml.UnusedNestedTypePreservedByLinkXmlIsKept
+LinkXml.UnusedNonRequiredTypeIsRemoved
LinkXml.UnusedPropertyPreservedByLinkXmlIsKept
-LinkXml.UnusedTypeDeclarationPreservedByLinkXmlIsKept
-LinkXml.UnusedTypeIsPresservedWhenEntireAssemblyIsPreserved
-LinkXml.UnusedTypePreservedByLinkXmlIsKept
-LinkXml.UnusedTypePreservedByLinkXmlWithCommentIsKept
LinkXml.UnusedTypeWithNoDefinedPreserveHasAllMembersPreserved
LinkXml.UnusedTypeWithPreserveAllHasAllMembersPreserved
LinkXml.UnusedTypeWithPreserveFieldsHasMethodsRemoved
LinkXml.UnusedTypeWithPreserveMethodsHasFieldsRemoved
LinkXml.UnusedTypeWithPreserveNothingAndPreserveMembers
-LinkXml.UnusedTypeWithPreserveNothingHasMembersRemoved
LinkXml.UsedNonRequiredExportedTypeIsKept
LinkXml.UsedNonRequiredExportedTypeIsKeptWhenRooted
LinkXml.UsedNonRequiredTypeIsKept
@@ -389,7 +369,6 @@ Logging.SourceLines
Metadata.DebuggerDisplayNamesAreKept
Metadata.NamesAreRemoved
Metadata.RootAllAssemblyNamesAreKept
-Metadata.RootDescriptorNamesAreKept
Metadata.RootLibraryAssemblyNamesAreKept
Metadata.RootVisibleAssemblyNamesAreKept
PreserveDependencies.PreserveDependencyDeprecated
@@ -589,7 +568,6 @@ UnreachableBody.OverrideOfAbstractIsStubbedWithUnusedInterface
UnreachableBody.SimpleGetter
UnreachableBody.SimpleSetter
UnreachableBody.WorksWithDynamicDependency
-UnreachableBody.WorksWithLinkXml
UnreachableBody.WorksWithPreserveDependency
Warnings.CanDisableWarnAsError
Warnings.CanDisableWarnings
diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TrimmingDescriptorNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TrimmingDescriptorNode.cs
index 62ce7f689cc1a3..07a3b9aa8d0cdf 100644
--- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TrimmingDescriptorNode.cs
+++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TrimmingDescriptorNode.cs
@@ -8,7 +8,12 @@
namespace ILCompiler.DependencyAnalysis
{
- public class TrimmingDescriptorNode : DependencyNodeCore, ICompilationRootProvider
+ public class TrimmingDescriptorNode : DependencyNodeCore
+#if !ILTRIM
+#pragma warning disable SA1001
+ , ICompilationRootProvider
+#pragma warning restore SA1001
+#endif
{
private readonly string _fileName;
@@ -21,8 +26,12 @@ public override IEnumerable GetStaticDependencies(NodeFacto
{
using (Stream fs = File.OpenRead(_fileName))
{
+#if ILTRIM
+ return DescriptorMarker.GetDependencies(factory.Logger, factory, fs, default, default, _fileName, factory.Settings.FeatureSettings);
+#else
var metadataManager = (UsageBasedMetadataManager)factory.MetadataManager;
return DescriptorMarker.GetDependencies(metadataManager.Logger, factory, fs, default, default, _fileName, metadataManager.FeatureSwitches);
+#endif
}
}
@@ -37,6 +46,8 @@ protected override string GetName(NodeFactory factory)
public override bool StaticDependenciesAreComputed => true;
public override IEnumerable GetConditionalStaticDependencies(NodeFactory context) => null;
public override IEnumerable SearchDynamicDependencies(List> markedNodes, int firstNode, NodeFactory context) => null;
+#if !ILTRIM
void ICompilationRootProvider.AddCompilationRoots(IRootingServiceProvider rootProvider) => rootProvider.AddCompilationRoot(this, "Descriptor from command line");
+#endif
}
}
diff --git a/src/tools/illink/src/linker/Linker/Driver.cs b/src/tools/illink/src/linker/Linker/Driver.cs
index 194bd0f1e2d862..b7ec2cbeacda74 100644
--- a/src/tools/illink/src/linker/Linker/Driver.cs
+++ b/src/tools/illink/src/linker/Linker/Driver.cs
@@ -44,6 +44,7 @@
using ILogger = ILCompiler.ILogWriter;
using DependencyNode = ILCompiler.DependencyAnalysisFramework.DependencyNodeCore;
using AssemblyRootNode = ILCompiler.DependencyAnalysis.AssemblyRootNode;
+using TrimmingDescriptorNode = ILCompiler.DependencyAnalysis.TrimmingDescriptorNode;
#else
using Mono.Cecil;
using Mono.Linker.Steps;
@@ -772,7 +773,9 @@ protected int SetupContext(ILogger? customLogger = null)
return -1;
}
-#if !ILTRIM
+#if ILTRIM
+ inputs.Add(new TrimmingDescriptorNode(xmlFile));
+#else
inputs.Add(new ResolveFromXmlStep(File.OpenRead(xmlFile), xmlFile));
#endif
continue;