Skip to content

Commit a714b0d

Browse files
author
Yao Qi
committed
Fix M68HC11_NUM_REGS
M68HC11_LAST_HARD_REG is 8, but m68hc11 register number is started from 0, so there are 9 raw registers, but M68HC11_NUM_REGS is 8 by mistake. My following unit test can find this issue (GDB is built with asan) ================================================================= ==15555==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000113150 at pc 0x51393f bp 0x7fffcec36f60 sp 0x7fffcec36f58 WRITE of size 2 at 0x602000113150 thread T0 #0 0x51393e in m68hc11_pseudo_register_read gdb/m68hc11-tdep.c:320 #1 0xc4b620 in gdbarch_pseudo_register_read(gdbarch*, regcache*, int, unsigned char*) gdb/gdbarch.c:1974 #2 0xddad88 in regcache::cooked_read(int, unsigned char*) gdb/regcache.c:710 #3 0xddff2b in cooked_read_test gdb/regcache.c:1850 #4 0xdf8cfb in selftests::gdbarch_selftest::operator()() const gdb/selftest-arch.c:73 gdb: 2017-11-15 Yao Qi <yao.qi@linaro.org> * m68hc11-tdep.c (M68HC11_NUM_REGS): Change it to M68HC11_LAST_HARD_REG + 1.
1 parent 390a678 commit a714b0d

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

Diff for: gdb/ChangeLog

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2017-11-15 Yao Qi <yao.qi@linaro.org>
2+
3+
* m68hc11-tdep.c (M68HC11_NUM_REGS): Change it to
4+
M68HC11_LAST_HARD_REG + 1.
5+
16
2017-11-14 Paul Carroll <pcarroll@codesourcery.com>
27

38
PR gdb/22388

Diff for: gdb/m68hc11-tdep.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ enum insn_return_kind {
112112
#define SOFT_D32_REGNUM (SOFT_D1_REGNUM+31)
113113
#define M68HC11_MAX_SOFT_REGS 32
114114

115-
#define M68HC11_NUM_REGS (8)
115+
#define M68HC11_NUM_REGS (M68HC11_LAST_HARD_REG + 1)
116116
#define M68HC11_NUM_PSEUDO_REGS (M68HC11_MAX_SOFT_REGS+5)
117117
#define M68HC11_ALL_REGS (M68HC11_NUM_REGS+M68HC11_NUM_PSEUDO_REGS)
118118

0 commit comments

Comments
 (0)