Blob Blame History Raw
http://sourceware.org/ml/gdb-patches/2012-09/msg00629.html
Subject: [PATCH 3/4] Expand watchpoint lengths to LONGEST


--MP_/6HRlH6vpyqtSy4CYyMrX6b2
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

This is part three of the bitpos expansion change.  Some architectures
allow arbitrary length watchpoints and combined with the fact that type
lengths could be large enough, we need LONGEST for watchpoint lengths.
It is architecture dependent however, whether the LONGEST is needed or
not.  This patch updates the signatures of watchpoint insertion and
removal functions of all architectures (to comply with the function
signatures in the callback struct), but expands types only in
architectures that need it.  Tested on Fedora 16 x86_64.

Regards,
Siddhesh
--MP_/6HRlH6vpyqtSy4CYyMrX6b2
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=ChangeLog-wp

gdb/ChangeLog:

	* arm-linux-nat.c (arm_linux_insert_watchpoint): Expand
	parameter LEN to LONGEST.
	(arm_linux_remove_watchpoint): Likewise.
	(arm_linux_watchpoint_addr_within_range): Expand parameter
	LENGTH to LONGEST.
	* i386-nat.c (i386_insert_watchpoint): Expand parameter LEN to
	LONGEST.
	(i386_remove_watchpoint): Likewise.
	* ia64-linux-nat.c (ia64_linux_insert_watchpoint): Likewise.
	(ia64_linux_remove_watchpoint): Likewise.
	* inf-ttrace.c (inf_ttrace_insert_watchpoint): Likewise.
	Expand NUM_PAGES, PAGE to LONGEST.
	(inf_ttrace_remove_watchpoint): Likewise.
	* mips-linux-nat.c (mips_linux_insert_watchpoint): Expand
	parameter LEN to LONGEST.
	(mips_linux_remove_watchpoint): Likewise.
	* nto-procfs.c (procfs_remove_hw_watchpoint): Likewise.
	(procfs_insert_hw_watchpoint): Likewise.
	* ppc-linux-nat.c (calculate_dvc): Likewise.  Expand I,
	NUM_BYTE_ENABLE to LONGEST.
	(check_condition): Expand parameter LEN to point to LONGEST.
	(ppc_linux_can_accel_watchpoint_condition): Expand parameter
	LEN to LONGEST.
	(create_watchpoint_request): Likewise.
	(ppc_linux_insert_watchpoint): Likewise.
	(ppc_linux_remove_watchpoint): Likewise.
	(ppc_linux_watchpoint_addr_within_range): Expand parameter
	LENGTH to LONGEST.
	* procfs.c (proc_set_watchpoint): Expand parameter LEN to
	LONGEST.
	(procfs_set_watchpoint): Likewise.
	(procfs_insert_watchpoint): Likewise.
	(procfs_remove_watchpoint): Likewise.
	* remote-m32r-sdi.c (m32r_insert_watchpoint): Likewise.  Use
	plongest to format print LEN.
	(m32r_remove_watchpoint): Likewise.
	* remote-mips.c (mips_insert_watchpoint): Expand parameter LEN
	to LONGEST.
	(mips_remove_watchpoint): Likewise.
	* remote.c (remote_insert_watchpoint): Likewise.
	Use phex_nz to format print LEN.
	(remote_remove_watchpoint): Likewise.
	(remote_watchpoint_addr_within_range): Expand parameter LENGTH
	to LONGEST.
	* s390-nat.c (s390_insert_watchpoint): Expand parameter LEN to
	LONGEST.
	(s390_remove_watchpoint): Likewise.
	* target.c (update_current_target): Expand parameter LEN for
	callbacks to TO_INSERT_WATCHPOINT, TO_REMOVE_WATCHPOINT,
	TO_CAN_ACCEL_WATCHPOINT_CONDITION, to LONGEST.
	(default_watchpoint_addr_within_range): Expand parameter
	LENGTH to LONGEST.
	(debug_to_can_accel_watchpoint_condition): Expand parameter LEN
	to LONGEST.  Use plongest to format print LEN.
	(debug_to_watchpoint_addr_within_range): Expand parameter LENGTH
	to LONGEST.  Use plongest to format print LENGTH.
	(debug_to_insert_watchpoint): Expand parameter LEN to LONGEST.
	Use plongest to format print LEN.
	(debug_to_remove_watchpoint): Likewise.
	* target.h (struct target_ops): Expand parameter LEN of
	TO_REMOVE_WATCHPOINT, TO_INSERT_WATCHPOINT,
	TO_WATCHPOINT_ADDR_WITHIN_RANGE and
	TO_CAN_ACCEL_WATCHPOINT_CONDITION to LONGEST.

