From 0c9eb70a4646364f4b425f69b366be766043bef9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexander=20K=C3=B6plinger?= Date: Fri, 23 Jun 2017 16:03:36 +0200 Subject: [PATCH] [cil-strip] Upgrade to latest Mono.Cecil API This greatly simplifies the code and as a bonus also shaves off about 300ms when stripping mscorlib.dll. --- mcs/tools/cil-strip/AssemblyStripper.cs | 168 +--------- mcs/tools/cil-strip/Makefile | 2 +- mcs/tools/cil-strip/cilstrip.cs | 12 +- .../cil-strip/mono-cil-strip.exe.sources | 312 ------------------ 4 files changed, 26 insertions(+), 468 deletions(-) diff --git a/mcs/tools/cil-strip/AssemblyStripper.cs b/mcs/tools/cil-strip/AssemblyStripper.cs index 0ad4bfcd69e..7a2b69df9ea 100644 --- a/mcs/tools/cil-strip/AssemblyStripper.cs +++ b/mcs/tools/cil-strip/AssemblyStripper.cs @@ -30,194 +30,62 @@ using System.Collections; using System.IO; using Mono.Cecil; -using Mono.Cecil.Binary; using Mono.Cecil.Cil; -using Mono.Cecil.Metadata; namespace Mono.CilStripper { class AssemblyStripper { AssemblyDefinition assembly; - BinaryWriter writer; + string outputFileName; - Image original; - Image stripped; - - ReflectionWriter reflection_writer; - MetadataWriter metadata_writer; - - TablesHeap original_tables; - TablesHeap stripped_tables; - - AssemblyStripper (AssemblyDefinition assembly, BinaryWriter writer) + AssemblyStripper (AssemblyDefinition assembly, string outputFileName) { this.assembly = assembly; - this.writer = writer; + this.outputFileName = outputFileName; } void Strip () { - FullLoad (); ClearMethodBodies (); - CopyOriginalImage (); - PatchMethods (); - PatchFields (); - PatchResources (); Write (); } - void FullLoad () - { - assembly.MainModule.FullLoad (); - } - void ClearMethodBodies () { - foreach (TypeDefinition type in assembly.MainModule.Types) { - ClearMethodBodies (type.Constructors); + foreach (TypeDefinition type in assembly.MainModule.GetTypes()) { ClearMethodBodies (type.Methods); } } - static void ClearMethodBodies (ICollection methods) + void ClearMethodBodies (ICollection methods) { foreach (MethodDefinition method in methods) { - if (!method.HasBody) - continue; - - MethodBody body = new MethodBody (method); - body.CilWorker.Emit (OpCodes.Ret); - - method.Body = body; - } - } - - void CopyOriginalImage () - { - original = assembly.MainModule.Image; - stripped = Image.CreateImage(); + method.ImplAttributes |= MethodImplAttributes.NoInlining; - stripped.Accept (new CopyImageVisitor (original)); - - assembly.MainModule.Image = stripped; - - original_tables = original.MetadataRoot.Streams.TablesHeap; - stripped_tables = stripped.MetadataRoot.Streams.TablesHeap; - - TableCollection tables = original_tables.Tables; - foreach (IMetadataTable table in tables) - stripped_tables.Tables.Add(table); - - stripped_tables.Valid = original_tables.Valid; - stripped_tables.Sorted = original_tables.Sorted; - - reflection_writer = new ReflectionWriter (assembly.MainModule); - reflection_writer.StructureWriter = new StructureWriter (assembly, writer); - reflection_writer.CodeWriter.Stripped = true; - - metadata_writer = reflection_writer.MetadataWriter; - - PatchHeap (metadata_writer.StringWriter, original.MetadataRoot.Streams.StringsHeap); - PatchHeap (metadata_writer.GuidWriter, original.MetadataRoot.Streams.GuidHeap); - PatchHeap (metadata_writer.UserStringWriter, original.MetadataRoot.Streams.UserStringsHeap); - PatchHeap (metadata_writer.BlobWriter, original.MetadataRoot.Streams.BlobHeap); - - if (assembly.EntryPoint != null) - metadata_writer.EntryPointToken = assembly.EntryPoint.MetadataToken.ToUInt (); - } - - static void PatchHeap (MemoryBinaryWriter heap_writer, MetadataHeap heap) - { - if (heap == null) - return; - - heap_writer.BaseStream.Position = 0; - heap_writer.Write (heap.Data); - } - - void PatchMethods () - { - MethodTable methodTable = (MethodTable) stripped_tables [MethodTable.RId]; - if (methodTable == null) - return; - - RVA method_rva = RVA.Zero; - - for (int i = 0; i < methodTable.Rows.Count; i++) { - MethodRow methodRow = methodTable[i]; - - methodRow.ImplFlags |= MethodImplAttributes.NoInlining; - - MetadataToken methodToken = MetadataToken.FromMetadataRow (TokenType.Method, i); - - MethodDefinition method = (MethodDefinition) assembly.MainModule.LookupByToken (methodToken); - - if (method.HasBody) { - method_rva = method_rva != RVA.Zero - ? method_rva - : reflection_writer.CodeWriter.WriteMethodBody (method); - - methodRow.RVA = method_rva; - } else - methodRow.RVA = RVA.Zero; - } - } - - void PatchFields () - { - FieldRVATable fieldRvaTable = (FieldRVATable) stripped_tables [FieldRVATable.RId]; - if (fieldRvaTable == null) - return; - - for (int i = 0; i < fieldRvaTable.Rows.Count; i++) { - FieldRVARow fieldRvaRow = fieldRvaTable [i]; - - MetadataToken fieldToken = new MetadataToken (TokenType.Field, fieldRvaRow.Field); - - FieldDefinition field = (FieldDefinition) assembly.MainModule.LookupByToken (fieldToken); - - fieldRvaRow.RVA = metadata_writer.GetDataCursor (); - metadata_writer.AddData (field.InitialValue.Length + 3 & (~3)); - metadata_writer.AddFieldInitData (field.InitialValue); - } - } - - void PatchResources () - { - ManifestResourceTable resourceTable = (ManifestResourceTable) stripped_tables [ManifestResourceTable.RId]; - if (resourceTable == null) - return; - - for (int i = 0; i < resourceTable.Rows.Count; i++) { - ManifestResourceRow resourceRow = resourceTable [i]; - - if (resourceRow.Implementation.RID != 0) + if (!method.HasBody) continue; - foreach (Resource resource in assembly.MainModule.Resources) { - EmbeddedResource er = resource as EmbeddedResource; - if (er == null) - continue; - - if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name]) - continue; + var processor = method.Body.GetILProcessor (); + processor.Body.Instructions.Clear (); + processor.Emit (OpCodes.Ret); - resourceRow.Offset = metadata_writer.AddResource (er.Data); - } + method.Body.Variables.Clear (); + method.Body.ExceptionHandlers.Clear (); } } void Write () { - stripped.MetadataRoot.Accept (metadata_writer); + if (outputFileName == null) + assembly.Write (); + else + assembly.Write (outputFileName); } - public static void StripAssembly (AssemblyDefinition assembly, string file) + public static void StripAssembly (AssemblyDefinition assembly, string outputFileName) { - using (FileStream fs = new FileStream (file, FileMode.Create, FileAccess.Write, FileShare.None)) { - new AssemblyStripper (assembly, new BinaryWriter (fs)).Strip (); - } + new AssemblyStripper (assembly, outputFileName).Strip (); } } } diff --git a/mcs/tools/cil-strip/Makefile b/mcs/tools/cil-strip/Makefile index e84d78325e6..1be503cb8c5 100644 --- a/mcs/tools/cil-strip/Makefile +++ b/mcs/tools/cil-strip/Makefile @@ -3,7 +3,7 @@ SUBDIRS = include ../../build/rules.make LOCAL_MCS_FLAGS = -LIB_REFS = System +LIB_REFS = System Mono.Cecil PROGRAM = mono-cil-strip.exe diff --git a/mcs/tools/cil-strip/cilstrip.cs b/mcs/tools/cil-strip/cilstrip.cs index ec80b178ca6..b5d7ff13094 100644 --- a/mcs/tools/cil-strip/cilstrip.cs +++ b/mcs/tools/cil-strip/cilstrip.cs @@ -25,15 +25,17 @@ namespace Mono.CilStripper { string file = args [0]; string output = args.Length > 1 ? args [1] : file; + bool replace = file == output; try { - AssemblyDefinition assembly = AssemblyFactory.GetAssembly (file); - StripAssembly (assembly, output); + using (var assembly = AssemblyDefinition.ReadAssembly (file, new ReaderParameters { ReadWrite = replace })) { + StripAssembly (assembly, replace ? null : output); + } - if (file != output) - Console.WriteLine ("Assembly {0} stripped out into {1}", file, output); - else + if (replace) Console.WriteLine ("Assembly {0} stripped", file); + else + Console.WriteLine ("Assembly {0} stripped out into {1}", file, output); return 0; } catch (TargetInvocationException tie) { Console.WriteLine ("Error: {0}", tie.InnerException); diff --git a/mcs/tools/cil-strip/mono-cil-strip.exe.sources b/mcs/tools/cil-strip/mono-cil-strip.exe.sources index 5ea4d803027..78a62f2155d 100644 --- a/mcs/tools/cil-strip/mono-cil-strip.exe.sources +++ b/mcs/tools/cil-strip/mono-cil-strip.exe.sources @@ -1,314 +1,2 @@ ./cilstrip.cs ./AssemblyStripper.cs -./Mono.Cecil/AggressiveReflectionReader.cs -./Mono.Cecil/ArrayDimension.cs -./Mono.Cecil/ArrayDimensionCollection.cs -./Mono.Cecil/ArrayType.cs -./Mono.Cecil/AssemblyDefinition.cs -./Mono.Cecil/AssemblyFactory.cs -./Mono.Cecil/AssemblyFlags.cs -./Mono.Cecil/AssemblyHashAlgorithm.cs -./Mono.Cecil/AssemblyInfo.cs -./Mono.Cecil/AssemblyKind.cs -./Mono.Cecil/AssemblyLinkedResource.cs -./Mono.Cecil/AssemblyNameDefinition.cs -./Mono.Cecil/AssemblyNameReference.cs -./Mono.Cecil/AssemblyNameReferenceCollection.cs -./Mono.Cecil/BaseAssemblyResolver.cs -./Mono.Cecil/BaseReflectionReader.cs -./Mono.Cecil/BaseReflectionVisitor.cs -./Mono.Cecil/BaseStructureVisitor.cs -./Mono.Cecil/CallSite.cs -./Mono.Cecil/CompactFrameworkCompatibility.cs -./Mono.Cecil/Constants.cs -./Mono.Cecil/ConstraintCollection.cs -./Mono.Cecil/ConstructorCollection.cs -./Mono.Cecil/CustomAttribute.cs -./Mono.Cecil/CustomAttributeCollection.cs -./Mono.Cecil/DefaultAssemblyResolver.cs -./Mono.Cecil/DefaultImporter.cs -./Mono.Cecil/EmbeddedResource.cs -./Mono.Cecil/EventAttributes.cs -./Mono.Cecil/EventDefinition.cs -./Mono.Cecil/EventDefinitionCollection.cs -./Mono.Cecil/EventReference.cs -./Mono.Cecil/ExternTypeCollection.cs -./Mono.Cecil/FieldAttributes.cs -./Mono.Cecil/FieldDefinition.cs -./Mono.Cecil/FieldDefinitionCollection.cs -./Mono.Cecil/FieldReference.cs -./Mono.Cecil/FileAttributes.cs -./Mono.Cecil/FunctionPointerType.cs -./Mono.Cecil/GenericArgumentCollection.cs -./Mono.Cecil/GenericContext.cs -./Mono.Cecil/GenericInstanceMethod.cs -./Mono.Cecil/GenericInstanceType.cs -./Mono.Cecil/GenericParameter.cs -./Mono.Cecil/GenericParameterAttributes.cs -./Mono.Cecil/GenericParameterCollection.cs -./Mono.Cecil/HashCodeProvider.cs -./Mono.Cecil/IAnnotationProvider.cs -./Mono.Cecil/IAssemblyResolver.cs -./Mono.Cecil/ICustomAttributeProvider.cs -./Mono.Cecil/IDetailReader.cs -./Mono.Cecil/IGenericInstance.cs -./Mono.Cecil/IGenericParameterProvider.cs -./Mono.Cecil/IHasConstant.cs -./Mono.Cecil/IHasMarshalSpec.cs -./Mono.Cecil/IHasSecurity.cs -./Mono.Cecil/IImporter.cs -./Mono.Cecil/IMemberDefinition.cs -./Mono.Cecil/IMemberReference.cs -./Mono.Cecil/IMetadataScope.cs -./Mono.Cecil/IMetadataTokenProvider.cs -./Mono.Cecil/IMethodSignature.cs -./Mono.Cecil/ImportContext.cs -./Mono.Cecil/InterfaceCollection.cs -./Mono.Cecil/IReflectionStructureVisitable.cs -./Mono.Cecil/IReflectionStructureVisitor.cs -./Mono.Cecil/IReflectionVisitable.cs -./Mono.Cecil/IReflectionVisitor.cs -./Mono.Cecil/IRequireResolving.cs -./Mono.Cecil/LinkedResource.cs -./Mono.Cecil/ManifestResourceAttributes.cs -./Mono.Cecil/MarshalSpec.cs -./Mono.Cecil/MemberReference.cs -./Mono.Cecil/MemberReferenceCollection.cs -./Mono.Cecil/MetadataResolver.cs -./Mono.Cecil/MethodAttributes.cs -./Mono.Cecil/MethodCallingConvention.cs -./Mono.Cecil/MethodDefinition.cs -./Mono.Cecil/MethodDefinitionCollection.cs -./Mono.Cecil/MethodImplAttributes.cs -./Mono.Cecil/MethodReference.cs -./Mono.Cecil/MethodReturnType.cs -./Mono.Cecil/MethodSemanticsAttributes.cs -./Mono.Cecil/MethodSpecification.cs -./Mono.Cecil/Modifiers.cs -./Mono.Cecil/ModuleDefinition.cs -./Mono.Cecil/ModuleDefinitionCollection.cs -./Mono.Cecil/ModuleReference.cs -./Mono.Cecil/ModuleReferenceCollection.cs -./Mono.Cecil/NativeType.cs -./Mono.Cecil/NestedTypeCollection.cs -./Mono.Cecil/NullReferenceImporter.cs -./Mono.Cecil/OverrideCollection.cs -./Mono.Cecil/ParameterAttributes.cs -./Mono.Cecil/ParameterDefinition.cs -./Mono.Cecil/ParameterDefinitionCollection.cs -./Mono.Cecil/ParameterReference.cs -./Mono.Cecil/PinnedType.cs -./Mono.Cecil/PInvokeAttributes.cs -./Mono.Cecil/PInvokeInfo.cs -./Mono.Cecil/PointerType.cs -./Mono.Cecil/PropertyAttributes.cs -./Mono.Cecil/PropertyDefinition.cs -./Mono.Cecil/PropertyDefinitionCollection.cs -./Mono.Cecil/PropertyReference.cs -./Mono.Cecil/ReferenceType.cs -./Mono.Cecil/ReflectionController.cs -./Mono.Cecil/ReflectionException.cs -./Mono.Cecil/ReflectionHelper.cs -./Mono.Cecil/ReflectionReader.cs -./Mono.Cecil/ReflectionWriter.cs -./Mono.Cecil/Resource.cs -./Mono.Cecil/ResourceCollection.cs -./Mono.Cecil/SecurityAction.cs -./Mono.Cecil/SecurityDeclaration.cs -./Mono.Cecil/SecurityDeclarationCollection.cs -./Mono.Cecil/SecurityDeclarationReader.cs -./Mono.Cecil/SentinelType.cs -./Mono.Cecil/StructureReader.cs -./Mono.Cecil/StructureWriter.cs -./Mono.Cecil/TableComparers.cs -./Mono.Cecil/TargetRuntime.cs -./Mono.Cecil/TypeAttributes.cs -./Mono.Cecil/TypeDefinition.cs -./Mono.Cecil/TypeDefinitionCollection.cs -./Mono.Cecil/TypeReference.cs -./Mono.Cecil/TypeReferenceCollection.cs -./Mono.Cecil/TypeSpecification.cs -./Mono.Cecil/VariantType.cs -./Mono.Cecil.Binary/BaseImageVisitor.cs -./Mono.Cecil.Binary/CLIHeader.cs -./Mono.Cecil.Binary/CopyImageVisitor.cs -./Mono.Cecil.Binary/DataDirectory.cs -./Mono.Cecil.Binary/DebugHeader.cs -./Mono.Cecil.Binary/DebugStoreType.cs -./Mono.Cecil.Binary/DOSHeader.cs -./Mono.Cecil.Binary/ExportTable.cs -./Mono.Cecil.Binary/IBinaryVisitable.cs -./Mono.Cecil.Binary/IBinaryVisitor.cs -./Mono.Cecil.Binary/IHeader.cs -./Mono.Cecil.Binary/Image.cs -./Mono.Cecil.Binary/ImageCharacteristics.cs -./Mono.Cecil.Binary/ImageFormatException.cs -./Mono.Cecil.Binary/ImageInitializer.cs -./Mono.Cecil.Binary/ImageReader.cs -./Mono.Cecil.Binary/ImageWriter.cs -./Mono.Cecil.Binary/Imports.cs -./Mono.Cecil.Binary/MemoryBinaryWriter.cs -./Mono.Cecil.Binary/PEFileHeader.cs -./Mono.Cecil.Binary/PEOptionalHeader.cs -./Mono.Cecil.Binary/ResourceDataEntry.cs -./Mono.Cecil.Binary/ResourceDirectoryEntry.cs -./Mono.Cecil.Binary/ResourceDirectoryString.cs -./Mono.Cecil.Binary/ResourceDirectoryTable.cs -./Mono.Cecil.Binary/ResourceNode.cs -./Mono.Cecil.Binary/ResourceReader.cs -./Mono.Cecil.Binary/ResourceWriter.cs -./Mono.Cecil.Binary/RuntimeImage.cs -./Mono.Cecil.Binary/RVA.cs -./Mono.Cecil.Binary/Section.cs -./Mono.Cecil.Binary/SectionCharacteristics.cs -./Mono.Cecil.Binary/SectionCollection.cs -./Mono.Cecil.Binary/SubSystem.cs -./Mono.Cecil.Metadata/Assembly.cs -./Mono.Cecil.Metadata/AssemblyOS.cs -./Mono.Cecil.Metadata/AssemblyProcessor.cs -./Mono.Cecil.Metadata/AssemblyRef.cs -./Mono.Cecil.Metadata/AssemblyRefOS.cs -./Mono.Cecil.Metadata/AssemblyRefProcessor.cs -./Mono.Cecil.Metadata/BaseMetadataVisitor.cs -./Mono.Cecil.Metadata/BlobHeap.cs -./Mono.Cecil.Metadata/ClassLayout.cs -./Mono.Cecil.Metadata/CodedIndex.cs -./Mono.Cecil.Metadata/Constant.cs -./Mono.Cecil.Metadata/CultureUtils.cs -./Mono.Cecil.Metadata/CustomAttribute.cs -./Mono.Cecil.Metadata/DeclSecurity.cs -./Mono.Cecil.Metadata/ElementType.cs -./Mono.Cecil.Metadata/Event.cs -./Mono.Cecil.Metadata/EventMap.cs -./Mono.Cecil.Metadata/EventPtr.cs -./Mono.Cecil.Metadata/ExportedType.cs -./Mono.Cecil.Metadata/Field.cs -./Mono.Cecil.Metadata/FieldLayout.cs -./Mono.Cecil.Metadata/FieldMarshal.cs -./Mono.Cecil.Metadata/FieldPtr.cs -./Mono.Cecil.Metadata/FieldRVA.cs -./Mono.Cecil.Metadata/File.cs -./Mono.Cecil.Metadata/GenericParam.cs -./Mono.Cecil.Metadata/GenericParamConstraint.cs -./Mono.Cecil.Metadata/GuidHeap.cs -./Mono.Cecil.Metadata/IMetadataRow.cs -./Mono.Cecil.Metadata/IMetadataTable.cs -./Mono.Cecil.Metadata/IMetadataVisitable.cs -./Mono.Cecil.Metadata/IMetadataVisitor.cs -./Mono.Cecil.Metadata/ImplMap.cs -./Mono.Cecil.Metadata/InterfaceImpl.cs -./Mono.Cecil.Metadata/ManifestResource.cs -./Mono.Cecil.Metadata/MemberRef.cs -./Mono.Cecil.Metadata/MetadataFormatException.cs -./Mono.Cecil.Metadata/MetadataHeap.cs -./Mono.Cecil.Metadata/MetadataInitializer.cs -./Mono.Cecil.Metadata/MetadataReader.cs -./Mono.Cecil.Metadata/MetadataRoot.cs -./Mono.Cecil.Metadata/MetadataRowReader.cs -./Mono.Cecil.Metadata/MetadataRowWriter.cs -./Mono.Cecil.Metadata/MetadataStream.cs -./Mono.Cecil.Metadata/MetadataStreamCollection.cs -./Mono.Cecil.Metadata/MetadataTableReader.cs -./Mono.Cecil.Metadata/MetadataTableWriter.cs -./Mono.Cecil.Metadata/MetadataToken.cs -./Mono.Cecil.Metadata/MetadataWriter.cs -./Mono.Cecil.Metadata/Method.cs -./Mono.Cecil.Metadata/MethodImpl.cs -./Mono.Cecil.Metadata/MethodPtr.cs -./Mono.Cecil.Metadata/MethodSemantics.cs -./Mono.Cecil.Metadata/MethodSpec.cs -./Mono.Cecil.Metadata/Module.cs -./Mono.Cecil.Metadata/ModuleRef.cs -./Mono.Cecil.Metadata/NestedClass.cs -./Mono.Cecil.Metadata/Param.cs -./Mono.Cecil.Metadata/ParamPtr.cs -./Mono.Cecil.Metadata/Property.cs -./Mono.Cecil.Metadata/PropertyMap.cs -./Mono.Cecil.Metadata/PropertyPtr.cs -./Mono.Cecil.Metadata/RowCollection.cs -./Mono.Cecil.Metadata/StandAloneSig.cs -./Mono.Cecil.Metadata/StringsHeap.cs -./Mono.Cecil.Metadata/TableCollection.cs -./Mono.Cecil.Metadata/TablesHeap.cs -./Mono.Cecil.Metadata/TokenType.cs -./Mono.Cecil.Metadata/TypeDef.cs -./Mono.Cecil.Metadata/TypeRef.cs -./Mono.Cecil.Metadata/TypeSpec.cs -./Mono.Cecil.Metadata/UserStringsHeap.cs -./Mono.Cecil.Metadata/Utilities.cs -./Mono.Cecil.Cil/BaseCodeVisitor.cs -./Mono.Cecil.Cil/CilWorker.cs -./Mono.Cecil.Cil/Code.cs -./Mono.Cecil.Cil/CodeReader.cs -./Mono.Cecil.Cil/CodeWriter.cs -./Mono.Cecil.Cil/Document.cs -./Mono.Cecil.Cil/DocumentHashAlgorithm.cs -./Mono.Cecil.Cil/DocumentLanguage.cs -./Mono.Cecil.Cil/DocumentLanguageVendor.cs -./Mono.Cecil.Cil/DocumentType.cs -./Mono.Cecil.Cil/ExceptionHandler.cs -./Mono.Cecil.Cil/ExceptionHandlerCollection.cs -./Mono.Cecil.Cil/ExceptionHandlerType.cs -./Mono.Cecil.Cil/FlowControl.cs -./Mono.Cecil.Cil/GuidAttribute.cs -./Mono.Cecil.Cil/ICodeVisitable.cs -./Mono.Cecil.Cil/ICodeVisitor.cs -./Mono.Cecil.Cil/Instruction.cs -./Mono.Cecil.Cil/InstructionCollection.cs -./Mono.Cecil.Cil/IScopeProvider.cs -./Mono.Cecil.Cil/ISymbolReader.cs -./Mono.Cecil.Cil/ISymbolStoreFactory.cs -./Mono.Cecil.Cil/ISymbolWriter.cs -./Mono.Cecil.Cil/IVariableDefinitionProvider.cs -./Mono.Cecil.Cil/MethodBody.cs -./Mono.Cecil.Cil/MethodDataSection.cs -./Mono.Cecil.Cil/MethodHeader.cs -./Mono.Cecil.Cil/OpCode.cs -./Mono.Cecil.Cil/OpCodes.cs -./Mono.Cecil.Cil/OpCodeNames.cs -./Mono.Cecil.Cil/OpCodeType.cs -./Mono.Cecil.Cil/OperandType.cs -./Mono.Cecil.Cil/Scope.cs -./Mono.Cecil.Cil/ScopeCollection.cs -./Mono.Cecil.Cil/SequencePoint.cs -./Mono.Cecil.Cil/StackBehaviour.cs -./Mono.Cecil.Cil/SymbolStoreHelper.cs -./Mono.Cecil.Cil/VariableDefinition.cs -./Mono.Cecil.Cil/VariableDefinitionCollection.cs -./Mono.Cecil.Cil/VariableReference.cs -./Mono.Cecil.Signatures/Array.cs -./Mono.Cecil.Signatures/ArrayShape.cs -./Mono.Cecil.Signatures/BaseSignatureVisitor.cs -./Mono.Cecil.Signatures/Class.cs -./Mono.Cecil.Signatures/Constraint.cs -./Mono.Cecil.Signatures/CustomAttrib.cs -./Mono.Cecil.Signatures/CustomMod.cs -./Mono.Cecil.Signatures/FieldSig.cs -./Mono.Cecil.Signatures/FnPtr.cs -./Mono.Cecil.Signatures/GenericArg.cs -./Mono.Cecil.Signatures/GenericInst.cs -./Mono.Cecil.Signatures/GenericInstSignature.cs -./Mono.Cecil.Signatures/InputOutputItem.cs -./Mono.Cecil.Signatures/ISignatureVisitable.cs -./Mono.Cecil.Signatures/ISignatureVisitor.cs -./Mono.Cecil.Signatures/LocalVarSig.cs -./Mono.Cecil.Signatures/MarshalSig.cs -./Mono.Cecil.Signatures/MethodDefSig.cs -./Mono.Cecil.Signatures/MethodRefSig.cs -./Mono.Cecil.Signatures/MethodSig.cs -./Mono.Cecil.Signatures/MethodSpec.cs -./Mono.Cecil.Signatures/MVar.cs -./Mono.Cecil.Signatures/Param.cs -./Mono.Cecil.Signatures/PropertySig.cs -./Mono.Cecil.Signatures/Ptr.cs -./Mono.Cecil.Signatures/RetType.cs -./Mono.Cecil.Signatures/Signature.cs -./Mono.Cecil.Signatures/SignatureReader.cs -./Mono.Cecil.Signatures/SignatureWriter.cs -./Mono.Cecil.Signatures/SigType.cs -./Mono.Cecil.Signatures/SzArray.cs -./Mono.Cecil.Signatures/TypeSpec.cs -./Mono.Cecil.Signatures/ValueType.cs -./Mono.Cecil.Signatures/Var.cs -./Mono.Xml/SecurityParser.cs -./Mono.Xml/SmallXmlParser.cs -- 2.25.1