2006-05-27 07:34:28 +00:00
|
|
|
for gdb-6.3/gdb/ChangeLog
|
|
|
|
from Alexandre Oliva <aoliva@redhat.com>
|
|
|
|
|
|
|
|
* i386-linux-nat.c (i386_debug_register_for_thread): New struct.
|
|
|
|
(i386_linux_set_dr_for_thread): Rename from...
|
|
|
|
(i386_linux_set_debug_regs_for_thread): ... this, and
|
|
|
|
add new function to catch exceptions in the old one.
|
|
|
|
|
2006-07-11 08:25:57 +00:00
|
|
|
Index: gdb-6.5/gdb/i386-linux-nat.c
|
2006-05-27 07:34:28 +00:00
|
|
|
===================================================================
|
2006-07-11 08:25:57 +00:00
|
|
|
--- gdb-6.5.orig/gdb/i386-linux-nat.c 2006-07-11 05:21:58.000000000 -0300
|
|
|
|
+++ gdb-6.5/gdb/i386-linux-nat.c 2006-07-11 05:24:29.000000000 -0300
|
|
|
|
@@ -27,6 +27,7 @@
|
|
|
|
#include "observer.h"
|
|
|
|
#include "target.h"
|
|
|
|
#include "linux-nat.h"
|
|
|
|
+#include "exceptions.h"
|
|
|
|
|
|
|
|
#include "gdb_assert.h"
|
|
|
|
#include "gdb_string.h"
|
|
|
|
@@ -695,14 +696,33 @@ struct i386_debug_register_state
|
2006-05-27 07:34:28 +00:00
|
|
|
unsigned long control;
|
|
|
|
};
|
|
|
|
|
|
|
|
-static void
|
|
|
|
-i386_linux_set_debug_regs_for_thread (ptid_t ptid,
|
|
|
|
- struct i386_debug_register_state *dbs)
|
|
|
|
+struct i386_debug_register_for_thread
|
|
|
|
+{
|
|
|
|
+ ptid_t ptid;
|
|
|
|
+ struct i386_debug_register_state *dbs;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static int
|
|
|
|
+i386_linux_set_dr_for_thread (void *drp)
|
|
|
|
{
|
|
|
|
+ ptid_t ptid = ((struct i386_debug_register_for_thread *)drp)->ptid;
|
|
|
|
+ struct i386_debug_register_state *dbs
|
|
|
|
+ = ((struct i386_debug_register_for_thread *)drp)->dbs;
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < (DR_LASTADDR - DR_FIRSTADDR) + 1; ++i)
|
|
|
|
i386_linux_dr_set_addr (ptid, i, dbs->addr[i]);
|
|
|
|
i386_linux_dr_set_control (ptid, dbs->control);
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int
|
|
|
|
+i386_linux_set_debug_regs_for_thread (ptid_t ptid,
|
|
|
|
+ struct i386_debug_register_state *dbs)
|
|
|
|
+{
|
|
|
|
+ struct i386_debug_register_for_thread dr;
|
|
|
|
+ dr.ptid = ptid;
|
|
|
|
+ dr.dbs = dbs;
|
|
|
|
+ return catch_errors (i386_linux_set_dr_for_thread, &dr, "", RETURN_MASK_ALL);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Iterator function to support syncing debug registers across all threads. */
|