public MetadataRowWriter (MetadataTableWriter mtwv) { m_binaryWriter = mtwv.GetWriter (); m_root = mtwv.GetMetadataRoot (); m_ciCache = new int [13]; m_counter = new Utilities.TableRowCounter (GetNumberOfRows); }
public MetadataRowReader(MetadataTableReader mtrv) { m_mtrv = mtrv; m_binaryReader = mtrv.GetReader (); m_metadataRoot = mtrv.GetMetadataRoot (); m_ciCache = new Hashtable (); }
public MetadataWriter(AssemblyDefinition asm, MetadataRoot root, AssemblyKind kind, TargetRuntime rt, BinaryWriter writer) { m_assembly = asm; m_root = root; m_runtime = rt; m_imgWriter = new ImageWriter (this, kind, writer); m_binaryWriter = m_imgWriter.GetTextWriter (); m_stringCache = new Hashtable (); m_stringWriter = new MemoryBinaryWriter (Encoding.UTF8); m_stringWriter.Write ((byte) 0); m_guidCache = new Hashtable (); m_guidWriter = new MemoryBinaryWriter (); m_usCache = new Hashtable (); m_usWriter = new MemoryBinaryWriter (Encoding.Unicode); m_usWriter.Write ((byte) 0); m_blobCache = new Hashtable (); m_blobWriter = new MemoryBinaryWriter (); m_blobWriter.Write ((byte) 0); m_tWriter = new MemoryBinaryWriter (); m_tableWriter = new MetadataTableWriter (this, m_tWriter); m_cilWriter = new MemoryBinaryWriter (); m_fieldDataWriter = new MemoryBinaryWriter (); m_resWriter = new MemoryBinaryWriter (); }
public MetadataTableWriter (MetadataWriter mrv, MemoryBinaryWriter writer) { m_root = mrv.GetMetadataRoot (); m_heap = m_root.Streams.TablesHeap; m_binaryWriter = writer; m_mrrw = new MetadataRowWriter (this); }
public MetadataRowReader (MetadataTableReader mtrv) { m_mtrv = mtrv; m_binaryReader = mtrv.GetReader (); m_metadataRoot = mtrv.GetMetadataRoot (); m_ciCache = new int [13]; m_counter = new Utilities.TableRowCounter (m_mtrv.GetNumberOfRows); }
public MetadataTableReader(MetadataReader mrv) { m_metadataRoot = mrv.GetMetadataRoot (); m_heap = m_metadataRoot.Streams.TablesHeap; m_binaryReader = new BinaryReader (new MemoryStream (m_heap.Data)); m_binaryReader.BaseStream.Position = 24; m_mrrv = new MetadataRowReader (this); }
public override void TerminateMetadataRoot(MetadataRoot root) { SetHeapIndexSize (root.Streams.StringsHeap, 0x01); SetHeapIndexSize (root.Streams.GuidHeap, 0x02); SetHeapIndexSize (root.Streams.BlobHeap, 0x04); m_tableReader = new MetadataTableReader (this); root.Streams.TablesHeap.Tables.Accept (m_tableReader); }
public SignatureReader(MetadataRoot root, ReflectionReader reflectReader) { m_root = root; m_reflectReader = reflectReader; m_blobData = m_root.Streams.BlobHeap != null ? m_root.Streams.BlobHeap.Data : new byte [0]; m_signatures = new Hashtable (); }
internal Image() { m_dosHeader = new DOSHeader (); m_peFileHeader = new PEFileHeader (); m_peOptionalHeader = new PEOptionalHeader (); m_sections = new SectionCollection (); m_importAddressTable = new ImportAddressTable (); m_importTable = new ImportTable (); m_importLookupTable = new ImportLookupTable (); m_hintNameTable = new HintNameTable (); m_mdRoot = new MetadataRoot (this); }
public ReflectionReader(ModuleDefinition module) { m_module = module; m_reader = m_module.ImageReader; m_root = m_module.Image.MetadataRoot; m_tHeap = m_root.Streams.TablesHeap; m_checkDeleted = (m_tHeap.HeapSizes & 0x80) != 0; if (m_reader != null) m_tableReader = m_reader.MetadataReader.TableReader; m_codeReader = new CodeReader (this); m_sigReader = new SignatureReader (m_root, this); m_isCorlib = module.Assembly.Name.Name == Constants.Corlib; }
public override void TerminateMetadataRoot (MetadataRoot root) { this.asm.ALIGN (Assembly.OBJECT_ALIGNMENT); this.asm.LABEL (moduleName + " MetadataRoot"); this.asm.AddObjectFields (typeof (SharpOS.AOT.Metadata.AssemblyMetadata).ToString ()); this.asm.ADDRESSOF (moduleName + " StringsHeap"); this.asm.ADDRESSOF (moduleName + " BlobHeap"); this.asm.ADDRESSOF (moduleName + " GuidHeap"); this.asm.ADDRESSOF (moduleName + " UserStringsHeap"); this.asm.ADDRESSOF (moduleName + " AssemblyRefArray"); this.asm.ADDRESSOF (moduleName + " AssemblyArray"); this.asm.ADDRESSOF (moduleName + " ClassLayoutArray"); this.asm.ADDRESSOF (moduleName + " ConstantArray"); this.asm.ADDRESSOF (moduleName + " CustomAttributeArray"); this.asm.ADDRESSOF (moduleName + " DeclSecurityArray"); this.asm.ADDRESSOF (moduleName + " EventMapArray"); this.asm.ADDRESSOF (moduleName + " EventPtrArray"); this.asm.ADDRESSOF (moduleName + " EventArray"); this.asm.ADDRESSOF (moduleName + " ExportedTypeArray"); this.asm.ADDRESSOF (moduleName + " FieldLayoutArray"); this.asm.ADDRESSOF (moduleName + " FieldMarshalArray"); this.asm.ADDRESSOF (moduleName + " FieldPtrArray"); this.asm.ADDRESSOF (moduleName + " FieldRVAArray"); this.asm.ADDRESSOF (moduleName + " FieldArray"); this.asm.ADDRESSOF (moduleName + " FileArray"); this.asm.ADDRESSOF (moduleName + " GenericParamConstraintArray"); this.asm.ADDRESSOF (moduleName + " GenericParamArray"); this.asm.ADDRESSOF (moduleName + " ImplMapArray"); this.asm.ADDRESSOF (moduleName + " InterfaceImplArray"); this.asm.ADDRESSOF (moduleName + " ManifestResourceArray"); this.asm.ADDRESSOF (moduleName + " MemberRefArray"); this.asm.ADDRESSOF (moduleName + " MethodImplArray"); this.asm.ADDRESSOF (moduleName + " MethodPtrArray"); this.asm.ADDRESSOF (moduleName + " MethodSemanticsArray"); this.asm.ADDRESSOF (moduleName + " MethodSpecArray"); this.asm.ADDRESSOF (moduleName + " MethodArray"); this.asm.ADDRESSOF (moduleName + " ModuleRefArray"); this.asm.ADDRESSOF (moduleName + " ModuleArray"); this.asm.ADDRESSOF (moduleName + " NestedClassArray"); this.asm.ADDRESSOF (moduleName + " ParamPtrArray"); this.asm.ADDRESSOF (moduleName + " ParamArray"); this.asm.ADDRESSOF (moduleName + " PropertyMapArray"); this.asm.ADDRESSOF (moduleName + " PropertyPtrArray"); this.asm.ADDRESSOF (moduleName + " PropertyArray"); this.asm.ADDRESSOF (moduleName + " StandAloneSigArray"); this.asm.ADDRESSOF (moduleName + " TypeDefArray"); this.asm.ADDRESSOF (moduleName + " TypeRefArray"); this.asm.ADDRESSOF (moduleName + " TypeSpecArray"); }
public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header) { long headpos = m_binaryReader.BaseStream.Position; header.Signature = m_binaryReader.ReadUInt32 (); if (header.Signature != MetadataRoot.MetadataRootHeader.StandardSignature) throw new MetadataFormatException ("Wrong magic number"); header.MajorVersion = m_binaryReader.ReadUInt16 (); header.MinorVersion = m_binaryReader.ReadUInt16 (); header.Reserved = m_binaryReader.ReadUInt32 (); // read version uint length = m_binaryReader.ReadUInt32 (); if (length != 0) { long pos = m_binaryReader.BaseStream.Position; byte [] version, buffer = new byte [length]; int read = 0; while (read < length) { byte cur = (byte)m_binaryReader.ReadSByte (); if (cur == 0) break; buffer [read++] = cur; } version = new byte [read]; Buffer.BlockCopy (buffer, 0, version, 0, read); header.Version = Encoding.UTF8.GetString (version, 0, version.Length); pos += length - headpos + 3; pos &= ~3; pos += headpos; m_binaryReader.BaseStream.Position = pos; } else header.Version = string.Empty; header.Flags = m_binaryReader.ReadUInt16 (); header.Streams = m_binaryReader.ReadUInt16 (); }
public SecurityDeclarationReader(MetadataRoot root, ReflectionReader reader) { sr = new SignatureReader (root, reader); }
public override void VisitMetadataRoot(MetadataRoot root) { root.Header = new MetadataRoot.MetadataRootHeader(); root.Streams = new MetadataStreamCollection(); }
public MetadataInitializer(ImageInitializer init) { m_root = init.Image.MetadataRoot; }
public MetadataRowWriter(MetadataTableWriter mtwv) { m_binaryWriter = mtwv.GetWriter(); m_root = mtwv.GetMetadataRoot(); m_ciCache = new Hashtable(); }
public override void VisitMetadataRoot(MetadataRoot root) { WriteMemStream(m_cilWriter); WriteMemStream(m_fieldDataWriter); m_resStart = (uint)m_binaryWriter.BaseStream.Position; WriteMemStream(m_resWriter); m_resSize = (uint)(m_binaryWriter.BaseStream.Position - m_resStart); // for now, we only reserve the place for the strong name signature if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) > 0) { m_snsStart = (uint)m_binaryWriter.BaseStream.Position; m_snsSize = GetStrongNameSignatureSize(); m_binaryWriter.Write(new byte [m_snsSize]); m_binaryWriter.QuadAlign(); } // save place for debug header if (m_imgWriter.GetImage().DebugHeader != null) { m_debugHeaderStart = (uint)m_binaryWriter.BaseStream.Position; m_binaryWriter.Write(new byte [m_imgWriter.GetImage().DebugHeader.GetSize()]); m_binaryWriter.QuadAlign(); } m_mdStart = (uint)m_binaryWriter.BaseStream.Position; if (m_stringWriter.BaseStream.Length > 1) { CreateStream(MetadataStream.Strings); SetHeapSize(root.Streams.StringsHeap, m_stringWriter, 0x01); m_stringWriter.QuadAlign(); } if (m_guidWriter.BaseStream.Length > 0) { CreateStream(MetadataStream.GUID); SetHeapSize(root.Streams.GuidHeap, m_guidWriter, 0x02); } if (m_blobWriter.BaseStream.Length > 1) { CreateStream(MetadataStream.Blob); SetHeapSize(root.Streams.BlobHeap, m_blobWriter, 0x04); m_blobWriter.QuadAlign(); } if (m_usWriter.BaseStream.Length > 2) { CreateStream(MetadataStream.UserStrings); m_usWriter.QuadAlign(); } m_root.Header.MajorVersion = 1; m_root.Header.MinorVersion = 1; switch (m_runtime) { case TargetRuntime.NET_1_0: m_root.Header.Version = "v1.0.3705"; break; case TargetRuntime.NET_1_1: m_root.Header.Version = "v1.1.4322"; break; case TargetRuntime.NET_2_0: m_root.Header.Version = "v2.0.50727"; break; case TargetRuntime.NET_4_0: m_root.Header.Version = "v4.0.30319"; break; } m_root.Streams.TablesHeap.Tables.Accept(m_tableWriter); if (m_tWriter.BaseStream.Length == 0) { m_root.Streams.Remove(m_root.Streams.TablesHeap.GetStream()); } }
public override void TerminateMetadataRoot(MetadataRoot root) { m_mdSize = (uint) (m_binaryWriter.BaseStream.Position - m_mdStart); m_imporTableStart = (uint) m_binaryWriter.BaseStream.Position; m_binaryWriter.Write (new byte [0x60]); // imports m_imgWriter.Initialize (); PatchHeader (); root.GetImage ().Accept (m_imgWriter); }
public MetadataRowWriter(MetadataTableWriter mtwv) { m_binaryWriter = mtwv.GetWriter (); m_root = mtwv.GetMetadataRoot (); m_ciCache = new Hashtable (); }
public CodeReader(ReflectionReader reflectReader) { m_reflectReader = reflectReader; m_root = m_reflectReader.MetadataRoot; }
public override void VisitMetadataRootHeader(MetadataRoot.MetadataRootHeader header) { m_binaryWriter.Write (header.Signature); m_binaryWriter.Write (header.MajorVersion); m_binaryWriter.Write (header.MinorVersion); m_binaryWriter.Write (header.Reserved); m_binaryWriter.Write (header.Version.Length + 3 & (~3)); m_binaryWriter.Write (Encoding.ASCII.GetBytes (header.Version)); m_binaryWriter.QuadAlign (); m_binaryWriter.Write (header.Flags); m_binaryWriter.Write ((ushort) m_root.Streams.Count); }
public override void VisitMetadataRoot(MetadataRoot root) { WriteMemStream (m_cilWriter); WriteMemStream (m_fieldDataWriter); m_resStart = (uint) m_binaryWriter.BaseStream.Position; WriteMemStream (m_resWriter); m_resSize = (uint) (m_binaryWriter.BaseStream.Position - m_resStart); // for now, we only reserve the place for the strong name signature if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) > 0) { m_snsStart = (uint) m_binaryWriter.BaseStream.Position; m_snsSize = GetStrongNameSignatureSize (); m_binaryWriter.Write (new byte [m_snsSize]); m_binaryWriter.QuadAlign (); } // save place for debug header if (m_imgWriter.GetImage ().DebugHeader != null) { m_debugHeaderStart = (uint) m_binaryWriter.BaseStream.Position; m_binaryWriter.Write (new byte [m_imgWriter.GetImage ().DebugHeader.GetSize ()]); m_binaryWriter.QuadAlign (); } m_mdStart = (uint) m_binaryWriter.BaseStream.Position; if (m_stringWriter.BaseStream.Length > 1) { CreateStream (MetadataStream.Strings); SetHeapSize (root.Streams.StringsHeap, m_stringWriter, 0x01); m_stringWriter.QuadAlign (); } if (m_guidWriter.BaseStream.Length > 0) { CreateStream (MetadataStream.GUID); SetHeapSize (root.Streams.GuidHeap, m_guidWriter, 0x02); } if (m_blobWriter.BaseStream.Length > 1) { CreateStream (MetadataStream.Blob); SetHeapSize (root.Streams.BlobHeap, m_blobWriter, 0x04); m_blobWriter.QuadAlign (); } if (m_usWriter.BaseStream.Length > 2) { CreateStream (MetadataStream.UserStrings); m_usWriter.QuadAlign (); } m_root.Header.MajorVersion = 1; m_root.Header.MinorVersion = 1; switch (m_runtime) { case TargetRuntime.NET_1_0 : m_root.Header.Version = "v1.0.3705"; break; case TargetRuntime.NET_1_1 : m_root.Header.Version = "v1.1.4322"; break; case TargetRuntime.NET_2_0 : m_root.Header.Version = "v2.0.50727"; break; } m_root.Streams.TablesHeap.Tables.Accept (m_tableWriter); if (m_tWriter.BaseStream.Length == 0) m_root.Streams.Remove (m_root.Streams.TablesHeap.GetStream ()); }
public MetadataRowReader(MetadataTableReader mtrv) { m_mtrv = mtrv; m_binaryReader = mtrv.GetReader(); m_metadataRoot = mtrv.GetMetadataRoot(); m_ciCache = new int [< %= $coded_indexes.length % >];
public MetadataRowReader (MetadataTableReader mtrv) { m_mtrv = mtrv; m_binaryReader = mtrv.GetReader (); m_metadataRoot = mtrv.GetMetadataRoot (); m_ciCache = new int [<%= $coded_indexes.length %>];
public MetadataRowWriter (MetadataTableWriter mtwv) { m_binaryWriter = mtwv.GetWriter (); m_root = mtwv.GetMetadataRoot (); m_ciCache = new int [<%= $coded_indexes.length %>];
public override void VisitMetadataRoot(MetadataRoot root) { m_root = root; root.Header = new MetadataRoot.MetadataRootHeader (); root.Streams = new MetadataStreamCollection (); }
public CodeReader (ReflectionReader reflectReader) { m_reflectReader = reflectReader; m_root = m_reflectReader.MetadataRoot; m_instructions = new Hashtable (); }
public override void VisitMetadataRootHeader(MetadataRoot.MetadataRootHeader header) { header.SetDefaultValues (); }