diff --git a/gdb-rhbz795424-bitpos-22of25.patch b/gdb-rhbz795424-bitpos-22of25.patch
index 5082b9f..8863b42 100644
--- a/gdb-rhbz795424-bitpos-22of25.patch
+++ b/gdb-rhbz795424-bitpos-22of25.patch
@@ -96,10 +96,10 @@ 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
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/arm-linux-nat.c	2014-05-30 23:24:14.728103476 +0200
++++ gdb-7.7.1/gdb/arm-linux-nat.c	2014-05-30 23:24:14.783103499 +0200
 @@ -1105,7 +1105,7 @@ arm_linux_region_ok_for_hw_watchpoint (C
  
  /* Insert a Hardware breakpoint.  */
@@ -127,10 +127,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/arm-linux-nat.c
  {
    return start <= addr && start + length - 1 >= addr;
  }
-Index: gdb-7.6.50.20130731-cvs/gdb/i386-nat.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/i386-nat.c	2014-05-30 23:24:14.742103482 +0200
++++ gdb-7.7.1/gdb/i386-nat.c	2014-05-30 23:24:14.783103499 +0200
 @@ -589,7 +589,7 @@ i386_update_inferior_debug_regs (struct
     of the type TYPE.  Return 0 on success, -1 on failure.  */
  
@@ -149,10 +149,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/i386-nat.c
  			struct expression *cond)
  {
    struct i386_debug_reg_state *state
-Index: gdb-7.6.50.20130731-cvs/gdb/ia64-linux-nat.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/ia64-linux-nat.c	2014-05-05 23:51:24.000000000 +0200
++++ gdb-7.7.1/gdb/ia64-linux-nat.c	2014-05-30 23:24:14.784103500 +0200
 @@ -542,7 +542,7 @@ is_power_of_2 (int val)
  }
  
@@ -171,10 +171,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/ia64-linux-nat.c
  			      struct expression *cond)
  {
    int idx;
-Index: gdb-7.6.50.20130731-cvs/gdb/inf-ttrace.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/inf-ttrace.c	2014-05-30 23:24:14.742103482 +0200
++++ gdb-7.7.1/gdb/inf-ttrace.c	2014-05-30 23:24:14.784103500 +0200
 @@ -314,14 +314,14 @@ inf_ttrace_disable_page_protections (pid
     type TYPE.  */
  
@@ -211,10 +211,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/inf-ttrace.c
  
    gdb_assert (type == hw_write);
  
-Index: gdb-7.6.50.20130731-cvs/gdb/mips-linux-nat.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/mips-linux-nat.c	2014-05-30 23:24:14.744103483 +0200
++++ gdb-7.7.1/gdb/mips-linux-nat.c	2014-05-30 23:24:14.784103500 +0200
 @@ -644,7 +644,7 @@ mips_linux_new_thread (struct lwp_info *
     watch.  Return zero on success.  */
  
@@ -233,10 +233,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/mips-linux-nat.c
  			      struct expression *cond)
  {
    int retval;
-Index: gdb-7.6.50.20130731-cvs/gdb/nto-procfs.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/nto-procfs.c	2014-05-05 23:51:24.000000000 +0200
++++ gdb-7.7.1/gdb/nto-procfs.c	2014-05-30 23:24:14.785103500 +0200
 @@ -69,10 +69,10 @@ static ptid_t do_attach (ptid_t ptid);
  
  static int procfs_can_use_hw_breakpoint (int, int, int);
@@ -250,7 +250,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/nto-procfs.c
  					struct expression *cond);
  
  static int procfs_stopped_by_watchpoint (void);
-@@ -1493,14 +1493,14 @@ procfs_can_use_hw_breakpoint (int type,
+@@ -1494,14 +1494,14 @@ procfs_can_use_hw_breakpoint (int type,
  }
  
  static int
@@ -267,10 +267,10 @@ Index: gdb-7.6.50.20130731-cvs/gdb/nto-procfs.c
  			     struct expression *cond)
  {
    return procfs_hw_watchpoint (addr, len, type);
-Index: gdb-7.6.50.20130731-cvs/gdb/ppc-linux-nat.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/ppc-linux-nat.c	2014-05-30 23:24:14.745103483 +0200
++++ gdb-7.7.1/gdb/ppc-linux-nat.c	2014-05-30 23:24:14.786103501 +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.  */
@@ -340,11 +340,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/ppc-linux-nat.c
  {
    int mask;
  
-Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/procfs.c	2014-05-30 23:24:14.746103484 +0200
++++ gdb-7.7.1/gdb/procfs.c	2014-05-30 23:24:14.787103501 +0200
+@@ -2428,7 +2428,7 @@ procfs_address_to_host_pointer (CORE_ADD
  #endif
  
  static int
@@ -353,7 +353,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
  {
  #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
+@@ -4774,7 +4774,7 @@ procfs_pid_to_str (struct target_ops *op
  /* Insert a watchpoint.  */
  
  static int
@@ -362,7 +362,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
  		       int after)
  {
  #ifndef AIX5
-@@ -4897,7 +4897,7 @@ procfs_stopped_data_address (struct targ
+@@ -4895,7 +4895,7 @@ procfs_stopped_data_address (struct targ
  }
  
  static int
@@ -371,7 +371,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
  			  struct expression *cond)
  {
    if (!target_have_steppable_watchpoint
-@@ -4919,7 +4919,7 @@ procfs_insert_watchpoint (CORE_ADDR addr
+@@ -4917,7 +4917,7 @@ procfs_insert_watchpoint (CORE_ADDR addr
  }
  
  static int
@@ -380,11 +380,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/procfs.c
  			  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
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/remote-m32r-sdi.c	2014-05-05 23:51:24.000000000 +0200
++++ gdb-7.7.1/gdb/remote-m32r-sdi.c	2014-05-30 23:24:14.788103502 +0200
+@@ -1415,14 +1415,15 @@ m32r_can_use_hw_watchpoint (int type, in
     watchpoint.  */
  
  static int
@@ -403,7 +403,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote-m32r-sdi.c
  
    for (i = 0; i < MAX_ACCESS_BREAKS; i++)
      {
-@@ -1441,14 +1442,15 @@ m32r_insert_watchpoint (CORE_ADDR addr,
+@@ -1440,14 +1441,15 @@ m32r_insert_watchpoint (CORE_ADDR addr,
  }
  
  static int
@@ -422,11 +422,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote-m32r-sdi.c
  
    for (i = 0; i < MAX_ACCESS_BREAKS; i++)
      {
-Index: gdb-7.6.50.20130731-cvs/gdb/remote-mips.c
+Index: gdb-7.7.1/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)
+--- gdb-7.7.1.orig/gdb/remote-mips.c	2014-05-05 23:51:24.000000000 +0200
++++ gdb-7.7.1/gdb/remote-mips.c	2014-05-30 23:24:14.789103502 +0200
+@@ -2424,7 +2424,7 @@ calculate_mask (CORE_ADDR addr, int len)
     watchpoint.  */
  
  static int
@@ -435,7 +435,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote-mips.c
  			struct expression *cond)
  {
    if (mips_set_breakpoint (addr, len, type))
-@@ -2438,7 +2438,7 @@ mips_insert_watchpoint (CORE_ADDR addr,
+@@ -2436,7 +2436,7 @@ mips_insert_watchpoint (CORE_ADDR addr,
  /* Remove a watchpoint.  */
  
  static int
@@ -444,11 +444,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote-mips.c
  			struct expression *cond)
  {
    if (mips_clear_breakpoint (addr, len, type))
-Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
+Index: gdb-7.7.1/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)
+--- gdb-7.7.1.orig/gdb/remote.c	2014-05-30 23:24:14.748103484 +0200
++++ gdb-7.7.1/gdb/remote.c	2014-05-30 23:24:14.791103503 +0200
+@@ -8322,7 +8322,7 @@ watchpoint_to_Z_packet (int type)
  }
  
  static int
@@ -457,7 +457,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
  			  struct expression *cond)
  {
    struct remote_state *rs = get_remote_state ();
-@@ -8297,7 +8297,7 @@ remote_insert_watchpoint (CORE_ADDR addr
+@@ -8342,7 +8342,7 @@ remote_insert_watchpoint (CORE_ADDR addr
    p = strchr (rs->buf, '\0');
    addr = remote_address_masked (addr);
    p += hexnumstr (p, (ULONGEST) addr);
@@ -466,7 +466,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
  
    putpkt (rs->buf);
    getpkt (&rs->buf, &rs->buf_size, 0);
-@@ -8317,7 +8317,7 @@ remote_insert_watchpoint (CORE_ADDR addr
+@@ -8362,7 +8362,7 @@ remote_insert_watchpoint (CORE_ADDR addr
  
  static int
  remote_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr,
@@ -475,7 +475,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
  {
    CORE_ADDR diff = remote_address_masked (addr - start);
  
-@@ -8326,7 +8326,7 @@ remote_watchpoint_addr_within_range (str
+@@ -8371,7 +8371,7 @@ remote_watchpoint_addr_within_range (str
  
  
  static int
@@ -484,7 +484,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
  			  struct expression *cond)
  {
    struct remote_state *rs = get_remote_state ();
-@@ -8346,7 +8346,7 @@ remote_remove_watchpoint (CORE_ADDR addr
+@@ -8391,7 +8391,7 @@ remote_remove_watchpoint (CORE_ADDR addr
    p = strchr (rs->buf, '\0');
    addr = remote_address_masked (addr);
    p += hexnumstr (p, (ULONGEST) addr);
@@ -493,11 +493,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/remote.c
    putpkt (rs->buf);
    getpkt (&rs->buf, &rs->buf_size, 0);
  
-Index: gdb-7.6.50.20130731-cvs/gdb/s390-linux-nat.c
+Index: gdb-7.7.1/gdb/s390-linux-nat.c
 ===================================================================
---- gdb-7.6.50.20130731-cvs.orig/gdb/s390-linux-nat.c	2013-08-02 16:42:29.578632913 +0200
-+++ gdb-7.6.50.20130731-cvs/gdb/s390-linux-nat.c	2013-08-02 16:42:34.103639116 +0200
-@@ -516,7 +516,7 @@ s390_fix_watch_points (struct lwp_info *
+--- gdb-7.7.1.orig/gdb/s390-linux-nat.c	2014-05-30 23:24:14.754103487 +0200
++++ gdb-7.7.1/gdb/s390-linux-nat.c	2014-05-30 23:24:14.791103503 +0200
+@@ -508,7 +508,7 @@ s390_fix_watch_points (struct lwp_info *
  }
  
  static int
@@ -506,7 +506,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/s390-linux-nat.c
  			struct expression *cond)
  {
    struct lwp_info *lp;
-@@ -537,7 +537,7 @@ s390_insert_watchpoint (CORE_ADDR addr,
+@@ -529,7 +529,7 @@ s390_insert_watchpoint (CORE_ADDR addr,
  }
  
  static int
@@ -515,11 +515,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/s390-linux-nat.c
  			struct expression *cond)
  {
    struct lwp_info *lp;
-Index: gdb-7.6.50.20130731-cvs/gdb/target.c
+Index: gdb-7.7.1/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);
+--- gdb-7.7.1.orig/gdb/target.c	2014-05-30 23:24:14.750103485 +0200
++++ gdb-7.7.1/gdb/target.c	2014-05-30 23:24:14.792103503 +0200
+@@ -50,7 +50,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 *,
@@ -528,7 +528,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  
  static int default_region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST);
  
-@@ -114,10 +114,10 @@ static int debug_to_insert_hw_breakpoint
+@@ -103,10 +103,10 @@ static int debug_to_insert_hw_breakpoint
  static int debug_to_remove_hw_breakpoint (struct gdbarch *,
  					  struct bp_target_info *);
  
@@ -541,7 +541,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  				       struct expression *);
  
  static int debug_to_stopped_by_watchpoint (void);
-@@ -125,11 +125,12 @@ static int debug_to_stopped_by_watchpoin
+@@ -114,11 +114,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 *,
@@ -556,7 +556,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  						    struct expression *);
  
  static void debug_to_terminal_init (void);
-@@ -790,10 +791,10 @@ update_current_target (void)
+@@ -739,10 +740,10 @@ update_current_target (void)
  	    (int (*) (struct gdbarch *, struct bp_target_info *))
  	    return_minus_one);
    de_fault (to_insert_watchpoint,
@@ -569,7 +569,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  	    return_minus_one);
    de_fault (to_stopped_by_watchpoint,
  	    (int (*) (void))
-@@ -806,7 +807,7 @@ update_current_target (void)
+@@ -755,7 +756,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,
@@ -578,7 +578,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
              return_zero);
    de_fault (to_terminal_init,
  	    (void (*) (void))
-@@ -3594,7 +3595,7 @@ default_region_ok_for_hw_watchpoint (COR
+@@ -3598,7 +3599,7 @@ default_region_ok_for_hw_watchpoint (COR
  static int
  default_watchpoint_addr_within_range (struct target_ops *target,
  				      CORE_ADDR addr,
@@ -587,7 +587,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  {
    return addr >= start && addr < start + length;
  }
-@@ -4555,7 +4556,7 @@ debug_to_region_ok_for_hw_watchpoint (CO
+@@ -4571,7 +4572,7 @@ debug_to_region_ok_for_hw_watchpoint (CO
  }
  
  static int
@@ -596,7 +596,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  					 struct expression *cond)
  {
    int retval;
-@@ -4565,8 +4566,8 @@ debug_to_can_accel_watchpoint_condition
+@@ -4581,8 +4582,8 @@ debug_to_can_accel_watchpoint_condition
  
    fprintf_unfiltered (gdb_stdlog,
  		      "target_can_accel_watchpoint_condition "
@@ -607,7 +607,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  		      host_address_to_string (cond), (unsigned long) retval);
    return retval;
  }
-@@ -4601,7 +4602,7 @@ debug_to_stopped_data_address (struct ta
+@@ -4617,7 +4618,7 @@ debug_to_stopped_data_address (struct ta
  static int
  debug_to_watchpoint_addr_within_range (struct target_ops *target,
  				       CORE_ADDR addr,
@@ -616,7 +616,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  {
    int retval;
  
-@@ -4609,9 +4610,9 @@ debug_to_watchpoint_addr_within_range (s
+@@ -4625,9 +4626,9 @@ debug_to_watchpoint_addr_within_range (s
  							 start, length);
  
    fprintf_filtered (gdb_stdlog,
@@ -628,7 +628,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
    return retval;
  }
  
-@@ -4646,7 +4647,7 @@ debug_to_remove_hw_breakpoint (struct gd
+@@ -4662,7 +4663,7 @@ debug_to_remove_hw_breakpoint (struct gd
  }
  
  static int
@@ -637,7 +637,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  			    struct expression *cond)
  {
    int retval;
-@@ -4654,14 +4655,14 @@ debug_to_insert_watchpoint (CORE_ADDR ad
+@@ -4670,14 +4671,14 @@ debug_to_insert_watchpoint (CORE_ADDR ad
    retval = debug_target.to_insert_watchpoint (addr, len, type, cond);
  
    fprintf_unfiltered (gdb_stdlog,
@@ -655,7 +655,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  			    struct expression *cond)
  {
    int retval;
-@@ -4669,8 +4670,8 @@ debug_to_remove_watchpoint (CORE_ADDR ad
+@@ -4685,8 +4686,8 @@ debug_to_remove_watchpoint (CORE_ADDR ad
    retval = debug_target.to_remove_watchpoint (addr, len, type, cond);
  
    fprintf_unfiltered (gdb_stdlog,
@@ -666,11 +666,11 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.c
  		      host_address_to_string (cond), (unsigned long) retval);
    return retval;
  }
-Index: gdb-7.6.50.20130731-cvs/gdb/target.h
+Index: gdb-7.7.1/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
+--- gdb-7.7.1.orig/gdb/target.h	2014-05-30 23:24:14.750103485 +0200
++++ gdb-7.7.1/gdb/target.h	2014-05-30 23:24:14.793103504 +0200
+@@ -412,8 +412,8 @@ struct target_ops
  
      /* Documentation of what the two routines below are expected to do is
         provided with the corresponding target_* macros.  */
@@ -681,7 +681,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.h
  
      int (*to_insert_mask_watchpoint) (struct target_ops *,
  				      CORE_ADDR, CORE_ADDR, int);
-@@ -385,13 +385,13 @@ struct target_ops
+@@ -424,13 +424,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 *,
@@ -697,3 +697,132 @@ Index: gdb-7.6.50.20130731-cvs/gdb/target.h
  					      struct expression *);
      int (*to_masked_watch_num_registers) (struct target_ops *,
  					  CORE_ADDR, CORE_ADDR);
+Index: gdb-7.7.1/gdb/aarch64-linux-nat.c
+===================================================================
+--- gdb-7.7.1.orig/gdb/aarch64-linux-nat.c	2014-05-30 23:30:49.088277930 +0200
++++ gdb-7.7.1/gdb/aarch64-linux-nat.c	2014-05-30 23:30:56.911280725 +0200
+@@ -428,14 +428,14 @@ aarch64_notify_debug_reg_change (const s
+ static void
+ aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
+ 			      const char *func, CORE_ADDR addr,
+-			      int len, int type)
++			      LONGEST len, int type)
+ {
+   int i;
+ 
+   fprintf_unfiltered (gdb_stdlog, "%s", func);
+   if (addr || len)
+-    fprintf_unfiltered (gdb_stdlog, " (addr=0x%08lx, len=%d, type=%s)",
+-			(unsigned long) addr, len,
++    fprintf_unfiltered (gdb_stdlog, " (addr=0x%08lx, len=%s, type=%s)",
++			(unsigned long) addr, plongest (len),
+ 			type == hw_write ? "hw-write-watchpoint"
+ 			: (type == hw_read ? "hw-read-watchpoint"
+ 			   : (type == hw_access ? "hw-access-watchpoint"
+@@ -867,9 +867,10 @@ aarch64_linux_read_description (struct t
+    gdbserver/linux-aarch64-low.c for more information.  */
+ 
+ static void
+-aarch64_align_watchpoint (CORE_ADDR addr, int len, CORE_ADDR *aligned_addr_p,
++aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
++			  CORE_ADDR *aligned_addr_p,
+ 			  int *aligned_len_p, CORE_ADDR *next_addr_p,
+-			  int *next_len_p)
++			  LONGEST *next_len_p)
+ {
+   int aligned_len;
+   unsigned int offset;
+@@ -1035,7 +1036,7 @@ aarch64_point_encode_ctrl_reg (int type,
+    Return 0 for any non-compliant ADDR and/or LEN; return 1 otherwise.  */
+ 
+ static int
+-aarch64_point_is_aligned (int is_watchpoint, CORE_ADDR addr, int len)
++aarch64_point_is_aligned (int is_watchpoint, CORE_ADDR addr, LONGEST len)
+ {
+   unsigned int alignment = is_watchpoint ? AARCH64_HWP_ALIGNMENT
+     : AARCH64_HBP_ALIGNMENT;
+@@ -1285,7 +1286,7 @@ aarch64_handle_aligned_watchpoint (int t
+    Return 0 if succeed.  */
+ 
+ static int
+-aarch64_handle_unaligned_watchpoint (int type, CORE_ADDR addr, int len,
++aarch64_handle_unaligned_watchpoint (int type, CORE_ADDR addr, LONGEST len,
+ 				     int is_insert)
+ {
+   struct aarch64_debug_reg_state *state
+@@ -1310,8 +1311,8 @@ aarch64_handle_unaligned_watchpoint (int
+ 	fprintf_unfiltered (gdb_stdlog,
+ "handle_unaligned_watchpoint: is_insert: %d\n"
+ "                             aligned_addr: 0x%08lx, aligned_len: %d\n"
+-"                                next_addr: 0x%08lx,    next_len: %d\n",
+-		 is_insert, aligned_addr, aligned_len, addr, len);
++"                                next_addr: 0x%08lx,    next_len: %s\n",
++		 is_insert, aligned_addr, aligned_len, addr, plongest (len));
+ 
+       if (ret != 0)
+ 	return ret;
+@@ -1323,7 +1324,7 @@ aarch64_handle_unaligned_watchpoint (int
+ /* Implements insertion and removal of a single watchpoint.  */
+ 
+ static int
+-aarch64_handle_watchpoint (int type, CORE_ADDR addr, int len, int is_insert)
++aarch64_handle_watchpoint (int type, CORE_ADDR addr, LONGEST len, int is_insert)
+ {
+   if (aarch64_point_is_aligned (1 /* is_watchpoint */ , addr, len))
+     return aarch64_handle_aligned_watchpoint (type, addr, len, is_insert);
+@@ -1338,15 +1339,15 @@ aarch64_handle_watchpoint (int type, COR
+    of the type TYPE.  Return 0 on success, -1 on failure.  */
+ 
+ static int
+-aarch64_linux_insert_watchpoint (CORE_ADDR addr, int len, int type,
++aarch64_linux_insert_watchpoint (CORE_ADDR addr, LONGEST len, int type,
+ 				 struct expression *cond)
+ {
+   int ret;
+ 
+   if (debug_hw_points)
+     fprintf_unfiltered (gdb_stdlog,
+-			"insert_watchpoint on entry (addr=0x%08lx, len=%d)\n",
+-			(unsigned long) addr, len);
++			"insert_watchpoint on entry (addr=0x%08lx, len=%s)\n",
++			(unsigned long) addr, plongest (len));
+ 
+   gdb_assert (type != hw_execute);
+ 
+@@ -1370,15 +1371,15 @@ aarch64_linux_insert_watchpoint (CORE_AD
+    type TYPE.  Return 0 on success, -1 on failure.  */
+ 
+ static int
+-aarch64_linux_remove_watchpoint (CORE_ADDR addr, int len, int type,
++aarch64_linux_remove_watchpoint (CORE_ADDR addr, LONGEST len, int type,
+ 				 struct expression *cond)
+ {
+   int ret;
+ 
+   if (debug_hw_points)
+     fprintf_unfiltered (gdb_stdlog,
+-			"remove_watchpoint on entry (addr=0x%08lx, len=%d)\n",
+-			(unsigned long) addr, len);
++			"remove_watchpoint on entry (addr=0x%08lx, len=%s)\n",
++			(unsigned long) addr, plongest (len));
+ 
+   gdb_assert (type != hw_execute);
+ 
+@@ -1399,7 +1400,7 @@ aarch64_linux_remove_watchpoint (CORE_AD
+ /* Implement the "to_region_ok_for_hw_watchpoint" target_ops method.  */
+ 
+ static int
+-aarch64_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++aarch64_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
+ {
+   CORE_ADDR aligned_addr;
+ 
+@@ -1489,7 +1490,7 @@ aarch64_linux_stopped_by_watchpoint (voi
+ static int
+ aarch64_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;
+ }
diff --git a/gdb.spec b/gdb.spec
index 4283a17..d406fce 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -27,7 +27,7 @@ Version: 7.7.1
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 16%{?dist}
+Release: 17%{?dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
 Group: Development/Debuggers
@@ -900,7 +900,7 @@ export LDFLAGS="%{?__global_ldflags} %{?_with_asan:-fsanitize=address}"
 	--with-system-gdbinit=%{_sysconfdir}/gdbinit		\
 	--with-gdb-datadir=%{_datadir}/gdb			\
 	--enable-gdb-build-warnings=,-Wno-unused		\
-%ifnarch %{ix86} alpha ppc s390 s390x x86_64 ppc64 ppc64le sparc sparcv9 sparc64
+%ifnarch %{ix86} alpha ppc s390 s390x x86_64 ppc64 ppc64le sparc sparcv9 sparc64 %{arm} aarch64
 	--disable-werror					\
 %else
 	--enable-werror						\
@@ -1307,6 +1307,9 @@ then
 fi
 
 %changelog
+* Fri May 30 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.7.1-17.fc21
+- [arm*,aarch64] Turn on --enable-werror, fix aarch64 for it.
+
 * Fri May 30 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.7.1-16.fc21
 - [aarch64] Fix signal frame unwinding (BZ 1086894, upstream).