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

Reply via email to