Author: martin
Date: 2006-04-17 21:27:44 -0400 (Mon, 17 Apr 2006)
New Revision: 59563
Modified:
trunk/debugger/ChangeLog
trunk/debugger/arch/Architecture.cs
trunk/debugger/arch/Architecture_I386.cs
trunk/debugger/arch/Architecture_X86_64.cs
trunk/debugger/arch/Bfd.cs
trunk/debugger/arch/BfdContainer.cs
trunk/debugger/arch/BfdDisassembler.cs
trunk/debugger/arch/CoreFile.cs
trunk/debugger/arch/DwarfFrameReader.cs
trunk/debugger/arch/DwarfReader.cs
trunk/debugger/backends/Inferior.cs
trunk/debugger/backends/MonoThreadManager.cs
trunk/debugger/backends/Process.cs
trunk/debugger/backends/classes/TargetReader.cs
trunk/debugger/classes/TargetBinaryAccess.cs
trunk/debugger/classes/TargetBinaryReader.cs
trunk/debugger/classes/TargetBinaryWriter.cs
trunk/debugger/interfaces/ITargetMemoryAccess.cs
trunk/debugger/languages/Language.cs
trunk/debugger/languages/mono/MonoArrayObject.cs
trunk/debugger/languages/mono/MonoClassInfo.cs
trunk/debugger/languages/mono/MonoLanguageBackend.cs
trunk/debugger/languages/mono/MonoSymbolFile.cs
trunk/debugger/languages/native/NativeLanguage.cs
Log:
2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
* interfaces/ITargetMemoryAccess.cs
(ITargetInfo): Removed.
Modified: trunk/debugger/ChangeLog
===================================================================
--- trunk/debugger/ChangeLog 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/ChangeLog 2006-04-18 01:27:44 UTC (rev 59563)
@@ -1,6 +1,11 @@
2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
* interfaces/ITargetMemoryAccess.cs
+ (ITargetInfo): Removed.
+
+2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
+
+ * interfaces/ITargetMemoryAccess.cs
(ITargetMemoryAccess): Removed all the writing methods.
2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
Modified: trunk/debugger/arch/Architecture.cs
===================================================================
--- trunk/debugger/arch/Architecture.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/arch/Architecture.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -9,12 +9,22 @@
public abstract class Architecture : MarshalByRefObject
{
protected readonly Process process;
+ protected readonly TargetInfo TargetInfo;
- protected Architecture (Process process)
+ protected Architecture (Process process, TargetInfo info)
{
this.process = process;
+ this.TargetInfo = info;
}
+ public AddressDomain AddressDomain {
+ get { return TargetInfo.AddressDomain; }
+ }
+
+ public int TargetAddressSize {
+ get { return TargetInfo.TargetAddressSize; }
+ }
+
// <summary>
// The names of all registers.
// </summary>
@@ -118,8 +128,7 @@
internal abstract StackFrame TrySpecialUnwind (StackFrame
last_frame,
ITargetMemoryAccess memory);
- internal abstract StackFrame CreateFrame (Thread thread,
ITargetInfo info,
- Registers regs);
+ internal abstract StackFrame CreateFrame (Thread thread,
Registers regs);
internal StackFrame CreateFrame (Thread thread, TargetAddress
address,
TargetAddress stack,
TargetAddress frame_pointer,
Modified: trunk/debugger/arch/Architecture_I386.cs
===================================================================
--- trunk/debugger/arch/Architecture_I386.cs 2006-04-18 00:51:25 UTC (rev
59562)
+++ trunk/debugger/arch/Architecture_I386.cs 2006-04-18 01:27:44 UTC (rev
59563)
@@ -31,8 +31,8 @@
// </summary>
internal class Architecture_I386 : Architecture
{
- internal Architecture_I386 (Process process)
- : base (process)
+ internal Architecture_I386 (Process process, TargetInfo info)
+ : base (process, info)
{ }
internal override bool IsRetInstruction (ITargetMemoryAccess
memory,
@@ -127,7 +127,7 @@
Registers regs = target.GetRegisters ();
Register addr = regs [(int) reg];
- TargetAddress vtable_addr = new TargetAddress
(target.AddressDomain, addr);
+ TargetAddress vtable_addr = new TargetAddress
(AddressDomain, addr);
vtable_addr += disp;
if (dereference_addr)
@@ -146,15 +146,15 @@
byte opcode2 = reader.ReadByte ();
if ((opcode == 0xff) && (opcode2 == 0x25)) {
- insn_size = 2 + target.TargetAddressSize;
- return new TargetAddress (target.AddressDomain,
reader.ReadAddress ());
+ insn_size = 2 + TargetAddressSize;
+ return new TargetAddress (AddressDomain,
reader.ReadAddress ());
} else if ((opcode == 0xff) && (opcode2 == 0xa3)) {
int offset = reader.ReadInt32 ();
Registers regs = target.GetRegisters ();
long ebx = regs [(int) I386Register.EBX].Value;
insn_size = 6;
- return new TargetAddress (target.AddressDomain,
ebx + offset);
+ return new TargetAddress (AddressDomain, ebx +
offset);
}
insn_size = 0;
@@ -185,7 +185,7 @@
if (location + call_disp + 10 != trampoline_address)
return TargetAddress.Null;
- return new TargetAddress (target.AddressDomain,
method_info);
+ return new TargetAddress (AddressDomain, method_info);
}
public override string[] RegisterNames {
@@ -370,9 +370,9 @@
Registers regs = new Registers (old_regs);
TargetAddress ebp = new TargetAddress (
- memory.AddressDomain, old_regs [(int)
I386Register.EBP]);
+ AddressDomain, old_regs [(int)
I386Register.EBP]);
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
TargetAddress new_ebp = memory.ReadAddress (ebp);
regs [(int) I386Register.EBP].SetValue (ebp, new_ebp);
@@ -453,7 +453,7 @@
TargetAddress new_eip = memory.ReadAddress
(frame.StackPointer);
regs [(int) I386Register.EIP].SetValue
(frame.StackPointer, new_eip);
- TargetAddress new_esp = frame.StackPointer +
memory.TargetAddressSize;
+ TargetAddress new_esp = frame.StackPointer +
TargetAddressSize;
TargetAddress new_ebp = frame.FrameAddress;
regs [(int) I386Register.ESP].SetValue
(new_esp);
@@ -469,7 +469,7 @@
Registers old_regs = frame.Registers;
Registers regs = new Registers (old_regs);
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
TargetAddress new_ebp = memory.ReadAddress
(frame.StackPointer);
regs [(int) I386Register.EBP].SetValue
(frame.StackPointer, new_ebp);
@@ -624,7 +624,7 @@
if (new_frame != null)
return new_frame;
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
Registers regs = new Registers (this);
@@ -652,9 +652,9 @@
{
Registers regs = inferior.GetRegisters ();
TargetAddress esp = new TargetAddress (
- inferior.AddressDomain, regs [(int)
I386Register.ESP].GetValue ());
+ AddressDomain, regs [(int)
I386Register.ESP].GetValue ());
TargetAddress eip = inferior.ReadAddress (esp);
- esp += inferior.TargetAddressSize;
+ esp += TargetAddressSize;
regs [(int) I386Register.EIP].SetValue (eip);
regs [(int) I386Register.ESP].SetValue (esp);
@@ -663,15 +663,14 @@
inferior.SetRegisters (regs);
}
- internal override StackFrame CreateFrame (Thread thread,
ITargetInfo info,
- Registers regs)
+ internal override StackFrame CreateFrame (Thread thread,
Registers regs)
{
TargetAddress address = new TargetAddress (
- info.AddressDomain, regs [(int)
I386Register.EIP]);
+ AddressDomain, regs [(int) I386Register.EIP]);
TargetAddress stack_pointer = new TargetAddress (
- info.AddressDomain, regs [(int)
I386Register.ESP]);
+ AddressDomain, regs [(int) I386Register.ESP]);
TargetAddress frame_pointer = new TargetAddress (
- info.AddressDomain, regs [(int)
I386Register.EBP]);
+ AddressDomain, regs [(int) I386Register.EBP]);
return CreateFrame (thread, address, stack_pointer,
frame_pointer, regs);
}
Modified: trunk/debugger/arch/Architecture_X86_64.cs
===================================================================
--- trunk/debugger/arch/Architecture_X86_64.cs 2006-04-18 00:51:25 UTC (rev
59562)
+++ trunk/debugger/arch/Architecture_X86_64.cs 2006-04-18 01:27:44 UTC (rev
59563)
@@ -42,8 +42,8 @@
// </summary>
internal class Architecture_X86_64 : Architecture
{
- internal Architecture_X86_64 (Process process)
- : base (process)
+ internal Architecture_X86_64 (Process process, TargetInfo info)
+ : base (process, info)
{ }
internal override bool IsRetInstruction (ITargetMemoryAccess
memory,
@@ -169,7 +169,7 @@
Registers regs = target.GetRegisters ();
Register addr = regs [(int) reg];
- TargetAddress vtable_addr = new TargetAddress
(target.AddressDomain, addr);
+ TargetAddress vtable_addr = new TargetAddress
(AddressDomain, addr);
vtable_addr += disp;
if (dereference_addr)
@@ -197,7 +197,7 @@
long rbx = regs [(int)
X86_64_Register.RBX].Value;
insn_size = 6;
- return new TargetAddress (target.AddressDomain,
rbx + offset);
+ return new TargetAddress (AddressDomain, rbx +
offset);
}
insn_size = 0;
@@ -230,7 +230,7 @@
if (location + call_disp + 19 != trampoline_address)
return TargetAddress.Null;
- return new TargetAddress (target.AddressDomain,
method_info);
+ return new TargetAddress (AddressDomain, method_info);
}
public override string[] RegisterNames {
@@ -473,9 +473,9 @@
return null;
TargetAddress rbp = new TargetAddress (
- memory.AddressDomain, old_regs [(int)
X86_64_Register.RBP]);
+ AddressDomain, old_regs [(int)
X86_64_Register.RBP]);
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
TargetAddress new_rbp = memory.ReadAddress (rbp);
regs [(int) X86_64_Register.RBP].SetValue (rbp,
new_rbp);
@@ -594,7 +594,7 @@
TargetAddress new_rip = memory.ReadAddress
(frame.StackPointer);
regs [(int) X86_64_Register.RIP].SetValue
(frame.StackPointer, new_rip);
- TargetAddress new_rsp = frame.StackPointer +
memory.TargetAddressSize;
+ TargetAddress new_rsp = frame.StackPointer +
TargetAddressSize;
TargetAddress new_rbp = frame.FrameAddress;
regs [(int) X86_64_Register.RSP].SetValue
(new_rsp);
@@ -611,7 +611,7 @@
if (pos >= offset) {
Registers regs = CopyRegisters
(frame.Registers);
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
TargetAddress new_rbp = memory.ReadAddress
(frame.StackPointer);
regs [(int) X86_64_Register.RBP].SetValue
(frame.StackPointer, new_rbp);
@@ -652,7 +652,7 @@
TargetAddress rbp = frame.FrameAddress;
- int addr_size = memory.TargetAddressSize;
+ int addr_size = TargetAddressSize;
Registers regs = CopyRegisters (frame.Registers);
@@ -713,11 +713,11 @@
}
TargetAddress rip = new TargetAddress (
- memory.AddressDomain, regs [(int)
X86_64_Register.RIP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RIP].GetValue ());
TargetAddress rsp = new TargetAddress (
- memory.AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
TargetAddress rbp = new TargetAddress (
- memory.AddressDomain, regs [(int)
X86_64_Register.RBP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RBP].GetValue ());
Symbol name = new Symbol ("<signal handler>", rip, 0);
@@ -738,9 +738,9 @@
{
Registers regs = inferior.GetRegisters ();
TargetAddress rsp = new TargetAddress (
- inferior.AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
TargetAddress rip = inferior.ReadAddress (rsp);
- rsp += inferior.TargetAddressSize;
+ rsp += TargetAddressSize;
regs [(int) X86_64_Register.RIP].SetValue (rip);
regs [(int) X86_64_Register.RSP].SetValue (rsp);
@@ -749,15 +749,14 @@
inferior.SetRegisters (regs);
}
- internal override StackFrame CreateFrame (Thread thread,
ITargetInfo info,
- Registers regs)
+ internal override StackFrame CreateFrame (Thread thread,
Registers regs)
{
TargetAddress address = new TargetAddress (
- info.AddressDomain, regs [(int)
X86_64_Register.RIP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RIP].GetValue ());
TargetAddress stack_pointer = new TargetAddress (
- info.AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RSP].GetValue ());
TargetAddress frame_pointer = new TargetAddress (
- info.AddressDomain, regs [(int)
X86_64_Register.RBP].GetValue ());
+ AddressDomain, regs [(int)
X86_64_Register.RBP].GetValue ());
return CreateFrame (thread, address, stack_pointer,
frame_pointer, regs);
}
Modified: trunk/debugger/arch/Bfd.cs
===================================================================
--- trunk/debugger/arch/Bfd.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/arch/Bfd.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -16,7 +16,7 @@
IntPtr bfd;
protected Module module;
protected BfdContainer container;
- protected ITargetInfo info;
+ protected TargetInfo info;
protected Bfd main_bfd;
protected Architecture arch;
TargetAddress first_link_map = TargetAddress.Null;
@@ -169,7 +169,7 @@
bfd_init ();
}
- public Bfd (BfdContainer container, ITargetInfo info, string
filename,
+ public Bfd (BfdContainer container, TargetInfo info, string
filename,
Bfd main_bfd, TargetAddress base_address, bool
is_loaded)
{
this.container = container;
@@ -195,9 +195,9 @@
target = bfd_glue_get_target_name (bfd);
if ((target == "elf32-i386") || (target ==
"elf64-x86-64")) {
if (target == "elf32-i386")
- arch = new Architecture_I386
(container.Process);
+ arch = new Architecture_I386
(container.Process, info);
else
- arch = new Architecture_X86_64
(container.Process);
+ arch = new Architecture_X86_64
(container.Process, info);
if (!is_coredump) {
InternalSection text = GetSectionByName
(".text", true);
@@ -336,7 +336,7 @@
if (section == null)
return false;
- TargetAddress vma = new TargetAddress
(target.AddressDomain, section.vma);
+ TargetAddress vma = new TargetAddress
(info.AddressDomain, section.vma);
int size = (int) section.size;
byte[] dynamic = target.ReadBuffer (vma, size);
@@ -349,17 +349,17 @@
long base_ptr = bfd_glue_elfi386_locate_base
(bfd, data, size);
if (base_ptr == 0)
return false;
- debug_base = new TargetAddress
(target.AddressDomain, base_ptr);
+ debug_base = new TargetAddress
(info.AddressDomain, base_ptr);
} finally {
if (data != IntPtr.Zero)
Marshal.FreeHGlobal (data);
}
- int the_size = 2 * target.TargetLongIntegerSize +
- 3 * target.TargetAddressSize;
+ int the_size = 2 * info.TargetLongIntegerSize +
+ 3 * info.TargetAddressSize;
TargetBlob blob = target.ReadMemory (debug_base,
the_size);
- TargetReader reader = new TargetReader (blob.Contents,
target);
+ TargetReader reader = new TargetReader (blob.Contents,
info);
if (reader.ReadLongInteger () != 1)
return false;
@@ -399,9 +399,9 @@
bool first = true;
TargetAddress map = first_link_map;
while (!map.IsNull) {
- int the_size = 4 * target.TargetAddressSize;
+ int the_size = 4 * info.TargetAddressSize;
TargetBlob blob = target.ReadMemory (map,
the_size);
- TargetReader map_reader = new TargetReader
(blob.Contents, target);
+ TargetReader map_reader = new TargetReader
(blob.Contents, info);
TargetAddress l_addr = map_reader.ReadAddress
();
TargetAddress l_name = map_reader.ReadAddress
();
@@ -435,7 +435,7 @@
continue;
}
- bfd = container.AddFile (target, name, l_addr,
module.StepInto, true);
+ bfd = container.AddFile (info, name, l_addr,
module.StepInto, true);
bfd.module_loaded (inferior, l_addr);
}
}
@@ -474,7 +474,7 @@
info.AddressDomain, BaseAddress.Address
+ address);
}
- public ITargetInfo TargetInfo {
+ public TargetInfo TargetInfo {
get {
return info;
}
@@ -986,7 +986,7 @@
}
is_start = true;
- return memory.ReadAddress (got_start + 2 *
memory.TargetAddressSize);
+ return memory.ReadAddress (got_start + 2 *
info.TargetAddressSize);
}
internal override StackFrame UnwindStack (StackFrame frame,
ITargetMemoryAccess memory)
Modified: trunk/debugger/arch/BfdContainer.cs
===================================================================
--- trunk/debugger/arch/BfdContainer.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/arch/BfdContainer.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -39,13 +39,13 @@
}
}
- internal void SetupInferior (ITargetInfo info, Bfd main_bfd)
+ internal void SetupInferior (TargetInfo info, Bfd main_bfd)
{
this.main_bfd = main_bfd;
language = new NativeLanguage (this, info);
}
- public Bfd AddFile (ITargetInfo memory, string filename,
+ public Bfd AddFile (TargetInfo memory, string filename,
TargetAddress base_address, bool step_info,
bool is_loaded)
{
check_disposed ();
Modified: trunk/debugger/arch/BfdDisassembler.cs
===================================================================
--- trunk/debugger/arch/BfdDisassembler.cs 2006-04-18 00:51:25 UTC (rev
59562)
+++ trunk/debugger/arch/BfdDisassembler.cs 2006-04-18 01:27:44 UTC (rev
59563)
@@ -54,7 +54,8 @@
int read_memory_func (long address, IntPtr data, int size)
{
try {
- TargetAddress location = new TargetAddress
(memory.AddressDomain, address);
+ TargetAddress location = new TargetAddress (
+ memory.TargetInfo.AddressDomain,
address);
byte[] buffer = memory.ReadBuffer (location,
size);
Marshal.Copy (buffer, 0, data, size);
} catch (Exception e) {
@@ -80,7 +81,8 @@
void print_address_func (long address)
{
- TargetAddress maddress = new TargetAddress
(memory.AddressDomain, address);
+ TargetAddress maddress = new TargetAddress (
+ memory.TargetInfo.AddressDomain, address);
if (current_method != null) {
try {
@@ -148,7 +150,7 @@
sb = new StringBuilder ();
address = new TargetAddress (
- memory.AddressDomain, address.Address);
+ memory.TargetInfo.AddressDomain,
address.Address);
string insn;
int insn_size;
Modified: trunk/debugger/arch/CoreFile.cs
===================================================================
--- trunk/debugger/arch/CoreFile.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/arch/CoreFile.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -205,7 +205,7 @@
get {
if (current_frame == null)
current_frame =
CoreFile.Architecture.CreateFrame (
- Thread,
CoreFile.TargetInfo, Registers);
+ Thread, Registers);
return current_frame;
}
@@ -295,7 +295,7 @@
public override TargetBlob ReadMemory (TargetAddress
address, int size)
{
- return new TargetBlob (ReadBuffer (address,
size), this);
+ return new TargetBlob (ReadBuffer (address,
size), TargetInfo);
}
public override byte[] ReadBuffer (TargetAddress
address, int size)
Modified: trunk/debugger/arch/DwarfFrameReader.cs
===================================================================
--- trunk/debugger/arch/DwarfFrameReader.cs 2006-04-18 00:51:25 UTC (rev
59562)
+++ trunk/debugger/arch/DwarfFrameReader.cs 2006-04-18 01:27:44 UTC (rev
59563)
@@ -69,7 +69,7 @@
long range = ReadEncodedValue (reader,
cie.Encoding & 0x0f);
TargetAddress start = new TargetAddress (
- target.AddressDomain, initial);
+ target.TargetInfo.AddressDomain,
initial);
if ((address < start) || (address > start +
range)) {
reader.Position = end_pos;
@@ -325,7 +325,7 @@
{
long cfa_addr = GetRegisterValue (regs, 1,
columns [0]);
TargetAddress cfa = new TargetAddress (
- target.AddressDomain, cfa_addr);
+ arch.AddressDomain, cfa_addr);
for (int i = 1; i < columns.Length; i++) {
GetValue (target, regs, cfa, i+2,
columns [i]);
@@ -349,14 +349,14 @@
return null;
TargetAddress address = new TargetAddress (
- target.AddressDomain,
eip.Value);
+ arch.AddressDomain, eip.Value);
TargetAddress stack = new TargetAddress (
- target.AddressDomain,
esp.Value);
+ arch.AddressDomain, esp.Value);
TargetAddress frame_addr = TargetAddress.Null;
if (ebp.Valid)
frame_addr = new TargetAddress (
- target.AddressDomain,
ebp.Value);
+ arch.AddressDomain, ebp.Value);
return arch.CreateFrame (
frame.Thread, address, stack,
frame_addr, regs);
Modified: trunk/debugger/arch/DwarfReader.cs
===================================================================
--- trunk/debugger/arch/DwarfReader.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/arch/DwarfReader.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -113,7 +113,7 @@
ArrayList aranges;
Hashtable pubnames;
Hashtable pubtypes;
- ITargetInfo target_info;
+ TargetInfo target_info;
SourceFileFactory factory;
public DwarfReader (Bfd bfd, Module module, SourceFileFactory
factory)
@@ -188,7 +188,7 @@
return false;
}
- public ITargetInfo TargetInfo {
+ public TargetInfo TargetInfo {
get {
return target_info;
}
@@ -3627,7 +3627,7 @@
long location_constant;
bool use_constant;
TargetVariable variable;
- ITargetInfo target_info;
+ TargetInfo target_info;
bool resolved;
protected bool DoResolve ()
@@ -3714,7 +3714,7 @@
bool resolved, ok;
DieType type_die;
TargetType type;
- ITargetInfo target_info;
+ TargetInfo target_info;
int bit_offset, bit_size;
int offset;
Modified: trunk/debugger/backends/Inferior.cs
===================================================================
--- trunk/debugger/backends/Inferior.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/backends/Inferior.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -604,7 +604,7 @@
try {
bfd = bfd_container.AddFile (
- this, start.TargetApplication,
TargetAddress.Null,
+ target_info, start.TargetApplication,
TargetAddress.Null,
start.LoadNativeSymbolTable, true);
} catch (Exception e) {
if (error_handler != null)
@@ -616,7 +616,7 @@
return;
}
- bfd_container.SetupInferior (this, bfd);
+ bfd_container.SetupInferior (target_info, bfd);
arch = bfd.Architecture;
@@ -1166,7 +1166,7 @@
{
TargetAddress address, stack, frame;
- internal StackFrame (ITargetInfo info, ServerStackFrame
frame)
+ internal StackFrame (TargetInfo info, ServerStackFrame
frame)
{
this.address = new TargetAddress
(info.AddressDomain, frame.Address);
this.stack = new TargetAddress
(info.AddressDomain, frame.StackPointer);
@@ -1214,7 +1214,7 @@
public StackFrame GetCurrentFrame ()
{
ServerStackFrame frame = get_current_frame ();
- return new StackFrame (this, frame);
+ return new StackFrame (target_info, frame);
}
public TargetMemoryArea[] GetMemoryMaps ()
Modified: trunk/debugger/backends/MonoThreadManager.cs
===================================================================
--- trunk/debugger/backends/MonoThreadManager.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/backends/MonoThreadManager.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -71,7 +71,7 @@
int size = header.ReadInt32 ();
TargetReader reader = new TargetReader (
- inferior.ReadMemory (info, size), inferior);
+ inferior.ReadMemory (info, size),
inferior.TargetInfo);
debugger_info = new MonoDebuggerInfo (reader);
if (attach)
Modified: trunk/debugger/backends/Process.cs
===================================================================
--- trunk/debugger/backends/Process.cs 2006-04-18 00:51:25 UTC (rev 59562)
+++ trunk/debugger/backends/Process.cs 2006-04-18 01:27:44 UTC (rev 59563)
@@ -434,7 +434,8 @@
filename);
if (!mono_language.TryFindImage (thread, filename))
- bfd_container.AddFile (thread, filename,
TargetAddress.Null, true, false);
+ bfd_container.AddFile (thread.TargetInfo,
filename,
+ TargetAddress.Null,
true, false);
}
internal MonoLanguageBackend MonoLanguage {
Modified: trunk/debugger/backends/classes/TargetReader.cs
===================================================================
--- trunk/debugger/backends/classes/TargetReader.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/backends/classes/TargetReader.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -11,9 +11,9 @@
{
byte[] data;
TargetBinaryReader reader;
- ITargetInfo info;
+ TargetInfo info;
- internal TargetReader (byte[] data, ITargetInfo info)
+ internal TargetReader (byte[] data, TargetInfo info)
{
if ((info == null) || (data == null))
throw new ArgumentNullException ();
@@ -22,7 +22,7 @@
this.data = data;
}
- internal TargetReader (TargetBlob data, ITargetInfo info)
+ internal TargetReader (TargetBlob data, TargetInfo info)
: this (data.Contents, info)
{ }
Modified: trunk/debugger/classes/TargetBinaryAccess.cs
===================================================================
--- trunk/debugger/classes/TargetBinaryAccess.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/classes/TargetBinaryAccess.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -4,7 +4,7 @@
namespace Mono.Debugger
{
[Serializable]
- public sealed class TargetInfo : ITargetInfo
+ public sealed class TargetInfo
{
int target_int_size;
int target_long_size;
@@ -58,15 +58,15 @@
public sealed class TargetBlob
{
public readonly byte[] Contents;
- public readonly ITargetInfo TargetInfo;
+ public readonly TargetInfo TargetInfo;
- public TargetBlob (byte[] contents, ITargetInfo target_info)
+ public TargetBlob (byte[] contents, TargetInfo target_info)
{
this.Contents = contents;
this.TargetInfo = target_info;
}
- public TargetBlob (int size, ITargetInfo target_info)
+ public TargetBlob (int size, TargetInfo target_info)
{
this.Contents = new byte [size];
this.TargetInfo = target_info;
@@ -106,7 +106,7 @@
}
}
- public ITargetInfo TargetInfo {
+ public TargetInfo TargetInfo {
get {
return blob.TargetInfo;
}
Modified: trunk/debugger/classes/TargetBinaryReader.cs
===================================================================
--- trunk/debugger/classes/TargetBinaryReader.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/classes/TargetBinaryReader.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -8,7 +8,7 @@
[Serializable]
public class TargetBinaryReader : TargetBinaryAccess
{
- public TargetBinaryReader (byte[] contents, ITargetInfo
target_info)
+ public TargetBinaryReader (byte[] contents, TargetInfo
target_info)
: base (new TargetBlob (contents, target_info))
{ }
Modified: trunk/debugger/classes/TargetBinaryWriter.cs
===================================================================
--- trunk/debugger/classes/TargetBinaryWriter.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/classes/TargetBinaryWriter.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -5,7 +5,7 @@
{
public class TargetBinaryWriter : TargetBinaryAccess
{
- public TargetBinaryWriter (int size, ITargetInfo target_info)
+ public TargetBinaryWriter (int size, TargetInfo target_info)
: base (new TargetBlob (size, target_info))
{ }
Modified: trunk/debugger/interfaces/ITargetMemoryAccess.cs
===================================================================
--- trunk/debugger/interfaces/ITargetMemoryAccess.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/interfaces/ITargetMemoryAccess.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -3,43 +3,8 @@
namespace Mono.Debugger
{
- public interface ITargetInfo
+ internal interface ITargetMemoryAccess
{
- // <summary>
- // Size of an address in the target.
- // </summary>
- int TargetAddressSize {
- get;
- }
-
- // <summary>
- // Size of an integer in the target.
- // </summary>
- int TargetIntegerSize {
- get;
- }
-
- // <summary>
- // Size of a long integer in the target.
- // </summary>
- int TargetLongIntegerSize {
- get;
- }
-
- // <summary>
- // Whether this architecture is big-endian.
- // </summary>
- bool IsBigEndian {
- get;
- }
-
- AddressDomain AddressDomain {
- get;
- }
- }
-
- internal interface ITargetMemoryAccess : ITargetInfo
- {
TargetInfo TargetInfo {
get;
}
Modified: trunk/debugger/languages/Language.cs
===================================================================
--- trunk/debugger/languages/Language.cs 2006-04-18 00:51:25 UTC (rev
59562)
+++ trunk/debugger/languages/Language.cs 2006-04-18 01:27:44 UTC (rev
59563)
@@ -12,7 +12,7 @@
get;
}
- public abstract ITargetInfo TargetInfo {
+ public abstract TargetInfo TargetInfo {
get;
}
Modified: trunk/debugger/languages/mono/MonoArrayObject.cs
===================================================================
--- trunk/debugger/languages/mono/MonoArrayObject.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/languages/mono/MonoArrayObject.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -79,7 +79,7 @@
Type.ElementType.SetObject (target, new_loc, obj);
}
- int GetElementSize (ITargetInfo info)
+ int GetElementSize (TargetInfo info)
{
if (Type.ElementType.IsByRef)
return info.TargetAddressSize;
Modified: trunk/debugger/languages/mono/MonoClassInfo.cs
===================================================================
--- trunk/debugger/languages/mono/MonoClassInfo.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/languages/mono/MonoClassInfo.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -22,7 +22,7 @@
size = info.ReadLeb128 ();
KlassAddress = new TargetAddress (
- type.File.AddressDomain, info.ReadAddress ());
+ info.TargetInfo.AddressDomain, info.ReadAddress
());
type.File.MonoLanguage.AddClass (KlassAddress, type);
Modified: trunk/debugger/languages/mono/MonoLanguageBackend.cs
===================================================================
--- trunk/debugger/languages/mono/MonoLanguageBackend.cs 2006-04-18
00:51:25 UTC (rev 59562)
+++ trunk/debugger/languages/mono/MonoLanguageBackend.cs 2006-04-18
01:27:44 UTC (rev 59563)
@@ -91,7 +91,7 @@
int defaults_size = reader.ReadInt32 ();
TargetAddress defaults_address = new TargetAddress (
- memory.AddressDomain, reader.ReadAddress ());
+ memory.TargetInfo.AddressDomain,
reader.ReadAddress ());
TypeSize = reader.ReadInt32 ();
ArrayTypeSize = reader.ReadInt32 ();
@@ -132,7 +132,8 @@
MonoDefaultsExceptionOffset = reader.ReadInt32 ();
TargetReader mono_defaults = new TargetReader (
- memory.ReadMemory (defaults_address,
defaults_size).Contents, memory);
+ memory.ReadMemory (defaults_address,
defaults_size).Contents,
+ memory.TargetInfo);
MonoLanguageBackend language = corlib.MonoLanguage;
mono_defaults.Offset = MonoDefaultsObjectOffset;
@@ -305,7 +306,7 @@
get { return process.SourceFileFactory; }
}
- public override ITargetInfo TargetInfo {
+ public override TargetInfo TargetInfo {
get { return corlib.TargetInfo; }
}
@@ -415,11 +416,11 @@
trampolines = new TargetAddress [4];
TargetAddress address = info.MonoTrampolineCode;
trampolines [0] = memory.ReadAddress (address);
- address += memory.TargetAddressSize;
+ address += memory.TargetInfo.TargetAddressSize;
trampolines [1] = memory.ReadAddress (address);
- address += memory.TargetAddressSize;
+ address += memory.TargetInfo.TargetAddressSize;
trampolines [2] = memory.ReadAddress (address);
- address += 2 * memory.TargetAddressSize;
+ address += 2 * memory.TargetInfo.TargetAddressSize;
trampolines [3] = memory.ReadAddress (address);
symbol_files = new ArrayList ();
@@ -462,7 +463,8 @@
{
TargetAddress symtab_address = memory.ReadAddress
(info.SymbolTable);
TargetReader header = new TargetReader (
- memory.ReadMemory (symtab_address,
info.SymbolTableSize), memory);
+ memory.ReadMemory (symtab_address,
info.SymbolTableSize),
+ memory.TargetInfo);
long magic = header.BinaryReader.ReadInt64 ();
if (magic != MonoDebuggerInfo.DynamicMagic)
@@ -492,10 +494,10 @@
TargetAddress symfiles_address = header.ReadAddress ();
int num_symbol_files = header.ReadInteger ();
- symfiles_address += last_num_symbol_files *
memory.TargetAddressSize;
+ symfiles_address += last_num_symbol_files *
memory.TargetInfo.TargetAddressSize;
for (int i = last_num_symbol_files; i <
num_symbol_files; i++) {
TargetAddress address = memory.ReadAddress
(symfiles_address);
- symfiles_address += memory.TargetAddressSize;
+ symfiles_address +=
memory.TargetInfo.TargetAddressSize;
try {
MonoSymbolFile symfile = new
MonoSymbolFile (
@@ -534,11 +536,11 @@
if (num_data_tables != last_num_data_tables) {
int old_offset = last_data_table_offset;
- data_tables += last_num_data_tables *
memory.TargetAddressSize;
+ data_tables += last_num_data_tables *
memory.TargetInfo.TargetAddressSize;
for (int i = last_num_data_tables; i <
num_data_tables; i++) {
TargetAddress old_table =
memory.ReadAddress (data_tables);
- data_tables += memory.TargetAddressSize;
+ data_tables +=
memory.TargetInfo.TargetAddressSize;
int old_size = memory.ReadInteger
(old_table);
read_data_items (memory, old_table,
old_offset, old_size);
@@ -576,14 +578,14 @@
void read_data_items (ITargetMemoryAccess memory, TargetAddress
address, int start, int end)
{
TargetReader reader = new TargetReader (
- memory.ReadMemory (address + start, end -
start), memory);
+ memory.ReadMemory (address + start, end -
start), memory.TargetInfo);
Report.Debug (DebugFlags.JitSymtab,
"READ DATA ITEMS: {0} {1} {2} - {3} {4}",
address, start, end,
reader.BinaryReader.Position,
reader.Size);
if (start == 0)
- reader.BinaryReader.Position =
memory.TargetAddressSize;
+ reader.BinaryReader.Position =
memory.TargetInfo.TargetAddressSize;
while (reader.BinaryReader.Position + 4 < reader.Size) {
int item_size = reader.BinaryReader.ReadInt32
();
Modified: trunk/debugger/languages/mono/MonoSymbolFile.cs
===================================================================
--- trunk/debugger/languages/mono/MonoSymbolFile.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/languages/mono/MonoSymbolFile.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -208,15 +208,12 @@
internal readonly string ImageFile;
internal readonly C.MonoSymbolFile File;
internal readonly ThreadManager ThreadManager;
- internal readonly AddressDomain AddressDomain;
- internal readonly ITargetInfo TargetInfo;
+ internal readonly TargetInfo TargetInfo;
internal readonly MonoLanguageBackend MonoLanguage;
internal readonly Architecture Architecture;
protected readonly Process process;
MonoSymbolTable symtab;
string name;
- int address_size;
- int int_size;
Hashtable range_hash;
ArrayList ranges;
@@ -232,15 +229,14 @@
ITargetMemoryAccess memory,
TargetAddress address)
{
this.MonoLanguage = language;
- this.TargetInfo = memory;
+ this.TargetInfo = memory.TargetInfo;
this.Architecture = memory.Architecture;
this.process = process;
ThreadManager = process.ThreadManager;
- AddressDomain = memory.AddressDomain;
- address_size = TargetInfo.TargetAddressSize;
- int_size = TargetInfo.TargetIntegerSize;
+ int address_size = TargetInfo.TargetAddressSize;
+ int int_size = TargetInfo.TargetIntegerSize;
ranges = new ArrayList ();
wrappers = new ArrayList ();
@@ -573,7 +569,7 @@
if (!method.IsLoaded) {
TargetBinaryReader reader = new
TargetBinaryReader (contents, TargetInfo);
- method.Load (reader, AddressDomain);
+ method.Load (reader, TargetInfo.AddressDomain);
}
return method;
Modified: trunk/debugger/languages/native/NativeLanguage.cs
===================================================================
--- trunk/debugger/languages/native/NativeLanguage.cs 2006-04-18 00:51:25 UTC
(rev 59562)
+++ trunk/debugger/languages/native/NativeLanguage.cs 2006-04-18 01:27:44 UTC
(rev 59563)
@@ -13,9 +13,9 @@
NativePointerType pointer_type;
NativeOpaqueType void_type;
NativeStringType string_type;
- ITargetInfo info;
+ TargetInfo info;
- public NativeLanguage (BfdContainer bfd_container, ITargetInfo
info)
+ public NativeLanguage (BfdContainer bfd_container, TargetInfo
info)
{
this.bfd_container = bfd_container;
this.info = info;
@@ -56,7 +56,7 @@
get { return void_type; }
}
- public override ITargetInfo TargetInfo {
+ public override TargetInfo TargetInfo {
get { return info; }
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches