This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] return zero in arm_linux_can_use_hw_breakpoint if HW point isn't supported


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dbbf180a8176d59eb04d20a681c0e77e2b0551a5

commit dbbf180a8176d59eb04d20a681c0e77e2b0551a5
Author: Yao Qi <yao.qi@linaro.org>
Date:   Fri Apr 17 13:52:44 2015 +0100

    return zero in arm_linux_can_use_hw_breakpoint if HW point isn't supported
    
    This patch is to cherry-pick part of Pedro's patch here
    https://sourceware.org/ml/gdb-patches/2015-04/msg00527.html in which
    zero is returned if the HW point isn't supported.
    
    In arm-linux native gdb testing on a board doesn't support HW breakpoint,
    without this patch, the output in gdb.base/breakpoint-in-ro-region.exp is like:
    
    (gdb) hbreak *0x83bc^M
    Hardware breakpoints used exceeds limit.^M
    (gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (support)
    
    with this patch, the output becomes:
    
    (gdb) hbreak *0x83bc^M
    No hardware breakpoint support in the target.^M
    (gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (no support)
    
    As a result, the following fails are fixed.
    
    -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: step in ro region (cannot insert hw break)
    -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: thread advanced
    -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: step in ro region (cannot insert hw break)
    -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: thread advanced
    
    gdb:
    
    2015-04-17  Pedro Alves  <palves@redhat.com>
    
    	* arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Return zero
    	if HW point of TYPE isn't supported.

Diff:
---
 gdb/ChangeLog       |  5 +++++
 gdb/arm-linux-nat.c | 12 ++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 295ef34..273c6b3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-17  Pedro Alves  <palves@redhat.com>
+
+	* arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Return zero
+	if HW point of TYPE isn't supported.
+
 2015-04-17  Yao Qi  <yao.qi@linaro.org>
 	    Pedro Alves  <palves@redhat.com>
 
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index bb8358c..afc5817 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -771,12 +771,20 @@ arm_linux_can_use_hw_breakpoint (struct target_ops *self,
   if (type == bp_hardware_watchpoint || type == bp_read_watchpoint
       || type == bp_access_watchpoint || type == bp_watchpoint)
     {
-      if (cnt + ot > arm_linux_get_hw_watchpoint_count ())
+      int count = arm_linux_get_hw_watchpoint_count ();
+
+      if (count == 0)
+	return 0;
+      else if (cnt + ot > count)
 	return -1;
     }
   else if (type == bp_hardware_breakpoint)
     {
-      if (cnt > arm_linux_get_hw_breakpoint_count ())
+      int count = arm_linux_get_hw_breakpoint_count ();
+
+      if (count == 0)
+	return 0;
+      else if (cnt > count)
 	return -1;
     }
   else


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]