Comment changes

This commit fixes various comment differences between
i386-nat.[ch] and i386-low.[ch].

gdb/
2014-06-18  Gary Benson  <gbenson@redhat.com>

	* i386-nat.c: Comment changes.

gdb/gdbserver/
2014-06-18  Gary Benson  <gbenson@redhat.com>

	* i386-low.h: Comment changes.
	* i386-low.c: Likewise.
This commit is contained in:
Gary Benson 2014-06-17 11:32:26 +01:00
parent 51c79e94b2
commit 6e62758f02
5 changed files with 56 additions and 34 deletions

View File

@ -1,3 +1,7 @@
2014-06-18 Gary Benson <gbenson@redhat.com>
* i386-nat.c: Comment changes.
2014-06-18 Gary Benson <gbenson@redhat.com>
* i386-nat.c (I386_DR_WATCH_MASK): Remove macro.

View File

@ -1,3 +1,8 @@
2014-06-18 Gary Benson <gbenson@redhat.com>
* i386-low.h: Comment changes.
* i386-low.c: Likewise.
2014-06-18 Gary Benson <gbenson@redhat.com>
* i386-low.c: Whitespace changes.

View File

@ -21,6 +21,17 @@
#include "target.h"
#include "i386-low.h"
/* Support for hardware watchpoints and breakpoints using the i386
debug registers.
This provides several functions for inserting and removing
hardware-assisted breakpoints and watchpoints, testing if one or
more of the watchpoints triggered and at what address, checking
whether a given region can be watched, etc.
The functions below implement debug registers sharing by reference
counts, and allow to watch regions up to 16 bytes long. */
/* Support for 8-byte wide hw watchpoints. */
#ifndef TARGET_HAS_DR_LEN_8
/* NOTE: sizeof (long) == 4 on win64. */
@ -156,8 +167,7 @@ i386_low_init_dregs (struct i386_debug_reg_state *state)
state->dr_status_mirror = 0;
}
/* Print the values of the mirrored debug registers. This is enabled via
the "set debug-hw-points 1" monitor command. */
/* Print the values of the mirrored debug registers. */
static void
i386_show_dr (struct i386_debug_reg_state *state,
@ -427,7 +437,7 @@ i386_update_inferior_debug_regs (struct i386_debug_reg_state *inf_state,
/* Insert a watchpoint to watch a memory region which starts at
address ADDR and whose length is LEN bytes. Watch memory accesses
of the type TYPE_FROM_PACKET. Return 0 on success, -1 on failure. */
of the type TYPE. Return 0 on success, -1 on failure. */
int
i386_low_insert_watchpoint (struct i386_debug_reg_state *state,
@ -523,8 +533,8 @@ i386_low_region_ok_for_watchpoint (struct i386_debug_reg_state *state,
}
/* If the inferior has some break/watchpoint that triggered, set the
address associated with that break/watchpoint and return true.
Otherwise, return false. */
address associated with that break/watchpoint and return non-zero.
Otherwise, return zero. */
int
i386_low_stopped_data_address (struct i386_debug_reg_state *state,
@ -603,8 +613,8 @@ i386_low_stopped_data_address (struct i386_debug_reg_state *state,
return rc;
}
/* Return true if the inferior has some watchpoint that triggered.
Otherwise return false. */
/* Return non-zero if the inferior has some watchpoint that triggered.
Otherwise return zero. */
int
i386_low_stopped_by_watchpoint (struct i386_debug_reg_state *state)

View File

@ -32,9 +32,9 @@
/* Debug registers' indices. */
#define DR_FIRSTADDR 0
#define DR_LASTADDR 3
#define DR_NADDR 4 /* The number of debug address registers. */
#define DR_STATUS 6
#define DR_CONTROL 7
#define DR_NADDR 4 /* The number of debug address registers. */
#define DR_STATUS 6 /* Index of debug status register (DR6). */
#define DR_CONTROL 7 /* Index of debug control register (DR7). */
/* Global state needed to track h/w watchpoints. */

View File

@ -37,6 +37,7 @@
The functions below implement debug registers sharing by reference
counts, and allow to watch regions up to 16 bytes long. */
/* Low-level function vector. */
struct i386_dr_low_type i386_dr_low;
/* Support for 8-byte wide hw watchpoints. */
@ -265,9 +266,7 @@ i386_cleanup_dregs (void)
i386_forget_process (ptid_get_pid (inferior_ptid));
}
/* Print the values of the mirrored debug registers. This is called
when maint_show_dr is non-zero. To set that up, type "maint
show-debug-regs" at GDB's prompt. */
/* Print the values of the mirrored debug registers. */
static void
i386_show_dr (struct i386_debug_reg_state *state,
@ -439,7 +438,7 @@ i386_remove_aligned_watchpoint (struct i386_debug_reg_state *state,
&& state->dr_mirror[i] == addr
&& I386_DR_GET_RW_LEN (state->dr_control_mirror, i) == len_rw_bits)
{
if (--state->dr_ref_count[i] == 0) /* no longer in use? */
if (--state->dr_ref_count[i] == 0) /* No longer in use? */
{
/* Reset our mirror. */
state->dr_mirror[i] = 0;
@ -646,8 +645,8 @@ i386_region_ok_for_watchpoint (struct target_ops *self,
return nregs <= DR_NADDR ? 1 : 0;
}
/* If the inferior has some watchpoint that triggered, set the
address associated with that watchpoint and return non-zero.
/* If the inferior has some break/watchpoint that triggered, set the
address associated with that break/watchpoint and return non-zero.
Otherwise, return zero. */
static int
@ -668,24 +667,25 @@ i386_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
unsigned control = 0;
/* In non-stop/async, threads can be running while we change the
STATE (and friends). Say, we set a watchpoint, and let threads
resume. Now, say you delete the watchpoint, or add/remove
watchpoints such that STATE changes while threads are running.
On targets that support non-stop, inserting/deleting watchpoints
updates the STATE only. It does not update the real thread's
debug registers; that's only done prior to resume. Instead, if
threads are running when the mirror changes, a temporary and
transparent stop on all threads is forced so they can get their
copy of the debug registers updated on re-resume. Now, say,
a thread hit a watchpoint before having been updated with the new
STATE contents, and we haven't yet handled the corresponding
SIGTRAP. If we trusted STATE below, we'd mistake the real
trapped address (from the last time we had updated debug
registers in the thread) with whatever was currently in STATE.
So to fix this, STATE always represents intention, what we _want_
threads to have in debug registers. To get at the address and
cause of the trap, we need to read the state the thread still has
in its debug registers.
global dr_mirror (and friends). Say, we set a watchpoint, and
let threads resume. Now, say you delete the watchpoint, or
add/remove watchpoints such that dr_mirror changes while threads
are running. On targets that support non-stop,
inserting/deleting watchpoints updates the global dr_mirror only.
It does not update the real thread's debug registers; that's only
done prior to resume. Instead, if threads are running when the
mirror changes, a temporary and transparent stop on all threads
is forced so they can get their copy of the debug registers
updated on re-resume. Now, say, a thread hit a watchpoint before
having been updated with the new dr_mirror contents, and we
haven't yet handled the corresponding SIGTRAP. If we trusted
dr_mirror below, we'd mistake the real trapped address (from the
last time we had updated debug registers in the thread) with
whatever was currently in dr_mirror. So to fix this, dr_mirror
always represents intention, what we _want_ threads to have in
debug registers. To get at the address and cause of the trap, we
need to read the state the thread still has in its debug
registers.
In sum, always get the current debug register values the current
thread has, instead of trusting the global mirror. If the thread
@ -727,6 +727,9 @@ i386_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
return rc;
}
/* Return non-zero if the inferior has some watchpoint that triggered.
Otherwise return zero. */
static int
i386_stopped_by_watchpoint (struct target_ops *ops)
{