| Index: gdb/go32-nat.c
|
| diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
|
| index 4a78f331948abe4f698008b78f89e6f0b9b21ee0..b8fe284026169fa810a51cc2235f7d2bdeb3d2a7 100644
|
| --- a/gdb/go32-nat.c
|
| +++ b/gdb/go32-nat.c
|
| @@ -238,7 +238,7 @@ static void go32_attach (struct target_ops *ops, char *args, int from_tty);
|
| static void go32_detach (struct target_ops *ops, char *args, int from_tty);
|
| static void go32_resume (struct target_ops *ops,
|
| ptid_t ptid, int step,
|
| - enum target_signal siggnal);
|
| + enum gdb_signal siggnal);
|
| static void go32_fetch_registers (struct target_ops *ops,
|
| struct regcache *, int regno);
|
| static void store_register (const struct regcache *, int regno);
|
| @@ -309,57 +309,57 @@ regno_mapping[] =
|
| static struct
|
| {
|
| int go32_sig;
|
| - enum target_signal gdb_sig;
|
| + enum gdb_signal gdb_sig;
|
| }
|
| sig_map[] =
|
| {
|
| - {0, TARGET_SIGNAL_FPE},
|
| - {1, TARGET_SIGNAL_TRAP},
|
| + {0, GDB_SIGNAL_FPE},
|
| + {1, GDB_SIGNAL_TRAP},
|
| /* Exception 2 is triggered by the NMI. DJGPP handles it as SIGILL,
|
| but I think SIGBUS is better, since the NMI is usually activated
|
| as a result of a memory parity check failure. */
|
| - {2, TARGET_SIGNAL_BUS},
|
| - {3, TARGET_SIGNAL_TRAP},
|
| - {4, TARGET_SIGNAL_FPE},
|
| - {5, TARGET_SIGNAL_SEGV},
|
| - {6, TARGET_SIGNAL_ILL},
|
| - {7, TARGET_SIGNAL_EMT}, /* no-coprocessor exception */
|
| - {8, TARGET_SIGNAL_SEGV},
|
| - {9, TARGET_SIGNAL_SEGV},
|
| - {10, TARGET_SIGNAL_BUS},
|
| - {11, TARGET_SIGNAL_SEGV},
|
| - {12, TARGET_SIGNAL_SEGV},
|
| - {13, TARGET_SIGNAL_SEGV},
|
| - {14, TARGET_SIGNAL_SEGV},
|
| - {16, TARGET_SIGNAL_FPE},
|
| - {17, TARGET_SIGNAL_BUS},
|
| - {31, TARGET_SIGNAL_ILL},
|
| - {0x1b, TARGET_SIGNAL_INT},
|
| - {0x75, TARGET_SIGNAL_FPE},
|
| - {0x78, TARGET_SIGNAL_ALRM},
|
| - {0x79, TARGET_SIGNAL_INT},
|
| - {0x7a, TARGET_SIGNAL_QUIT},
|
| - {-1, TARGET_SIGNAL_LAST}
|
| + {2, GDB_SIGNAL_BUS},
|
| + {3, GDB_SIGNAL_TRAP},
|
| + {4, GDB_SIGNAL_FPE},
|
| + {5, GDB_SIGNAL_SEGV},
|
| + {6, GDB_SIGNAL_ILL},
|
| + {7, GDB_SIGNAL_EMT}, /* no-coprocessor exception */
|
| + {8, GDB_SIGNAL_SEGV},
|
| + {9, GDB_SIGNAL_SEGV},
|
| + {10, GDB_SIGNAL_BUS},
|
| + {11, GDB_SIGNAL_SEGV},
|
| + {12, GDB_SIGNAL_SEGV},
|
| + {13, GDB_SIGNAL_SEGV},
|
| + {14, GDB_SIGNAL_SEGV},
|
| + {16, GDB_SIGNAL_FPE},
|
| + {17, GDB_SIGNAL_BUS},
|
| + {31, GDB_SIGNAL_ILL},
|
| + {0x1b, GDB_SIGNAL_INT},
|
| + {0x75, GDB_SIGNAL_FPE},
|
| + {0x78, GDB_SIGNAL_ALRM},
|
| + {0x79, GDB_SIGNAL_INT},
|
| + {0x7a, GDB_SIGNAL_QUIT},
|
| + {-1, GDB_SIGNAL_LAST}
|
| };
|
|
|
| static struct {
|
| - enum target_signal gdb_sig;
|
| + enum gdb_signal gdb_sig;
|
| int djgpp_excepno;
|
| } excepn_map[] = {
|
| - {TARGET_SIGNAL_0, -1},
|
| - {TARGET_SIGNAL_ILL, 6}, /* Invalid Opcode */
|
| - {TARGET_SIGNAL_EMT, 7}, /* triggers SIGNOFP */
|
| - {TARGET_SIGNAL_SEGV, 13}, /* GPF */
|
| - {TARGET_SIGNAL_BUS, 17}, /* Alignment Check */
|
| + {GDB_SIGNAL_0, -1},
|
| + {GDB_SIGNAL_ILL, 6}, /* Invalid Opcode */
|
| + {GDB_SIGNAL_EMT, 7}, /* triggers SIGNOFP */
|
| + {GDB_SIGNAL_SEGV, 13}, /* GPF */
|
| + {GDB_SIGNAL_BUS, 17}, /* Alignment Check */
|
| /* The rest are fake exceptions, see dpmiexcp.c in djlsr*.zip for
|
| details. */
|
| - {TARGET_SIGNAL_TERM, 0x1b}, /* triggers Ctrl-Break type of SIGINT */
|
| - {TARGET_SIGNAL_FPE, 0x75},
|
| - {TARGET_SIGNAL_INT, 0x79},
|
| - {TARGET_SIGNAL_QUIT, 0x7a},
|
| - {TARGET_SIGNAL_ALRM, 0x78}, /* triggers SIGTIMR */
|
| - {TARGET_SIGNAL_PROF, 0x78},
|
| - {TARGET_SIGNAL_LAST, -1}
|
| + {GDB_SIGNAL_TERM, 0x1b}, /* triggers Ctrl-Break type of SIGINT */
|
| + {GDB_SIGNAL_FPE, 0x75},
|
| + {GDB_SIGNAL_INT, 0x79},
|
| + {GDB_SIGNAL_QUIT, 0x7a},
|
| + {GDB_SIGNAL_ALRM, 0x78}, /* triggers SIGTIMR */
|
| + {GDB_SIGNAL_PROF, 0x78},
|
| + {GDB_SIGNAL_LAST, -1}
|
| };
|
|
|
| static void
|
| @@ -391,16 +391,16 @@ static int resume_signal = -1;
|
|
|
| static void
|
| go32_resume (struct target_ops *ops,
|
| - ptid_t ptid, int step, enum target_signal siggnal)
|
| + ptid_t ptid, int step, enum gdb_signal siggnal)
|
| {
|
| int i;
|
|
|
| resume_is_step = step;
|
|
|
| - if (siggnal != TARGET_SIGNAL_0 && siggnal != TARGET_SIGNAL_TRAP)
|
| + if (siggnal != GDB_SIGNAL_0 && siggnal != GDB_SIGNAL_TRAP)
|
| {
|
| for (i = 0, resume_signal = -1;
|
| - excepn_map[i].gdb_sig != TARGET_SIGNAL_LAST; i++)
|
| + excepn_map[i].gdb_sig != GDB_SIGNAL_LAST; i++)
|
| if (excepn_map[i].gdb_sig == siggnal)
|
| {
|
| resume_signal = excepn_map[i].djgpp_excepno;
|
| @@ -408,7 +408,7 @@ go32_resume (struct target_ops *ops,
|
| }
|
| if (resume_signal == -1)
|
| printf_unfiltered ("Cannot deliver signal %s on this platform.\n",
|
| - target_signal_to_name (siggnal));
|
| + gdb_signal_to_name (siggnal));
|
| }
|
| }
|
|
|
| @@ -513,7 +513,7 @@ go32_wait (struct target_ops *ops,
|
| }
|
| else
|
| {
|
| - status->value.sig = TARGET_SIGNAL_UNKNOWN;
|
| + status->value.sig = GDB_SIGNAL_UNKNOWN;
|
| status->kind = TARGET_WAITKIND_STOPPED;
|
| for (i = 0; sig_map[i].go32_sig != -1; i++)
|
| {
|
| @@ -521,7 +521,7 @@ go32_wait (struct target_ops *ops,
|
| {
|
| #if __DJGPP_MINOR__ < 3
|
| if ((status->value.sig = sig_map[i].gdb_sig) !=
|
| - TARGET_SIGNAL_TRAP)
|
| + GDB_SIGNAL_TRAP)
|
| status->kind = TARGET_WAITKIND_SIGNALLED;
|
| #else
|
| status->value.sig = sig_map[i].gdb_sig;
|
| @@ -801,6 +801,29 @@ go32_get_dr6 (void)
|
| return STATUS;
|
| }
|
|
|
| +/* Get the value of the DR7 debug status register from the inferior.
|
| + Here we just return the value stored in D_REGS, as we've got it
|
| + from the last go32_wait call. */
|
| +
|
| +static unsigned long
|
| +go32_get_dr7 (void)
|
| +{
|
| + return CONTROL;
|
| +}
|
| +
|
| +/* Get the value of the DR debug register I from the inferior. Here
|
| + we just return the value stored in D_REGS, as we've got it from the
|
| + last go32_wait call. */
|
| +
|
| +static CORE_ADDR
|
| +go32_get_dr (int i)
|
| +{
|
| + if (i < 0 || i > 3)
|
| + internal_error (__FILE__, __LINE__,
|
| + _("Invalid register %d in go32_get_dr.\n"), i);
|
| + return D_REGS[i];
|
| +}
|
| +
|
| /* Put the device open on handle FD into either raw or cooked
|
| mode, return 1 if it was in raw mode, zero otherwise. */
|
|
|
| @@ -984,8 +1007,9 @@ init_go32_ops (void)
|
|
|
| i386_dr_low.set_control = go32_set_dr7;
|
| i386_dr_low.set_addr = go32_set_dr;
|
| - i386_dr_low.reset_addr = NULL;
|
| i386_dr_low.get_status = go32_get_dr6;
|
| + i386_dr_low.get_control = go32_get_dr7;
|
| + i386_dr_low.get_addr = go32_get_dr;
|
| i386_set_debug_register_length (4);
|
|
|
| go32_ops.to_magic = OPS_MAGIC;
|
|
|