aboutsummaryrefslogtreecommitdiff
path: root/gdb/ChangeLog
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2017-12-08 17:27:03 +0000
committerYao Qi <yao.qi@linaro.org>2017-12-08 17:27:03 +0000
commita0de8c21baf46c40ed8e62faef5f750b1e5453ea (patch)
tree137844459043552cc8546120dca8b353e1048f36 /gdb/ChangeLog
parenta738ea1d41daeec0cccb4ab6671f4f6d53bd9e18 (diff)
downloadgdb-a0de8c21baf46c40ed8e62faef5f750b1e5453ea.zip
gdb-a0de8c21baf46c40ed8e62faef5f750b1e5453ea.tar.gz
gdb-a0de8c21baf46c40ed8e62faef5f750b1e5453ea.tar.bz2
Adjust breakpoint address by clearing non-significant bits
Tag in tagged address on AArch64 is treated as a non-significant bits of address, which can be got by gdbarch method significant_addr_bit, and gdb can clear these bits. With this patch, when user sets a breakpoint on tagged address on AArch64, GDB will drop the top byte of address, and put breakpoint at the new place, as shown below, (gdb) hbreak *func_ptr warning: Breakpoint address adjusted from 0xf000000000400690 to 0x00400690. Hardware assisted breakpoint 2 at 0x400690 (gdb) break *func_ptr warning: Breakpoint address adjusted from 0xf000000000400690 to 0x00400690. Breakpoint 3 at 0x400690 When program hits a breakpoint, the stopped pc reported by Linux kernel is the address *without* tag, so it is better the address recorded in breakpoint location is the one without tag too, so we can still match breakpoint location address and stopped pc reported by Linux kernel, by simple compare. gdb: 2017-12-08 Yao Qi <yao.qi@linaro.org> * breakpoint.c (adjust_breakpoint_address): Call address_significant. gdb/testsuite: 2017-12-08 Yao Qi <yao.qi@linaro.org> * gdb.arch/aarch64-tagged-pointer.c (main): Update. * gdb.arch/aarch64-tagged-pointer.exp: Add test for breakpoint.
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r--gdb/ChangeLog5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 952a2ff..134f7b4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2017-12-08 Yao Qi <yao.qi@linaro.org>
+ * breakpoint.c (adjust_breakpoint_address): Call
+ address_significant.
+
+2017-12-08 Yao Qi <yao.qi@linaro.org>
+
* aarch64-tdep.c (aarch64_gdbarch_init): Install gdbarch
significant_addr_bit.
* gdbarch.sh (significant_addr_bit): New.