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

Simon Marchi simon.marchi@polymtl.ca
Tue Apr 3 12:23:00 GMT 2018


On 2018-04-03 06:01, Dmitry Antipov wrote:
> 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

I agree.

Simon



More information about the Gdb mailing list