From 9fd4a5ca53cfc8baee82abe0ca1f46d489625913 Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Thu, 20 Jan 2022 10:56:36 +0100 Subject: Revert "Fix portable PDB stamp in CodeView header (#32)" This reverts commit e04f1418730bdd7c8c46a13118f0cb1b5603997c. --- Mono.Cecil.Cil/PortablePdb.cs | 10 ++++---- Test/Mono.Cecil.Tests/PortablePdbTests.cs | 38 +++++++------------------------ 2 files changed, 13 insertions(+), 35 deletions(-) diff --git a/Mono.Cecil.Cil/PortablePdb.cs b/Mono.Cecil.Cil/PortablePdb.cs index f6842da..d8c43f6 100644 --- a/Mono.Cecil.Cil/PortablePdb.cs +++ b/Mono.Cecil.Cil/PortablePdb.cs @@ -269,7 +269,7 @@ namespace Mono.Cecil.Cil { internal byte [] pdb_checksum; internal Guid pdb_id_guid; - internal uint pdb_id_stamp; + internal uint pdb_id_age; bool IsEmbedded { get { return writer == null; } } @@ -324,7 +324,7 @@ namespace Mono.Cecil.Cil { MajorVersion = 256, MinorVersion = 20557, Type = ImageDebugType.CodeView, - TimeDateStamp = (int)pdb_id_stamp, + TimeDateStamp = (int)module.timestamp, }; var buffer = new ByteBuffer (); @@ -333,7 +333,7 @@ namespace Mono.Cecil.Cil { // Module ID buffer.WriteBytes (pdb_id_guid.ToByteArray ()); // PDB Age - buffer.WriteUInt32 (1); + buffer.WriteUInt32 (pdb_id_age); // PDB Path var fileName = writer.BaseStream.GetFileName (); if (string.IsNullOrEmpty (fileName)) { @@ -462,7 +462,7 @@ namespace Mono.Cecil.Cil { var hashBytes = new ByteBuffer (pdb_checksum); pdb_id_guid = new Guid (hashBytes.ReadBytes (16)); - pdb_id_stamp = hashBytes.ReadUInt32 (); + pdb_id_age = hashBytes.ReadUInt32 (); } void WritePdbId () @@ -470,7 +470,7 @@ namespace Mono.Cecil.Cil { // PDB ID is the first 20 bytes of the PdbHeap writer.MoveToRVA (TextSegment.PdbHeap); writer.WriteBytes (pdb_id_guid.ToByteArray ()); - writer.WriteUInt32 (pdb_id_stamp); + writer.WriteUInt32 (pdb_id_age); } } diff --git a/Test/Mono.Cecil.Tests/PortablePdbTests.cs b/Test/Mono.Cecil.Tests/PortablePdbTests.cs index 4b9d4eb..1401f63 100644 --- a/Test/Mono.Cecil.Tests/PortablePdbTests.cs +++ b/Test/Mono.Cecil.Tests/PortablePdbTests.cs @@ -885,13 +885,11 @@ class Program using (var module = GetResourceModule (resource, new ReaderParameters { ReadSymbols = true })) { GetPdbChecksumData (module.GetDebugHeader (), out string algorithmName, out byte [] checksum); Assert.AreEqual ("SHA256", algorithmName); - GetCodeViewPdbId (module, out byte[] pdbId); - string pdbPath = Mixin.GetPdbFileName (module.FileName); - CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out byte [] expectedPdbId); + string pdbPath = GetDebugHeaderPdbPath (module); + CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out byte [] pdbId); CollectionAssert.AreEqual (expectedChecksum, checksum); - CollectionAssert.AreEqual (expectedPdbId, pdbId); } } @@ -904,13 +902,11 @@ class Program var debugHeader = module.GetDebugHeader (); GetPdbChecksumData (debugHeader, out string algorithmName, out byte [] checksum); Assert.AreEqual ("SHA256", algorithmName); - GetCodeViewPdbId (module, out byte [] pdbId); GetEmbeddedPdb (debugHeader, out byte [] embeddedPdb); - CalculatePdbChecksumAndId (embeddedPdb, out byte [] expectedChecksum, out byte [] expectedPdbId); + CalculatePdbChecksumAndId (embeddedPdb, out byte [] expectedChecksum, out byte [] pdbId); CollectionAssert.AreEqual (expectedChecksum, checksum); - CollectionAssert.AreEqual (expectedPdbId, pdbId); } } @@ -927,13 +923,11 @@ class Program using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { ReadSymbols = true })) { GetPdbChecksumData (module.GetDebugHeader (), out string algorithmName, out byte [] checksum); Assert.AreEqual ("SHA256", algorithmName); - GetCodeViewPdbId (module, out byte [] pdbId); - string pdbPath = Mixin.GetPdbFileName (module.FileName); - CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out byte [] expectedPdbId); + string pdbPath = GetDebugHeaderPdbPath (module); + CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out byte [] pdbId); CollectionAssert.AreEqual (expectedChecksum, checksum); - CollectionAssert.AreEqual (expectedPdbId, pdbId); } } @@ -967,7 +961,7 @@ class Program byte [] pdbIdOne; using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { ReadSymbols = true })) { - string pdbPath = Mixin.GetPdbFileName (module.FileName); + string pdbPath = GetDebugHeaderPdbPath (module); CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out pdbIdOne); } @@ -977,7 +971,7 @@ class Program byte [] pdbIdTwo; using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { ReadSymbols = true })) { - string pdbPath = Mixin.GetPdbFileName (module.FileName); + string pdbPath = GetDebugHeaderPdbPath (module); CalculatePdbChecksumAndId (pdbPath, out byte [] expectedChecksum, out pdbIdTwo); } @@ -998,13 +992,11 @@ class Program var debugHeader = module.GetDebugHeader (); GetPdbChecksumData (debugHeader, out string algorithmName, out byte [] checksum); Assert.AreEqual ("SHA256", algorithmName); - GetCodeViewPdbId (module, out byte [] pdbId); GetEmbeddedPdb (debugHeader, out byte [] embeddedPdb); - CalculatePdbChecksumAndId (embeddedPdb, out byte [] expectedChecksum, out byte [] expectedPdbId); + CalculatePdbChecksumAndId (embeddedPdb, out byte [] expectedChecksum, out byte [] pdbId); CollectionAssert.AreEqual (expectedChecksum, checksum); - CollectionAssert.AreEqual (expectedPdbId, pdbId); } } @@ -1110,19 +1102,5 @@ class Program var sha256 = SHA256.Create (); pdbChecksum = sha256.ComputeHash (bytes); } - - static void GetCodeViewPdbId (ModuleDefinition module, out byte[] pdbId) - { - var header = module.GetDebugHeader (); - var cv = Mixin.GetCodeViewEntry (header); - Assert.IsNotNull (cv); - - CollectionAssert.AreEqual (new byte [] { 0x52, 0x53, 0x44, 0x53 }, cv.Data.Take (4)); - - ByteBuffer buffer = new ByteBuffer (20); - buffer.WriteBytes (cv.Data.Skip (4).Take (16).ToArray ()); - buffer.WriteInt32 (cv.Directory.TimeDateStamp); - pdbId = buffer.buffer; - } } } -- cgit v1.2.3