aarch64-tdep.c:379: internal-error: CORE_ADDR aarch64_analyze_prologue(gdbarch*, CORE_ADDR, CORE_ADDR, aarch64_prologue_cache*, {anonymous}::abstract_instruction_reader&): Assertion `inst.operands[0].qualifier == AARCH64_OPND_QLF_S_D' failed

Dmitry Antipov dantipov@nvidia.com
Tue Apr 3 10:01:00 GMT 2018


On 04/03/2018 04:35 AM, Simon Marchi wrote:

> So it looks like the GDB code assumes that no-one would ever save the whole registers, because it is not necessary.  GDB should not use gdb_assert and crash on bad input.  I don't know what it should 
> do instead in that specific case, that's the part that takes more time to think about :).

I think that "ABI violation" is not always a synonym for "bad input" :-), and we definitely don't want the debugger to crash on some handwritten
inline assembler trick, for example. BTW, LLVM project debugger lldb seems uses more relaxed approach and allows STP with FP quadword operands in
function prologues, see https://github.com/llvm-mirror/lldb/blob/master/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp.

Dmitry




More information about the Gdb mailing list