/* Debug register code for x86 (i386 and x86-64).
- Copyright (C) 2009-2015 Free Software Foundation, Inc.
+ Copyright (C) 2009-2019 Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+#ifndef NAT_X86_DREGS_H
+#define NAT_X86_DREGS_H
+
/* Support for hardware watchpoints and breakpoints using the x86
debug registers.
counts, and allow to watch regions up to 16 bytes long
(32 bytes on 64 bit hosts). */
-#ifndef X86_DREGS_H
-#define X86_DREGS_H 1
-/* Forward declaration. */
-enum target_hw_bp_type;
+#include "gdbsupport/break-common.h" /* target_hw_bp_type */
/* Low-level function vector. */
#define ALL_DEBUG_ADDRESS_REGISTERS(i) \
for (i = DR_FIRSTADDR; i <= DR_LASTADDR; i++)
+/* Return a pointer to the local mirror of the debug registers of
+ process PID. This function must be provided by the client
+ if required. */
+extern struct x86_debug_reg_state *x86_debug_reg_state (pid_t pid);
+
/* 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. Return 0 on success, -1 on failure. */
Otherwise return false. */
extern int x86_dr_stopped_by_watchpoint (struct x86_debug_reg_state *state);
-#endif /* X86_DREGS_H */
+/* Return true if the inferior has some hardware breakpoint that
+ triggered. Otherwise return false. */
+extern int x86_dr_stopped_by_hw_breakpoint (struct x86_debug_reg_state *state);
+
+#endif /* NAT_X86_DREGS_H */