Author: martin
Date: 2006-04-17 20:04:58 -0400 (Mon, 17 Apr 2006)
New Revision: 59556
Modified:
trunk/debugger/ChangeLog
trunk/debugger/arch/BfdContainer.cs
trunk/debugger/arch/CoreFile.cs
trunk/debugger/backends/Inferior.cs
trunk/debugger/backends/MonoThreadManager.cs
trunk/debugger/backends/Process.cs
trunk/debugger/backends/SingleSteppingEngine.cs
trunk/debugger/backends/classes/TargetReader.cs
Log:
2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
* backends/Inferior.cs
(Inferior.GetTargetInfo): New public static method.
* arch/CoreFile.cs: Don't create an Inferior here and make core
files work again.
Modified: trunk/debugger/ChangeLog
===================================================================
--- trunk/debugger/ChangeLog 2006-04-18 00:03:21 UTC (rev 59555)
+++ trunk/debugger/ChangeLog 2006-04-18 00:04:58 UTC (rev 59556)
@@ -1,5 +1,13 @@
2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
+ * backends/Inferior.cs
+ (Inferior.GetTargetInfo): New public static method.
+
+ * arch/CoreFile.cs: Don't create an Inferior here and make core
+ files work again.
+
+2006-04-18 Martin Baulig <[EMAIL PROTECTED]>
+
* backends/ThreadBase.cs: Renamed into TargetAccess.cs.
(ThreadBase): Renamed into `TargetAccess'.
Modified: trunk/debugger/arch/BfdContainer.cs
===================================================================
--- trunk/debugger/arch/BfdContainer.cs 2006-04-18 00:03:21 UTC (rev 59555)
+++ trunk/debugger/arch/BfdContainer.cs 2006-04-18 00:04:58 UTC (rev 59556)
@@ -45,7 +45,7 @@
language = new NativeLanguage (this, info);
}
- public Bfd AddFile (ITargetMemoryAccess memory, string filename,
+ public Bfd AddFile (ITargetMemoryInfo memory, string filename,
TargetAddress base_address, bool step_info,
bool is_loaded)
{
check_disposed ();
Modified: trunk/debugger/arch/CoreFile.cs
===================================================================
--- trunk/debugger/arch/CoreFile.cs 2006-04-18 00:03:21 UTC (rev 59555)
+++ trunk/debugger/arch/CoreFile.cs 2006-04-18 00:04:58 UTC (rev 59556)
@@ -8,9 +8,7 @@
{
internal class CoreFile : Process
{
- ITargetInfo info;
- ITargetMemoryInfo memory_info;
- CoreFileThread main_thread;
+ TargetMemoryInfo info;
Bfd bfd, core_bfd;
string core_file;
string application;
@@ -18,32 +16,29 @@
public static CoreFile OpenCoreFile (ThreadManager manager,
ProcessStart start)
{
- CoreFile core = new CoreFile (manager, start);
-
- Inferior inferior = Inferior.CreateInferior (manager,
core, start);
- core.OpenCoreFile (inferior, inferior.Bfd,
start.CoreFile);
-
- return core;
+ return new CoreFile (manager, start);
}
protected CoreFile (ThreadManager manager, ProcessStart start)
: base (manager, start)
- { }
-
- private void OpenCoreFile (Inferior inferior, Bfd bfd, string
core_file)
{
- this.info = inferior.TargetInfo;
- this.memory_info = inferior.TargetMemoryInfo;
- this.bfd = bfd;
- this.core_file = core_file;
- this.application = bfd.FileName;
+ info = new TargetMemoryInfo (Inferior.GetTargetInfo (),
manager.AddressDomain);
+ bfd = BfdContainer.AddFile (
+ info, start.TargetApplication,
TargetAddress.Null,
+ start.LoadNativeSymbolTable, true);
+
+ info.Initialize (bfd.Architecture);
+
+ core_file = start.CoreFile;
+ application = bfd.FileName;
+
core_bfd = bfd.OpenCoreFile (core_file);
+#if FIXME
string crash_program = core_bfd.CrashProgram;
string[] crash_program_args = crash_program.Split (' ');
-#if FIXME
if (crash_program_args [0] != application)
throw new TargetException (
TargetError.CannotStartTarget,
@@ -68,9 +63,9 @@
#endif
read_note_section ();
- main_thread = (CoreFileThread) threads [0];
+ main_thread = ((CoreFileThread) threads [0]).Thread;
- ReachedMain (inferior, main_thread.Thread, null);
+ ReachedMain ();
InitializeModules ();
}
@@ -143,7 +138,7 @@
}
public ITargetMemoryInfo TargetMemoryInfo {
- get { return memory_info; }
+ get { return info; }
}
protected class CoreFileThread : TargetAccess
Modified: trunk/debugger/backends/Inferior.cs
===================================================================
--- trunk/debugger/backends/Inferior.cs 2006-04-18 00:03:21 UTC (rev 59555)
+++ trunk/debugger/backends/Inferior.cs 2006-04-18 00:04:58 UTC (rev 59556)
@@ -284,7 +284,7 @@
[DllImport("libglib-2.0-0.dll")]
protected extern static void g_free (IntPtr data);
- protected void check_error (TargetError error)
+ protected static void check_error (TargetError error)
{
if (error == TargetError.None)
return;
@@ -577,6 +577,17 @@
return new ChildEvent (message, arg, data1, data2);
}
+ public static TargetInfo GetTargetInfo ()
+ {
+ int target_int_size, target_long_size,
target_addr_size, is_bigendian;
+ check_error (mono_debugger_server_get_target_info
+ (out target_int_size, out target_long_size,
+ out target_addr_size, out is_bigendian));
+
+ return new TargetInfo (target_int_size,
target_long_size,
+ target_addr_size, is_bigendian
!= 0);
+ }
+
protected void SetupInferior ()
{
IntPtr data = IntPtr.Zero;
@@ -591,17 +602,9 @@
g_free (data);
}
- int target_int_size, target_long_size,
target_addr_size, is_bigendian;
- check_error (mono_debugger_server_get_target_info
- (out target_int_size, out target_long_size,
- out target_addr_size, out is_bigendian));
+ target_info = GetTargetInfo ();
+ target_memory_info = new TargetMemoryInfo (target_info,
address_domain);
- target_info = new TargetInfo (target_int_size,
target_long_size,
- target_addr_size,
is_bigendian != 0);
- target_memory_info = new TargetMemoryInfo
(target_int_size, target_long_size,
-
target_addr_size, is_bigendian != 0,
-
address_domain);
-
try {
bfd = bfd_container.AddFile (
this, start.TargetApplication,
TargetAddress.Null,
Modified: trunk/debugger/backends/MonoThreadManager.cs
===================================================================
--- trunk/debugger/backends/MonoThreadManager.cs 2006-04-18 00:03:21 UTC
(rev 59555)
+++ trunk/debugger/backends/MonoThreadManager.cs 2006-04-18 00:04:58 UTC
(rev 59556)
@@ -227,7 +227,8 @@
else
engine.Start
(TargetAddress.Null);
- inferior.Process.ReachedMain (inferior,
engine.Thread, engine);
+ inferior.Process.ReachedMain ();
+ inferior.InitializeModules ();
return true;
}
Modified: trunk/debugger/backends/Process.cs
===================================================================
--- trunk/debugger/backends/Process.cs 2006-04-18 00:03:21 UTC (rev 59555)
+++ trunk/debugger/backends/Process.cs 2006-04-18 00:04:58 UTC (rev 59556)
@@ -22,7 +22,7 @@
MonoThreadManager mono_manager;
BreakpointManager breakpoint_manager;
ProcessStart start;
- Thread main_thread;
+ protected Thread main_thread;
SingleSteppingEngine main_engine;
ArrayList languages;
Hashtable thread_hash;
@@ -200,13 +200,10 @@
ModulesChangedEvent ();
}
- internal void ReachedMain (Inferior inferior, Thread thread,
- SingleSteppingEngine engine)
+ internal void ReachedMain ()
{
module_manager.UnLock ();
symtab_manager.Wait ();
-
- inferior.InitializeModules ();
}
internal void ThreadCreated (Inferior inferior, int pid, bool
do_attach)
@@ -314,7 +311,7 @@
Initialize (new_thread, new_inferior, true);
}
-
+
protected void OnThreadCreatedEvent (Thread thread)
{
thread_hash.Add (thread.PID, thread);
Modified: trunk/debugger/backends/SingleSteppingEngine.cs
===================================================================
--- trunk/debugger/backends/SingleSteppingEngine.cs 2006-04-18 00:03:21 UTC
(rev 59555)
+++ trunk/debugger/backends/SingleSteppingEngine.cs 2006-04-18 00:04:58 UTC
(rev 59556)
@@ -381,8 +381,10 @@
main_method_retaddr =
ret_frame.TargetAddress;
}
- if (!process.IsManaged)
- process.ReachedMain (inferior,
thread, this);
+ if (!process.IsManaged) {
+ process.ReachedMain ();
+ inferior.InitializeModules ();
+ }
}
// Ok, inform the user that we stopped.
OperationCompleted (result);
@@ -2020,7 +2022,8 @@
sse, data1, data2, Result);
RestoreStack (sse);
- sse.process.ReachedMain (inferior, sse.thread, sse);
+ sse.process.ReachedMain ();
+ inferior.InitializeModules ();
return true;
}
}
Modified: trunk/debugger/backends/classes/TargetReader.cs
===================================================================
--- trunk/debugger/backends/classes/TargetReader.cs 2006-04-18 00:03:21 UTC
(rev 59555)
+++ trunk/debugger/backends/classes/TargetReader.cs 2006-04-18 00:04:58 UTC
(rev 59556)
@@ -58,11 +58,9 @@
Architecture arch;
AddressDomain address_domain;
- internal TargetMemoryInfo (int target_int_size, int
target_long_size,
- int target_address_size, bool
is_bigendian,
- AddressDomain domain)
- : base (target_int_size, target_long_size,
target_address_size,
- is_bigendian)
+ internal TargetMemoryInfo (TargetInfo info, AddressDomain
domain)
+ : base (info.TargetIntegerSize,
info.TargetLongIntegerSize,
+ info.TargetAddressSize, info.IsBigEndian)
{
this.address_domain = domain;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches