Author: martin
Date: 2008-02-19 08:35:16 -0500 (Tue, 19 Feb 2008)
New Revision: 96139
Modified:
branches/martin/debugger-terrania/symbolwriter/ChangeLog
branches/martin/debugger-terrania/symbolwriter/MonoSymbolFile.cs
branches/martin/debugger-terrania/symbolwriter/MonoSymbolTable.cs
Log:
2008-02-19 Martin Baulig <[EMAIL PROTECTED]>
* MonoSymbolFile.cs
(MonoSymbolFile.Version): New public readonly field.
(MonoSymbolFile.CompatibilityMode): Likewise; this is enabled if
we're reading an old `39' file.
* MonoSymbolTable.cs
(OffsetTable.CompatibilityVersion): New public const; we keep
backwards compatibility with this version.
(MethodEntry): Check `file.CompatiblityMode'.
Modified: branches/martin/debugger-terrania/symbolwriter/ChangeLog
===================================================================
--- branches/martin/debugger-terrania/symbolwriter/ChangeLog 2008-02-19
13:31:26 UTC (rev 96138)
+++ branches/martin/debugger-terrania/symbolwriter/ChangeLog 2008-02-19
13:35:16 UTC (rev 96139)
@@ -1,5 +1,17 @@
2008-02-19 Martin Baulig <[EMAIL PROTECTED]>
+ * MonoSymbolFile.cs
+ (MonoSymbolFile.Version): New public readonly field.
+ (MonoSymbolFile.CompatibilityMode): Likewise; this is enabled if
+ we're reading an old `39' file.
+
+ * MonoSymbolTable.cs
+ (OffsetTable.CompatibilityVersion): New public const; we keep
+ backwards compatibility with this version.
+ (MethodEntry): Check `file.CompatiblityMode'.
+
+2008-02-19 Martin Baulig <[EMAIL PROTECTED]>
+
* MonoSymbolWriter.cs
(MonoSymbolWriter.SetRealMethodName): New public method.
Modified: branches/martin/debugger-terrania/symbolwriter/MonoSymbolFile.cs
===================================================================
--- branches/martin/debugger-terrania/symbolwriter/MonoSymbolFile.cs
2008-02-19 13:31:26 UTC (rev 96138)
+++ branches/martin/debugger-terrania/symbolwriter/MonoSymbolFile.cs
2008-02-19 13:35:16 UTC (rev 96139)
@@ -139,6 +139,9 @@
int last_source_index;
int last_namespace_index;
+ public readonly int Version = OffsetTable.Version;
+ public readonly bool CompatibilityMode = false;
+
public int NumLineNumbers;
public MonoSymbolFile ()
@@ -318,15 +321,20 @@
throw new MonoSymbolFileException (
"Symbol file `{0}' is not a
valid " +
"Mono symbol file", filename);
- if (version != OffsetTable.Version)
+ if ((version != OffsetTable.Version) &&
+ (version !=
OffsetTable.CompatibilityVersion))
throw new MonoSymbolFileException (
"Symbol file `{0}' has version
{1}, " +
"but expected {2}", filename,
version,
OffsetTable.Version);
+ Version = (int) version;
+ if (version == OffsetTable.CompatibilityVersion)
+ CompatibilityMode = true;
+
guid = new Guid (reader.ReadBytes (16));
- ot = new OffsetTable (reader);
+ ot = new OffsetTable (reader, (int) version);
} catch {
throw new MonoSymbolFileException (
"Cannot read symbol file `{0}'",
filename);
Modified: branches/martin/debugger-terrania/symbolwriter/MonoSymbolTable.cs
===================================================================
--- branches/martin/debugger-terrania/symbolwriter/MonoSymbolTable.cs
2008-02-19 13:31:26 UTC (rev 96138)
+++ branches/martin/debugger-terrania/symbolwriter/MonoSymbolTable.cs
2008-02-19 13:35:16 UTC (rev 96139)
@@ -72,6 +72,7 @@
public struct OffsetTable
{
public const int Version = 40;
+ public const int CompatibilityVersion = 39;
public const long Magic = 0x45e82623fd7fa614;
#region This is actually written to the symbol file
@@ -90,7 +91,7 @@
public int AnonymousScopeTableSize;
#endregion
- internal OffsetTable (BinaryReader reader)
+ internal OffsetTable (BinaryReader reader, int version)
{
TotalFileSize = reader.ReadInt32 ();
DataSectionOffset = reader.ReadInt32 ();
@@ -102,9 +103,16 @@
MethodTableOffset = reader.ReadInt32 ();
MethodTableSize = reader.ReadInt32 ();
TypeCount = reader.ReadInt32 ();
- AnonymousScopeCount = reader.ReadInt32 ();
- AnonymousScopeTableOffset = reader.ReadInt32 ();
- AnonymousScopeTableSize = reader.ReadInt32 ();
+
+ if (version == CompatibilityVersion) {
+ AnonymousScopeCount = 0;
+ AnonymousScopeTableOffset = 0;
+ AnonymousScopeTableSize = 0;
+ } else {
+ AnonymousScopeCount = reader.ReadInt32 ();
+ AnonymousScopeTableOffset = reader.ReadInt32 ();
+ AnonymousScopeTableSize = reader.ReadInt32 ();
+ }
}
internal void Write (BinaryWriter bw)
@@ -819,10 +827,6 @@
set { index = value; }
}
- public static int Size {
- get { return 52; }
- }
-
internal MethodEntry (MonoSymbolFile file, MyBinaryReader
reader, int index)
{
this.SymbolFile = file;
@@ -842,15 +846,17 @@
NamespaceID = reader.ReadInt32 ();
LocalNamesAmbiguous = reader.ReadInt32 () != 0;
- NumCodeBlocks = reader.ReadInt32 ();
- CodeBlockTableOffset = reader.ReadInt32 ();
+ if (!file.CompatibilityMode) {
+ NumCodeBlocks = reader.ReadInt32 ();
+ CodeBlockTableOffset = reader.ReadInt32 ();
- NumScopeVariables = reader.ReadInt32 ();
- ScopeVariableTableOffset = reader.ReadInt32 ();
+ NumScopeVariables = reader.ReadInt32 ();
+ ScopeVariableTableOffset = reader.ReadInt32 ();
- RealNameOffset = reader.ReadInt32 ();
- if (RealNameOffset != 0)
- RealName = file.ReadString (RealNameOffset);
+ RealNameOffset = reader.ReadInt32 ();
+ if (RealNameOffset != 0)
+ RealName = file.ReadString
(RealNameOffset);
+ }
SourceFile = file.GetSourceFile (SourceFileIndex);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches