[AArch64] Track FP registers in prologue analyzer
authorYao Qi <yao.qi@linaro.org>
Tue, 11 Oct 2016 11:12:46 +0000 (12:12 +0100)
committerYao Qi <yao.qi@linaro.org>
Wed, 12 Oct 2016 11:33:53 +0000 (12:33 +0100)
commit187f5d00acf0ffe5390f282fd4d6285bcd6fccb9
tree899713cd55981fb9495d68499a1041734dcfe449
parentb43fbca8c2cd2d40fb61dc667afbfc66a4441b58
[AArch64] Track FP registers in prologue analyzer

We don't track FP registers in aarch64 prologue analyzer, so this causes
an internal error when FP registers are saved by "stp" instruction in
prologue (stp d8, d9, [sp,#128]),

 tbreak _Unwind_RaiseException^M
 aarch64-tdep.c:335: internal-error: CORE_ADDR aarch64_analyze_prologue(gdbarch*, CORE_ADDR, CORE_ADDR, aarch64_prologue_cache*): Assertion `inst.operands[0].type == AARCH64_OPND_Rt' failed.^M
 A problem internal to GDB has been detected,

This patch teaches GDB to track FP registers (D registers) in prologue
analyzer.

gdb:

2016-10-12  Yao Qi  <yao.qi@linaro.org>

PR tdep/20682
* aarch64-tdep.c: Replace 32 with AARCH64_D_REGISTER_COUNT.
(aarch64_analyze_prologue): Extend array 'regs' for D registers.
Assert that operand 0 and 1 can be X or D registers.  Update
register number for D registers.  Update registers in frame
cache.
* aarch64-tdep.h (AARCH64_D_REGISTER_COUNT): New macro.
gdb/ChangeLog
gdb/aarch64-tdep.c
gdb/aarch64-tdep.h