Skip hbreak-unmapped.exp if memory at address 0 is readable
authorYao Qi <yao@codesourcery.com>
Fri, 6 Jun 2014 03:05:05 +0000 (11:05 +0800)
committerYao Qi <yao@codesourcery.com>
Fri, 6 Jun 2014 08:57:15 +0000 (16:57 +0800)
hbreak-unmapped.exp assumes that memory at address 0 is unmapped or
unreadable, but on bare metal or uclinux targets, memory at address
0 is readable.  For example, on arm-none-eabi, the vector table base
address is 0x0.

hbreak *0^M
Hardware assisted breakpoint 3 at 0x0: file
/scratch/yqi/arm-none-eabi-lite/obj/cs3-2014.11-999999-arm-none-eabi-i686-pc-linux-gnu/generated/arm-vector.S,
line 25.^M
(gdb) FAIL: gdb.base/hbreak-unmapped.exp: hbreak *0
info break^M
Num     Type           Disp Enb Address    What^M
3       hw breakpoint  keep y   0x00000000
/scratch/yqi/arm-none-eabi-lite/obj/cs3-2014.11-999999-arm-none-eabi-i686-pc-linux-gnu/generated/arm-vector.S:25^M
(gdb) FAIL: gdb.base/hbreak-unmapped.exp: info break shows hw breakpoint
delete $bpnum

This patch is to check whether address 0 is readable via command 'x 0'.
If it is, skip the test.

gdb/testsuite:

2014-06-06  Yao Qi  <yao@codesourcery.com>

* gdb.base/hbreak-unmapped.exp: Read memory at address 0.  If
readable, skip the test.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/hbreak-unmapped.exp

index 51686d19ad93175f0974b14a9bbed41e6d087305..bc81a07a8090ddadab4c6537d6958e2409e8d1da 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-06  Yao Qi  <yao@codesourcery.com>
+
+       * gdb.base/hbreak-unmapped.exp: Read memory at address 0.  If
+       readable, skip the test.
+
 2014-06-06  Yao Qi  <yao@codesourcery.com>
 
        * gdb.threads/staticthreads.c (thread_function): Move the line
index 5cb655c2b1230d9549d350168b799387fa14b236..95668f2fd62903c49a64c2ee907525cf6f4f4205 100644 (file)
@@ -28,6 +28,16 @@ if ![runto_main] {
     return -1
 }
 
+# If we can read the memory at address 0, skip the test.
+gdb_test_multiple "x 0" "memory at address 0" {
+    -re "0x0:.*Cannot access memory at address 0x0.*$gdb_prompt $" { }
+    -re "0x0:.*Error accessing memory address 0x0.*$gdb_prompt $" { }
+    -re ".*$gdb_prompt $" {
+       untested "Memory at address 0 is readable"
+       return
+    }
+}
+
 delete_breakpoints
 
 # Test whether the target supports hardware breakpoints at all.