public static MonoDebuggerInfo Create(TargetMemoryAccess memory, TargetAddress info)
{
TargetBinaryReader header = memory.ReadMemory (info, 24).GetReader ();
long magic = header.ReadInt64 ();
if (magic != DynamicMagic) {
Report.Error ("`MONO_DEBUGGER__debugger_info' at {0} has unknown magic {1:x}.", info, magic);
return null;
}
int version = header.ReadInt32 ();
if (version < MinDynamicVersion) {
Report.Error ("`MONO_DEBUGGER__debugger_info' has version {0}, " +
"but expected at least {1}.", version,
MonoDebuggerInfo.MinDynamicVersion);
return null;
}
if (version > MaxDynamicVersion) {
Report.Error ("`MONO_DEBUGGER__debugger_info' has version {0}, " +
"but expected at most {1}.", version,
MonoDebuggerInfo.MaxDynamicVersion);
return null;
}
header.ReadInt32 (); // minor version
header.ReadInt32 ();
int size = header.ReadInt32 ();
TargetReader reader = new TargetReader (memory.ReadMemory (info, size));
return new MonoDebuggerInfo (memory, reader);
}