--MP_/6HRlH6vpyqtSy4CYyMrX6b2
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-wp.patch

Index: gdb-7.6.50.20130731-cvs/gdb/arm-linux-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/arm-linux-nat.c	2013-08-02 16:42:29.565632895 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/arm-linux-nat.c	2013-08-02 16:42:34.094639104 +0200
@@ -1105,7 +1105,7 @@ arm_linux_region_ok_for_hw_watchpoint (C
 
 /* Insert a Hardware breakpoint.  */
 static int
-arm_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+arm_linux_insert_watchpoint (CORE_ADDR addr, LONGEST len, int rw,
 			     struct expression *cond)
 {
   struct lwp_info *lp;
@@ -1123,7 +1123,7 @@ arm_linux_insert_watchpoint (CORE_ADDR a
 
 /* Remove a hardware breakpoint.  */
 static int
-arm_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
+arm_linux_remove_watchpoint (CORE_ADDR addr, LONGEST len, int rw,
 			     struct expression *cond)
 {
   struct lwp_info *lp;
@@ -1180,7 +1180,7 @@ arm_linux_stopped_by_watchpoint (void)
 static int
 arm_linux_watchpoint_addr_within_range (struct target_ops *target,
 					CORE_ADDR addr,
-					CORE_ADDR start, int length)
+					CORE_ADDR start, LONGEST length)
 {
   return start <= addr && start + length - 1 >= addr;
 }
Index: gdb-7.6.50.20130731-cvs/gdb/i386-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/i386-nat.c	2013-08-02 16:42:29.566632896 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/i386-nat.c	2013-08-02 16:42:34.095639105 +0200
@@ -589,7 +589,7 @@ i386_update_inferior_debug_regs (struct
    of the type TYPE.  Return 0 on success, -1 on failure.  */
 
 static int
-i386_insert_watchpoint (CORE_ADDR addr, int len, int type,
+i386_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   struct i386_debug_reg_state *state
@@ -627,7 +627,7 @@ i386_insert_watchpoint (CORE_ADDR addr,
    address ADDR, whose length is LEN bytes, and for accesses of the
    type TYPE.  Return 0 on success, -1 on failure.  */
 static int
-i386_remove_watchpoint (CORE_ADDR addr, int len, int type,
+i386_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   struct i386_debug_reg_state *state
Index: gdb-7.6.50.20130731-cvs/gdb/ia64-linux-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/ia64-linux-nat.c	2013-08-02 16:42:29.566632896 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/ia64-linux-nat.c	2013-08-02 16:42:34.095639105 +0200
@@ -542,7 +542,7 @@ is_power_of_2 (int val)
 }
 
 static int
-ia64_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+ia64_linux_insert_watchpoint (CORE_ADDR addr, LONGEST len, int rw,
 			      struct expression *cond)
 {
   struct lwp_info *lp;
@@ -596,7 +596,7 @@ ia64_linux_insert_watchpoint (CORE_ADDR
 }
 
 static int
-ia64_linux_remove_watchpoint (CORE_ADDR addr, int len, int type,
+ia64_linux_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			      struct expression *cond)
 {
   int idx;
Index: gdb-7.6.50.20130731-cvs/gdb/inf-ttrace.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/inf-ttrace.c	2013-08-02 16:42:29.567632898 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/inf-ttrace.c	2013-08-02 16:42:34.095639105 +0200
@@ -314,14 +314,14 @@ inf_ttrace_disable_page_protections (pid
    type TYPE.  */
 
 static int
-inf_ttrace_insert_watchpoint (CORE_ADDR addr, int len, int type,
+inf_ttrace_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			      struct expression *cond)
 {
   const int pagesize = inf_ttrace_page_dict.pagesize;
   pid_t pid = ptid_get_pid (inferior_ptid);
   CORE_ADDR page_addr;
-  int num_pages;
-  int page;
+  LONGEST num_pages;
+  LONGEST page;
 
   gdb_assert (type == hw_write);
 
@@ -338,14 +338,14 @@ inf_ttrace_insert_watchpoint (CORE_ADDR
    type TYPE.  */
 
 static int
-inf_ttrace_remove_watchpoint (CORE_ADDR addr, int len, int type,
+inf_ttrace_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			      struct expression *cond)
 {
   const int pagesize = inf_ttrace_page_dict.pagesize;
   pid_t pid = ptid_get_pid (inferior_ptid);
   CORE_ADDR page_addr;
-  int num_pages;
-  int page;
+  LONGEST num_pages;
+  LONGEST page;
 
   gdb_assert (type == hw_write);
 
Index: gdb-7.6.50.20130731-cvs/gdb/mips-linux-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/mips-linux-nat.c	2013-08-02 16:42:29.568632899 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/mips-linux-nat.c	2013-08-02 16:42:34.096639106 +0200
@@ -644,7 +644,7 @@ mips_linux_new_thread (struct lwp_info *
    watch.  Return zero on success.  */
 
 static int
-mips_linux_insert_watchpoint (CORE_ADDR addr, int len, int type,
+mips_linux_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			      struct expression *cond)
 {
   struct pt_watch_regs regs;
@@ -697,7 +697,7 @@ mips_linux_insert_watchpoint (CORE_ADDR
    Return zero on success.  */
 
 static int
-mips_linux_remove_watchpoint (CORE_ADDR addr, int len, int type,
+mips_linux_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			      struct expression *cond)
 {
   int retval;
Index: gdb-7.6.50.20130731-cvs/gdb/nto-procfs.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/nto-procfs.c	2013-08-02 16:42:29.568632899 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/nto-procfs.c	2013-08-02 16:42:34.096639106 +0200
@@ -69,10 +69,10 @@ static ptid_t do_attach (ptid_t ptid);
 
 static int procfs_can_use_hw_breakpoint (int, int, int);
 
-static int procfs_insert_hw_watchpoint (CORE_ADDR addr, int len, int type,
+static int procfs_insert_hw_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 					struct expression *cond);
 
-static int procfs_remove_hw_watchpoint (CORE_ADDR addr, int len, int type,
+static int procfs_remove_hw_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 					struct expression *cond);
 
 static int procfs_stopped_by_watchpoint (void);
@@ -1493,14 +1493,14 @@ procfs_can_use_hw_breakpoint (int type,
 }
 
 static int
-procfs_remove_hw_watchpoint (CORE_ADDR addr, int len, int type,
+procfs_remove_hw_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			     struct expression *cond)
 {
   return procfs_hw_watchpoint (addr, -1, type);
 }
 
 static int
-procfs_insert_hw_watchpoint (CORE_ADDR addr, int len, int type,
+procfs_insert_hw_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			     struct expression *cond)
 {
   return procfs_hw_watchpoint (addr, len, type);
Index: gdb-7.6.50.20130731-cvs/gdb/ppc-linux-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/ppc-linux-nat.c	2013-08-02 16:42:29.570632902 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/ppc-linux-nat.c	2013-08-02 16:42:34.097639108 +0200
@@ -1853,11 +1853,11 @@ can_use_watchpoint_cond_accel (void)
    CONDITION_VALUE will hold the value which should be put in the
    DVC register.  */
 static void
-calculate_dvc (CORE_ADDR addr, int len, CORE_ADDR data_value,
+calculate_dvc (CORE_ADDR addr, LONGEST len, CORE_ADDR data_value,
 	       uint32_t *condition_mode, uint64_t *condition_value)
 {
-  int i, num_byte_enable, align_offset, num_bytes_off_dvc,
-      rightmost_enabled_byte;
+  LONGEST i, num_byte_enable;
+  int align_offset, num_bytes_off_dvc, rightmost_enabled_byte;
   CORE_ADDR addr_end_data, addr_end_dvc;
 
   /* The DVC register compares bytes within fixed-length windows which
@@ -1944,7 +1944,7 @@ num_memory_accesses (struct value *v)
    of the constant.  */
 static int
 check_condition (CORE_ADDR watch_addr, struct expression *cond,
-		 CORE_ADDR *data_value, int *len)
+		 CORE_ADDR *data_value, LONGEST *len)
 {
   int pc = 1, num_accesses_left, num_accesses_right;
   struct value *left_val, *right_val, *left_chain, *right_chain;
@@ -2011,7 +2011,7 @@ check_condition (CORE_ADDR watch_addr, s
    the condition expression, thus only triggering the watchpoint when it is
    true.  */
 static int
-ppc_linux_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
+ppc_linux_can_accel_watchpoint_condition (CORE_ADDR addr, LONGEST len, int rw,
 					  struct expression *cond)
 {
   CORE_ADDR data_value;
@@ -2028,7 +2028,7 @@ ppc_linux_can_accel_watchpoint_condition
 
 static void
 create_watchpoint_request (struct ppc_hw_breakpoint *p, CORE_ADDR addr,
-			   int len, int rw, struct expression *cond,
+			   LONGEST len, int rw, struct expression *cond,
 			   int insert)
 {
   if (len == 1
@@ -2073,7 +2073,7 @@ create_watchpoint_request (struct ppc_hw
 }
 
 static int
-ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+ppc_linux_insert_watchpoint (CORE_ADDR addr, LONGEST len, int rw,
 			     struct expression *cond)
 {
   struct lwp_info *lp;
@@ -2141,7 +2141,7 @@ ppc_linux_insert_watchpoint (CORE_ADDR a
 }
 
 static int
-ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
+ppc_linux_remove_watchpoint (CORE_ADDR addr, LONGEST len, int rw,
 			     struct expression *cond)
 {
   struct lwp_info *lp;
@@ -2292,7 +2292,7 @@ ppc_linux_stopped_by_watchpoint (void)
 static int
 ppc_linux_watchpoint_addr_within_range (struct target_ops *target,
 					CORE_ADDR addr,
-					CORE_ADDR start, int length)
+					CORE_ADDR start, LONGEST length)
 {
   int mask;
 
Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/procfs.c	2013-08-02 16:42:29.572632904 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/procfs.c	2013-08-02 16:42:34.098639109 +0200
@@ -2433,7 +2433,7 @@ procfs_address_to_host_pointer (CORE_ADD
 #endif
 
 static int
-proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags)
+proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, LONGEST len, int wflags)
 {
 #if !defined (PCWATCH) && !defined (PIOCSWATCH)
   /* If neither or these is defined, we can't support watchpoints.
@@ -4777,7 +4777,7 @@ procfs_pid_to_str (struct target_ops *op
 /* Insert a watchpoint.  */
 
 static int
-procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rwflag,
+procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, LONGEST len, int rwflag,
 		       int after)
 {
 #ifndef AIX5
@@ -4897,7 +4897,7 @@ procfs_stopped_data_address (struct targ
 }
 
 static int
-procfs_insert_watchpoint (CORE_ADDR addr, int len, int type,
+procfs_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			  struct expression *cond)
 {
   if (!target_have_steppable_watchpoint
@@ -4919,7 +4919,7 @@ procfs_insert_watchpoint (CORE_ADDR addr
 }
 
 static int
-procfs_remove_watchpoint (CORE_ADDR addr, int len, int type,
+procfs_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			  struct expression *cond)
 {
   return procfs_set_watchpoint (inferior_ptid, addr, 0, 0, 0);
Index: gdb-7.6.50.20130731-cvs/gdb/remote-m32r-sdi.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/remote-m32r-sdi.c	2013-08-02 16:42:29.573632906 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/remote-m32r-sdi.c	2013-08-02 16:42:34.099639111 +0200
@@ -1416,14 +1416,15 @@ m32r_can_use_hw_watchpoint (int type, in
    watchpoint.  */
 
 static int
-m32r_insert_watchpoint (CORE_ADDR addr, int len, int type,
+m32r_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   int i;
 
   if (remote_debug)
-    fprintf_unfiltered (gdb_stdlog, "m32r_insert_watchpoint(%s,%d,%d)\n",
-			paddress (target_gdbarch (), addr), len, type);
+    fprintf_unfiltered (gdb_stdlog, "m32r_insert_watchpoint(%s,%s,%d)\n",
+			paddress (target_gdbarch (), addr), plongest (len),
+			type);
 
   for (i = 0; i < MAX_ACCESS_BREAKS; i++)
     {
@@ -1441,14 +1442,15 @@ m32r_insert_watchpoint (CORE_ADDR addr,
 }
 
 static int
-m32r_remove_watchpoint (CORE_ADDR addr, int len, int type,
+m32r_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   int i;
 
   if (remote_debug)
-    fprintf_unfiltered (gdb_stdlog, "m32r_remove_watchpoint(%s,%d,%d)\n",
-			paddress (target_gdbarch (), addr), len, type);
+    fprintf_unfiltered (gdb_stdlog, "m32r_remove_watchpoint(%s,%s,%d)\n",
+			paddress (target_gdbarch (), addr), plongest (len),
+			type);
 
   for (i = 0; i < MAX_ACCESS_BREAKS; i++)
     {
Index: gdb-7.6.50.20130731-cvs/gdb/remote-mips.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/remote-mips.c	2013-08-02 16:42:29.574632907 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/remote-mips.c	2013-08-02 16:42:34.100639112 +0200
@@ -2426,7 +2426,7 @@ calculate_mask (CORE_ADDR addr, int len)
    watchpoint.  */
 
 static int
-mips_insert_watchpoint (CORE_ADDR addr, int len, int type,
+mips_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   if (mips_set_breakpoint (addr, len, type))
@@ -2438,7 +2438,7 @@ mips_insert_watchpoint (CORE_ADDR addr,
 /* Remove a watchpoint.  */
 
 static int
-mips_remove_watchpoint (CORE_ADDR addr, int len, int type,
+mips_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   if (mips_clear_breakpoint (addr, len, type))
Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/remote.c	2013-08-02 16:42:29.577632911 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/remote.c	2013-08-02 16:42:34.103639116 +0200
@@ -8277,7 +8277,7 @@ watchpoint_to_Z_packet (int type)
 }
 
 static int
-remote_insert_watchpoint (CORE_ADDR addr, int len, int type,
+remote_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			  struct expression *cond)
 {
   struct remote_state *rs = get_remote_state ();
@@ -8297,7 +8297,7 @@ remote_insert_watchpoint (CORE_ADDR addr
   p = strchr (rs->buf, '\0');
   addr = remote_address_masked (addr);
   p += hexnumstr (p, (ULONGEST) addr);
-  xsnprintf (p, endbuf - p, ",%x", len);
+  xsnprintf (p, endbuf - p, ",%s", phex_nz (len, sizeof (len)));
 
   putpkt (rs->buf);
   getpkt (&rs->buf, &rs->buf_size, 0);
@@ -8317,7 +8317,7 @@ remote_insert_watchpoint (CORE_ADDR addr
 
 static int
 remote_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr,
-				     CORE_ADDR start, int length)
+				     CORE_ADDR start, LONGEST length)
 {
   CORE_ADDR diff = remote_address_masked (addr - start);
 
@@ -8326,7 +8326,7 @@ remote_watchpoint_addr_within_range (str
 
 
 static int
-remote_remove_watchpoint (CORE_ADDR addr, int len, int type,
+remote_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			  struct expression *cond)
 {
   struct remote_state *rs = get_remote_state ();
@@ -8346,7 +8346,7 @@ remote_remove_watchpoint (CORE_ADDR addr
   p = strchr (rs->buf, '\0');
   addr = remote_address_masked (addr);
   p += hexnumstr (p, (ULONGEST) addr);
-  xsnprintf (p, endbuf - p, ",%x", len);
+  xsnprintf (p, endbuf - p, ",%s", phex_nz (len, sizeof (len)));
   putpkt (rs->buf);
   getpkt (&rs->buf, &rs->buf_size, 0);
 
Index: gdb-7.6.50.20130731-cvs/gdb/s390-nat.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/s390-nat.c	2013-08-02 16:42:29.578632913 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/s390-nat.c	2013-08-02 16:42:34.103639116 +0200
@@ -516,7 +516,7 @@ s390_fix_watch_points (struct lwp_info *
 }
 
 static int
-s390_insert_watchpoint (CORE_ADDR addr, int len, int type,
+s390_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   struct lwp_info *lp;
@@ -537,7 +537,7 @@ s390_insert_watchpoint (CORE_ADDR addr,
 }
 
 static int
-s390_remove_watchpoint (CORE_ADDR addr, int len, int type,
+s390_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			struct expression *cond)
 {
   struct lwp_info *lp;
Index: gdb-7.6.50.20130731-cvs/gdb/target.c
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/target.c	2013-08-02 16:42:29.580632915 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/target.c	2013-08-02 16:42:52.160663787 +0200
@@ -49,7 +49,7 @@ static void target_info (char *, int);
 static void default_terminal_info (const char *, int);
 
 static int default_watchpoint_addr_within_range (struct target_ops *,
-						 CORE_ADDR, CORE_ADDR, int);
+						 CORE_ADDR, CORE_ADDR, LONGEST);
 
 static int default_region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST);
 
@@ -114,10 +114,10 @@ static int debug_to_insert_hw_breakpoint
 static int debug_to_remove_hw_breakpoint (struct gdbarch *,
 					  struct bp_target_info *);
 
-static int debug_to_insert_watchpoint (CORE_ADDR, int, int,
+static int debug_to_insert_watchpoint (CORE_ADDR, LONGEST, int,
 				       struct expression *);
 
-static int debug_to_remove_watchpoint (CORE_ADDR, int, int,
+static int debug_to_remove_watchpoint (CORE_ADDR, LONGEST, int,
 				       struct expression *);
 
 static int debug_to_stopped_by_watchpoint (void);
@@ -125,11 +125,12 @@ static int debug_to_stopped_by_watchpoin
 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
 
 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
-						  CORE_ADDR, CORE_ADDR, int);
+						  CORE_ADDR, CORE_ADDR,
+						  LONGEST);
 
 static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST);
 
-static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, int, int,
+static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, LONGEST, int,
 						    struct expression *);
 
 static void debug_to_terminal_init (void);
@@ -790,10 +791,10 @@ update_current_target (void)
 	    (int (*) (struct gdbarch *, struct bp_target_info *))
 	    return_minus_one);
   de_fault (to_insert_watchpoint,
-	    (int (*) (CORE_ADDR, int, int, struct expression *))
+	    (int (*) (CORE_ADDR, LONGEST, int, struct expression *))
 	    return_minus_one);
   de_fault (to_remove_watchpoint,
-	    (int (*) (CORE_ADDR, int, int, struct expression *))
+	    (int (*) (CORE_ADDR, LONGEST, int, struct expression *))
 	    return_minus_one);
   de_fault (to_stopped_by_watchpoint,
 	    (int (*) (void))
@@ -806,7 +807,7 @@ update_current_target (void)
   de_fault (to_region_ok_for_hw_watchpoint,
 	    default_region_ok_for_hw_watchpoint);
   de_fault (to_can_accel_watchpoint_condition,
-            (int (*) (CORE_ADDR, int, int, struct expression *))
+            (int (*) (CORE_ADDR, LONGEST, int, struct expression *))
             return_zero);
   de_fault (to_terminal_init,
 	    (void (*) (void))
@@ -3594,7 +3595,7 @@ default_region_ok_for_hw_watchpoint (COR
 static int
 default_watchpoint_addr_within_range (struct target_ops *target,
 				      CORE_ADDR addr,
-				      CORE_ADDR start, int length)
+				      CORE_ADDR start, LONGEST length)
 {
   return addr >= start && addr < start + length;
 }
@@ -4555,7 +4556,7 @@ debug_to_region_ok_for_hw_watchpoint (CO
 }
 
 static int
-debug_to_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
+debug_to_can_accel_watchpoint_condition (CORE_ADDR addr, LONGEST len, int rw,
 					 struct expression *cond)
 {
   int retval;
@@ -4565,8 +4566,8 @@ debug_to_can_accel_watchpoint_condition
 
   fprintf_unfiltered (gdb_stdlog,
 		      "target_can_accel_watchpoint_condition "
-		      "(%s, %d, %d, %s) = %ld\n",
-		      core_addr_to_string (addr), len, rw,
+		      "(%s, %s, %d, %s) = %ld\n",
+		      core_addr_to_string (addr), plongest (len), rw,
 		      host_address_to_string (cond), (unsigned long) retval);
   return retval;
 }
@@ -4601,7 +4602,7 @@ debug_to_stopped_data_address (struct ta
 static int
 debug_to_watchpoint_addr_within_range (struct target_ops *target,
 				       CORE_ADDR addr,
-				       CORE_ADDR start, int length)
+				       CORE_ADDR start, LONGEST length)
 {
   int retval;
 
@@ -4609,9 +4610,9 @@ debug_to_watchpoint_addr_within_range (s
 							 start, length);
 
   fprintf_filtered (gdb_stdlog,
-		    "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
+		    "target_watchpoint_addr_within_range (%s, %s, %s) = %d\n",
 		    core_addr_to_string (addr), core_addr_to_string (start),
-		    length, retval);
+		    plongest (length), retval);
   return retval;
 }
 
@@ -4646,7 +4647,7 @@ debug_to_remove_hw_breakpoint (struct gd
 }
 
 static int
-debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type,
+debug_to_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			    struct expression *cond)
 {
   int retval;
@@ -4654,14 +4655,14 @@ debug_to_insert_watchpoint (CORE_ADDR ad
   retval = debug_target.to_insert_watchpoint (addr, len, type, cond);
 
   fprintf_unfiltered (gdb_stdlog,
-		      "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
-		      core_addr_to_string (addr), len, type,
+		      "target_insert_watchpoint (%s, %s, %d, %s) = %ld\n",
+		      core_addr_to_string (addr), plongest (len), type,
 		      host_address_to_string (cond), (unsigned long) retval);
   return retval;
 }
 
 static int
-debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type,
+debug_to_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
 			    struct expression *cond)
 {
   int retval;
@@ -4669,8 +4670,8 @@ debug_to_remove_watchpoint (CORE_ADDR ad
   retval = debug_target.to_remove_watchpoint (addr, len, type, cond);
 
   fprintf_unfiltered (gdb_stdlog,
-		      "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
-		      core_addr_to_string (addr), len, type,
+		      "target_remove_watchpoint (%s, %s, %d, %s) = %ld\n",
+		      core_addr_to_string (addr), plongest (len), type,
 		      host_address_to_string (cond), (unsigned long) retval);
   return retval;
 }
Index: gdb-7.6.50.20130731-cvs/gdb/target.h
===================================================================
--- gdb-7.6.50.20130731-cvs.orig/gdb/target.h	2013-08-02 16:42:29.580632915 +0200
+++ gdb-7.6.50.20130731-cvs/gdb/target.h	2013-08-02 16:42:34.105639119 +0200
@@ -373,8 +373,8 @@ struct target_ops
 
     /* Documentation of what the two routines below are expected to do is
        provided with the corresponding target_* macros.  */
-    int (*to_remove_watchpoint) (CORE_ADDR, int, int, struct expression *);
-    int (*to_insert_watchpoint) (CORE_ADDR, int, int, struct expression *);
+    int (*to_remove_watchpoint) (CORE_ADDR, LONGEST, int, struct expression *);
+    int (*to_insert_watchpoint) (CORE_ADDR, LONGEST, int, struct expression *);
 
     int (*to_insert_mask_watchpoint) (struct target_ops *,
 				      CORE_ADDR, CORE_ADDR, int);
@@ -385,13 +385,13 @@ struct target_ops
     int to_have_continuable_watchpoint;
     int (*to_stopped_data_address) (struct target_ops *, CORE_ADDR *);
     int (*to_watchpoint_addr_within_range) (struct target_ops *,
-					    CORE_ADDR, CORE_ADDR, int);
+					    CORE_ADDR, CORE_ADDR, LONGEST);
 
     /* Documentation of this routine is provided with the corresponding
        target_* macro.  */
     int (*to_region_ok_for_hw_watchpoint) (CORE_ADDR, LONGEST);
 
-    int (*to_can_accel_watchpoint_condition) (CORE_ADDR, int, int,
+    int (*to_can_accel_watchpoint_condition) (CORE_ADDR, LONGEST, int,
 					      struct expression *);
     int (*to_masked_watch_num_registers) (struct target_ops *,
 					  CORE_ADDR, CORE_ADDR);