Author: jbevain
Date: 2007-10-04 04:57:18 -0400 (Thu, 04 Oct 2007)
New Revision: 86853
Added:
trunk/cecil/pdb/Mono.Cecil.Pdb/ChangeLog
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb.csproj
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/AssemblyInfo.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/IMetadataImport.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbFactory.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbHelper.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbReader.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbWriter.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/default.build
Removed:
trunk/cecil/pdb/ChangeLog
trunk/cecil/pdb/Mono.Cecil.Pdb.csproj
trunk/cecil/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataImport.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/PdbFactory.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/PdbHelper.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/PdbReader.cs
trunk/cecil/pdb/Mono.Cecil.Pdb/PdbWriter.cs
trunk/cecil/pdb/default.build
Log:
Move Mono.Cecil.Pdb from /cecil/pdb to /cecil/pdb/Mono.Cecil.Pdb for
consistency's sake with Cecil and Cecil.Mdb
Deleted: trunk/cecil/pdb/ChangeLog
===================================================================
--- trunk/cecil/pdb/ChangeLog 2007-10-04 08:51:20 UTC (rev 86852)
+++ trunk/cecil/pdb/ChangeLog 2007-10-04 08:57:18 UTC (rev 86853)
@@ -1,31 +0,0 @@
-2007-02-21 Jb Evain <[EMAIL PROTECTED]>
-
- * Start working on local var debug infos emitting.
-
-2007-02-21 Jb Evain <[EMAIL PROTECTED]>
-
- * Mono.Cecil.Pdb/PdbReader.cs
- Mono.Cecil.Pdb/PdbHelper.cs
- Mono.Cecil.Pdb/IMetaDataDispenser.cs:
- Refactor patches from:
- Sverre Boschman <[EMAIL PROTECTED]>
-
- - Force the release of the lock on the pdb on reading
- - Implement the ability to read a pdb in memory
-
-2006-09-24 Jb Evain <[EMAIL PROTECTED]>
-
- * Handle the fact that a scope end points outside the cil stream.
-
-2006-09-20 Jb Evain <[EMAIL PROTECTED]>
-
- * implement somes bits of the writing stuff.
-
-2006-09-19 Jb Evain <[EMAIL PROTECTED]>
-
- * first checkin in SVN:
- This is the assembly to support reading and writing
- from Microsoft's pdb symbols store.
-
- It will only work on Windows until Microsoft release
- the spec for the pdb files.
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs 2007-10-04 08:51:20 UTC
(rev 86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs 2007-10-04 08:57:18 UTC
(rev 86853)
@@ -1,43 +0,0 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle ("Mono.Cecil.Pdb")]
-[assembly: AssemblyDescription ("Support for the pdb symbols store in Cecil")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyProduct ("Mono.Cecil")]
-[assembly: AssemblyCopyright ("(C) 2006, Jb Evain")]
-[assembly: AssemblyCulture ("")]
-
-[assembly: CLSCompliant (false)]
-[assembly: ComVisible (false)]
-
-[assembly: AssemblyVersion ("0.0.1.0")]
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/ChangeLog (from rev 86667,
trunk/cecil/pdb/ChangeLog)
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs 2007-10-04
08:51:20 UTC (rev 86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs 2007-10-04
08:57:18 UTC (rev 86853)
@@ -1,56 +0,0 @@
-//
-// IMetadataImport.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// from: http://blogs.msdn.com/jmstall/articles/sample_pdb2xml.aspx
-
-namespace Mono.Cecil.Pdb {
-
- using System;
- using System.Runtime.InteropServices;
-
- [Guid ("809c652e-7396-11d2-9771-00a0c9b4d50c")]
- [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
- [ComVisible (true)]
- interface IMetaDataDispenser {
-
- void DefineScope_Placeholder();
-
- void OpenScope (
- [In, MarshalAs (UnmanagedType.LPWStr)] string szScope,
- [In] int dwOpenFlags,
- [In] ref Guid riid,
- [Out, MarshalAs (UnmanagedType.IUnknown)] out object
punk);
-
- void OpenScopeOnMemory (
- [In] IntPtr pData,
- [In] uint cbData,
- [In] uint dwOpenFlags,
- [In] ref Guid riid,
- [Out, MarshalAs (UnmanagedType.Interface)] out object
punk);
- }
-}
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataImport.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataImport.cs 2007-10-04 08:51:20 UTC
(rev 86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataImport.cs 2007-10-04 08:57:18 UTC
(rev 86853)
@@ -1,43 +0,0 @@
-//
-// IMetadataImport.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// from: http://blogs.msdn.com/jmstall/articles/sample_pdb2xml.aspx
-
-namespace Mono.Cecil.Pdb {
-
- using System;
- using System.Runtime.InteropServices;
-
- [Guid ("7DAC8207-D3AE-4c75-9B67-92801A497D44")]
- [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
- [ComVisible (true)]
- [CLSCompliant (true)]
- public interface IMetadataImport {
- void Placeholder();
- }
-}
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/AssemblyInfo.cs (from rev
86852, trunk/cecil/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs
(from rev 86667, trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataDispenser.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/IMetadataImport.cs (from
rev 86667, trunk/cecil/pdb/Mono.Cecil.Pdb/IMetadataImport.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbFactory.cs (from rev
86667, trunk/cecil/pdb/Mono.Cecil.Pdb/PdbFactory.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbHelper.cs (from rev
86667, trunk/cecil/pdb/Mono.Cecil.Pdb/PdbHelper.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbReader.cs (from rev
86667, trunk/cecil/pdb/Mono.Cecil.Pdb/PdbReader.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb/PdbWriter.cs (from rev
86667, trunk/cecil/pdb/Mono.Cecil.Pdb/PdbWriter.cs)
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/Mono.Cecil.Pdb.csproj (from rev 86667,
trunk/cecil/pdb/Mono.Cecil.Pdb.csproj)
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/PdbFactory.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/PdbFactory.cs 2007-10-04 08:51:20 UTC
(rev 86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/PdbFactory.cs 2007-10-04 08:57:18 UTC
(rev 86853)
@@ -1,46 +0,0 @@
-//
-// PdbFactory.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Pdb {
-
- using Mono.Cecil.Cil;
-
- public class PdbFactory : ISymbolStoreFactory {
-
- public ISymbolReader CreateReader (ModuleDefinition module,
string assembly)
- {
- return new PdbReader (PdbHelper.CreateReader
(assembly));
- }
-
- public ISymbolWriter CreateWriter (ModuleDefinition module,
string assembly)
- {
- string pdb = string.Concat(assembly.Substring(0,
assembly.LastIndexOf(".")), ".pdb");
- return new PdbWriter (PdbHelper.CreateWriter (assembly,
pdb), module, pdb);
- }
- }
-}
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/PdbHelper.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/PdbHelper.cs 2007-10-04 08:51:20 UTC (rev
86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/PdbHelper.cs 2007-10-04 08:57:18 UTC (rev
86853)
@@ -1,130 +0,0 @@
-//
-// PdbHelper.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// from: http://blogs.msdn.com/jmstall/articles/sample_pdb2xml.aspx
-
-namespace Mono.Cecil.Pdb {
-
- using System;
- using System.Diagnostics.SymbolStore;
- using System.IO;
- using System.Runtime.InteropServices;
-
- internal class PdbHelper {
-
- [DllImport("ole32.dll")]
- static extern int CoCreateInstance (
- [In] ref Guid rclsid,
- [In, MarshalAs (UnmanagedType.IUnknown)] object
pUnkOuter,
- [In] uint dwClsContext,
- [In] ref Guid riid,
- [Out, MarshalAs(UnmanagedType.Interface)] out object
ppv);
-
- static Guid s_dispenserClassID = new Guid (0xe5cb7a31, 0x7512,
0x11d2, 0x89, 0xce, 0x00, 0x80, 0xc7, 0x92, 0xe5, 0xd8);
- static Guid s_dispenserIID = new Guid (0x809c652e, 0x7396,
0x11d2, 0x97, 0x71, 0x00, 0xa0, 0xc9, 0xb4, 0xd5, 0x0c);
- static Guid s_importerIID = new Guid (0x7dac8207, 0xd3ae,
0x4c75, 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44);
-
- public static ISymbolReader CreateReader (string filename)
- {
- SymBinder binder;
- object objImporter;
-
- IMetaDataDispenser dispenser = InstantiateDispenser
(out binder);
- dispenser.OpenScope (filename, 0, ref s_importerIID,
out objImporter);
-
- return InstantiateReader (binder, filename,
objImporter);
- }
-
- public static ISymbolReader CreateReader (string filename, byte
[] binaryFile)
- {
- SymBinder binder;
- object objImporter;
-
- IntPtr filePtr = Marshal.AllocHGlobal
(binaryFile.Length);
- Marshal.Copy (binaryFile, 0, filePtr,
binaryFile.Length);
-
- IMetaDataDispenser dispenser = InstantiateDispenser
(out binder);
- dispenser.OpenScopeOnMemory (filePtr, (uint)
binaryFile.Length, 0, ref s_importerIID, out objImporter);
-
- return InstantiateReader (binder, filename,
objImporter);
- }
-
- static IMetaDataDispenser InstantiateDispenser (out SymBinder
binder)
- {
- binder = new SymBinder ();
- object dispenser;
- CoCreateInstance (ref s_dispenserClassID, null, 1, ref
s_dispenserIID, out dispenser);
- return (IMetaDataDispenser) dispenser;
- }
-
- static ISymbolReader InstantiateReader (SymBinder binder,
string filename, object objImporter)
- {
- IntPtr importerPtr = IntPtr.Zero;
- ISymbolReader reader;
- try {
- importerPtr = Marshal.GetComInterfaceForObject
(objImporter, typeof (IMetadataImport));
-
- reader = binder.GetReader (importerPtr,
filename, null);
- } finally {
- if (importerPtr != IntPtr.Zero)
- Marshal.Release (importerPtr);
- }
-
- return reader;
- }
-
- public static ISymbolWriter CreateWriter (string assembly,
string pdb)
- {
- SymWriter writer = new SymWriter (false);
-
- object objDispenser, objImporter;
- CoCreateInstance (ref s_dispenserClassID, null, 1, ref
s_dispenserIID, out objDispenser);
-
- IMetaDataDispenser dispenser = (IMetaDataDispenser)
objDispenser;
- dispenser.OpenScope (assembly, 1, ref s_importerIID,
out objImporter);
-
- IntPtr importerPtr = Marshal.GetComInterfaceForObject
(objImporter, typeof (IMetadataImport));
-
- try {
- if (File.Exists (pdb))
- File.Delete (pdb);
-
- writer.Initialize (importerPtr, pdb, false);
- } finally {
- if (importerPtr != IntPtr.Zero) {
- Marshal.Release (importerPtr);
- Marshal.ReleaseComObject (objDispenser);
- Marshal.ReleaseComObject (objImporter);
- Marshal.ReleaseComObject (dispenser);
- }
- }
-
- return writer;
- }
- }
-}
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/PdbReader.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/PdbReader.cs 2007-10-04 08:51:20 UTC (rev
86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/PdbReader.cs 2007-10-04 08:57:18 UTC (rev
86853)
@@ -1,148 +0,0 @@
-//
-// PdbReader.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Pdb {
-
- using System;
- using System.Collections;
- using System.Diagnostics.SymbolStore;
- using System.Runtime.InteropServices;
-
- public class PdbReader : Cil.ISymbolReader {
-
- ISymbolReader m_reader;
-
- Hashtable m_documents;
-
- internal PdbReader (ISymbolReader reader)
- {
- m_reader = reader;
- m_documents = new Hashtable ();
- }
-
- public void Read (Cil.MethodBody body)
- {
- try {
- ISymbolMethod method = m_reader.GetMethod (new
SymbolToken ((int) body.Method.MetadataToken.ToUInt ()));
- Hashtable instructions = GetInstructions (body);
-
- ReadSequencePoints (method, instructions);
- ReadScopeAndLocals (method.RootScope, null,
body, instructions);
- } catch (COMException) {}
- }
-
- static Hashtable GetInstructions (Cil.MethodBody body)
- {
- Hashtable instructions = new Hashtable
(body.Instructions.Count);
- foreach (Cil.Instruction i in body.Instructions)
- instructions.Add (i.Offset, i);
-
- return instructions;
- }
-
- static Cil.Instruction GetInstruction (Cil.MethodBody body,
Hashtable instructions, int offset)
- {
- Cil.Instruction instr = (Cil.Instruction) instructions
[offset];
- if (instr != null)
- return instr;
-
- return body.Instructions.Outside;
- }
-
- static void ReadScopeAndLocals (ISymbolScope scope, Cil.Scope
parent, Cil.MethodBody body, Hashtable instructions)
- {
- Cil.Scope s = new Cil.Scope ();
- s.Start = GetInstruction (body, instructions,
scope.StartOffset);
- s.End = GetInstruction (body, instructions,
scope.EndOffset);
-
- if (parent != null)
- parent.Scopes.Add (s);
- else
- body.Scopes.Add (s);
-
- foreach (ISymbolVariable local in scope.GetLocals ()) {
- Cil.VariableDefinition variable =
body.Variables [local.AddressField1];
- variable.Name = local.Name;
-
- s.Variables.Add (variable);
- }
-
- foreach (ISymbolScope child in scope.GetChildren ())
- ReadScopeAndLocals (child, s, body,
instructions);
- }
-
- void ReadSequencePoints(ISymbolMethod method, Hashtable
instructions)
- {
- int count = method.SequencePointCount;
- int [] offsets = new int [count];
- ISymbolDocument [] docs = new ISymbolDocument [count];
- int [] startColumn = new int [count];
- int [] endColumn = new int [count];
- int [] startRow = new int [count];
- int [] endRow = new int [count];
- method.GetSequencePoints (offsets, docs, startRow,
startColumn, endRow, endColumn);
-
- for (int i = 0; i < offsets.Length; i++) {
- Cil.Instruction instr = (Cil.Instruction)
instructions [offsets [i]];
-
- Cil.SequencePoint sp = new Cil.SequencePoint
(GetDocument (docs [i]));
- sp.StartLine = startRow [i];
- sp.StartColumn = startColumn [i];
- sp.EndLine = endRow [i];
- sp.EndColumn = endColumn [i];
-
- instr.SequencePoint = sp;
- }
- }
-
- Cil.Document GetDocument (ISymbolDocument document)
- {
- Cil.Document doc = m_documents [document.URL] as
Cil.Document;
- if (doc != null)
- return doc;
-
- doc = new Cil.Document (document.URL);
- doc.Type = (Cil.DocumentType)
Cil.GuidAttribute.GetValueFromGuid (
- document.DocumentType, typeof
(Cil.DocumentType));
- doc.Language = (Cil.DocumentLanguage)
Cil.GuidAttribute.GetValueFromGuid (
- document.Language, typeof
(Cil.DocumentLanguage));
- doc.LanguageVendor = (Cil.DocumentLanguageVendor)
Cil.GuidAttribute.GetValueFromGuid (
- document.LanguageVendor, typeof
(Cil.DocumentLanguageVendor));
-
- m_documents [doc.Url] = doc;
- return doc;
- }
-
- public void Dispose ()
- {
- m_reader = null;
- // force the release of the pdb lock
- GC.Collect ();
- }
- }
-}
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb/PdbWriter.cs
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb/PdbWriter.cs 2007-10-04 08:51:20 UTC (rev
86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb/PdbWriter.cs 2007-10-04 08:57:18 UTC (rev
86853)
@@ -1,202 +0,0 @@
-//
-// PdbWriter.cs
-//
-// Author:
-// Jb Evain ([EMAIL PROTECTED])
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using Mono.Cecil.Cil;
-
-namespace Mono.Cecil.Pdb {
-
- using System;
- using System.Collections;
- using System.Diagnostics.SymbolStore;
- using System.IO;
-
- public class PdbWriter : Cil.ISymbolWriter {
-
- ModuleDefinition m_module;
- ISymbolWriter m_writer;
- Hashtable m_documents;
- string m_pdb;
-
- internal PdbWriter (ISymbolWriter writer, ModuleDefinition
module, string pdb)
- {
- m_writer = writer;
- m_module = module;
- m_documents = new Hashtable ();
- m_pdb = pdb;
- }
-
- public void Write (MethodBody body, byte [][] variables)
- {
- CreateDocuments (body);
- m_writer.OpenMethod (new SymbolToken ((int)
body.Method.MetadataToken.ToUInt ()));
- CreateScopes (body, body.Scopes, variables);
- m_writer.CloseMethod ();
- }
-
- void CreateScopes (MethodBody body, ScopeCollection scopes,
byte [][] variables)
- {
- foreach (Scope s in scopes) {
- int startOffset = s.Start.Offset;
- int endOffset = s.End ==
body.Instructions.Outside ?
-
body.Instructions[body.Instructions.Count - 1].Offset + 1 :
- s.End.Offset;
-
- m_writer.OpenScope (startOffset);
- m_writer.UsingNamespace
(body.Method.DeclaringType.Namespace);
- m_writer.OpenNamespace
(body.Method.DeclaringType.Namespace);
-
- int start = body.Instructions.IndexOf (s.Start);
- int end = s.End == body.Instructions.Outside ?
- body.Instructions.Count - 1 :
- body.Instructions.IndexOf (s.End);
-
- ArrayList instructions = new ArrayList();
- for (int i = start; i <= end; i++)
- if (body.Instructions [i].SequencePoint
!= null)
- instructions.Add
(body.Instructions [i]);
-
- Document doc = null;
-
- int [] offsets = new int [instructions.Count];
- int [] startRows = new int [instructions.Count];
- int [] startCols = new int [instructions.Count];
- int [] endRows = new int [instructions.Count];
- int [] endCols = new int [instructions.Count];
-
- for (int i = 0; i < instructions.Count; i++) {
- Instruction instr = (Instruction)
instructions [i];
- offsets [i] = instr.Offset;
-
- if (doc == null)
- doc =
instr.SequencePoint.Document;
-
- startRows [i] =
instr.SequencePoint.StartLine;
- startCols [i] =
instr.SequencePoint.StartColumn;
- endRows [i] =
instr.SequencePoint.EndLine;
- endCols [i] =
instr.SequencePoint.EndColumn;
- }
-
- m_writer.DefineSequencePoints (GetDocument
(doc),
- offsets, startRows, startCols, endRows,
endCols);
-
- CreateLocalVariable (s, startOffset, endOffset,
variables);
-
- CreateScopes (body, s.Scopes, variables);
- m_writer.CloseNamespace ();
-
- m_writer.CloseScope (endOffset);
- }
- }
-
- void CreateLocalVariable (IVariableDefinitionProvider provider,
int startOffset, int endOffset, byte [][] variables)
- {
- for (int i = 0; i < provider.Variables.Count; i++) {
- VariableDefinition var = provider.Variables [i];
- m_writer.DefineLocalVariable (
- var.Name,
- 0,
- variables [i],
- SymAddressKind.ILOffset,
- i,
- 0,
- 0,
- startOffset,
- endOffset);
- }
- }
-
- void CreateDocuments (MethodBody body)
- {
- foreach (Instruction instr in body.Instructions) {
- if (instr.SequencePoint == null)
- continue;
-
- GetDocument (instr.SequencePoint.Document);
- }
- }
-
- ISymbolDocumentWriter GetDocument (Document document)
- {
- if (document == null)
- return null;
-
- ISymbolDocumentWriter docWriter = m_documents
[document.Url] as ISymbolDocumentWriter;
- if (docWriter != null)
- return docWriter;
-
- docWriter = m_writer.DefineDocument (
- document.Url,
- GuidAttribute.GetGuidFromValue ((int)
document.Language, typeof (DocumentLanguage)),
- GuidAttribute.GetGuidFromValue ((int)
document.LanguageVendor, typeof (DocumentLanguageVendor)),
- GuidAttribute.GetGuidFromValue ((int)
document.Type, typeof (DocumentType)));
-
- m_documents [document.Url] = docWriter;
- return docWriter;
- }
-
- public void Dispose ()
- {
- m_writer.Close ();
- Patch ();
- }
-
- void Patch ()
- {
- FileStream fs = new FileStream (m_pdb, FileMode.Open,
FileAccess.ReadWrite);
- uint age = m_module.Image.DebugHeader.Age;
- Guid g = m_module.Image.DebugHeader.Signature;
-
- BinaryReader reader = new BinaryReader (fs);
- reader.BaseStream.Position = 32;
-
- uint pageSize = reader.ReadUInt32 ();
- reader.BaseStream.Position += 4;
-
- uint pageCount = reader.ReadUInt32 ();
- reader.BaseStream.Position += pageSize - 44;
-
- uint magic = 0x1312e94;
- int page = 0;
- for (int i = 1; i < pageCount; i++) {
- if (magic == reader.ReadUInt32 ()) {
- page = i;
- break;
- }
- reader.BaseStream.Position += pageSize - 4;
- }
-
- BinaryWriter writer = new BinaryWriter (fs);
- writer.BaseStream.Position = page * pageSize + 8;
-
- writer.Write (age);
- writer.Write (g.ToByteArray ());
-
- fs.Close ();
- }
- }
-}
Copied: trunk/cecil/pdb/Mono.Cecil.Pdb/default.build (from rev 86667,
trunk/cecil/pdb/default.build)
Deleted: trunk/cecil/pdb/Mono.Cecil.Pdb.csproj
===================================================================
--- trunk/cecil/pdb/Mono.Cecil.Pdb.csproj 2007-10-04 08:51:20 UTC (rev
86852)
+++ trunk/cecil/pdb/Mono.Cecil.Pdb.csproj 2007-10-04 08:57:18 UTC (rev
86853)
@@ -1,61 +0,0 @@
-<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>8.0.50727</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{4FEBBB25-D5C0-48F0-A822-2E0D6F3D777E}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Mono.Cecil.Pdb</RootNamespace>
- <AssemblyName>Mono.Cecil.Pdb</AssemblyName>
- <StartupObject>
- </StartupObject>
- <SignAssembly>true</SignAssembly>
-
<AssemblyOriginatorKeyFile>..\..\mcs\class\mono.snk</AssemblyOriginatorKeyFile>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU'
">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==
'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets
below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
- <ItemGroup>
- <Compile Include="Mono.Cecil.Pdb\AssemblyInfo.cs" />
- <Compile Include="Mono.Cecil.Pdb\IMetadataDispenser.cs" />
- <Compile Include="Mono.Cecil.Pdb\IMetadataImport.cs" />
- <Compile Include="Mono.Cecil.Pdb\PdbFactory.cs" />
- <Compile Include="Mono.Cecil.Pdb\PdbReader.cs" />
- <Compile Include="Mono.Cecil.Pdb\PdbWriter.cs" />
- <Compile Include="Mono.Cecil.Pdb\PdbHelper.cs" />
- </ItemGroup>
- <ItemGroup>
- <Reference Include="ISymWrapper" />
- <Reference Include="System" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\..\mcs\class\Mono.Cecil\Mono.Cecil.csproj">
- <Project>{D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}</Project>
- <Name>Mono.Cecil</Name>
- </ProjectReference>
- </ItemGroup>
-</Project>
\ No newline at end of file
Deleted: trunk/cecil/pdb/default.build
===================================================================
--- trunk/cecil/pdb/default.build 2007-10-04 08:51:20 UTC (rev 86852)
+++ trunk/cecil/pdb/default.build 2007-10-04 08:57:18 UTC (rev 86853)
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<project name="Mono.Cecil.Pdb" default="build">
-
- <!-- allow properties to be customized in external file" -->
- <include buildfile="build.properties"
if="${file::exists('build.properties')}" />
-
- <property name="Mono.Cecil.dll"
value="../../mcs/class/Mono.Cecil/bin/Mono.Cecil.dll" />
- <property name="build.dir" value="bin" />
- <property name="optimize" value="false" />
- <property name="debug" value="true" />
- <property name="keyfile" value="../../mcs/class/mono.snk" />
- <property name="csc.defines" value="NO_DEFINE" />
-
- <target name="release" depends="clean, set-release, build">
- </target>
-
- <target name="set-release">
- <property name="optimize" value="true" />
- <property name="debug" value="false" />
- </target>
-
- <target name="build" depends="init">
- <csc
- target="library"
- output="${build.dir}/Mono.Cecil.Pdb.dll"
- debug="${debug}"
- optimize="${optimize}"
- keyfile="${keyfile}"
- define="${csc.defines}">
- <sources basedir="Mono.Cecil.Pdb">
- <include name="**/*.cs" />
- </sources>
- <references basedir="${build.dir}">
- <include name="Mono.Cecil.dll" />
- <include name="ISymWrapper.dll" />
- </references>
- </csc>
- </target>
-
- <target name="init">
- <mkdir dir="${build.dir}"
unless="${directory::exists(build.dir)}" />
- <copy todir="${build.dir}" file="${Mono.Cecil.dll}" />
- </target>
-
- <target name="clean">
- <delete dir="${build.dir}" if="${directory::exists(build.dir)}"
/>
- </target>
-
-</project>
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches