diff options
author | Gary Benson <gbenson@redhat.com> | 2014-06-17 11:32:26 +0100 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2014-06-18 10:15:08 +0100 |
commit | 6e62758f0249b3b8e4f2f82af6074eed44246cb5 (patch) | |
tree | 46844dad47c39f139e14005b199cbecd480232fd /gdb | |
parent | 51c79e94b2a4572cd983e47089f6b7beea7c5ea9 (diff) | |
download | gdb-6e62758f0249b3b8e4f2f82af6074eed44246cb5.zip gdb-6e62758f0249b3b8e4f2f82af6074eed44246cb5.tar.gz gdb-6e62758f0249b3b8e4f2f82af6074eed44246cb5.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/i386-low.c | 24 | ||||
-rw-r--r-- | gdb/gdbserver/i386-low.h | 6 | ||||
-rw-r--r-- | gdb/i386-nat.c | 51 |
5 files changed, 56 insertions, 34 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 03a19e9..1028f85 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 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. 2014-06-18 Gary Benson <gbenson@redhat.com> diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index b3bf319..78cf89b 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,10 @@ 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. 2014-06-12 Tom Tromey <tromey@redhat.com> diff --git a/gdb/gdbserver/i386-low.c b/gdb/gdbserver/i386-low.c index 304d6f3..d122ff7 100644 --- a/gdb/gdbserver/i386-low.c +++ b/gdb/gdbserver/i386-low.c @@ -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) diff --git a/gdb/gdbserver/i386-low.h b/gdb/gdbserver/i386-low.h index 8d8e73f..681ade0 100644 --- a/gdb/gdbserver/i386-low.h +++ b/gdb/gdbserver/i386-low.h @@ -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. */ diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c index f9fb52f..a7742f2 100644 --- a/gdb/i386-nat.c +++ b/gdb/i386-nat.c @@ -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) { |