Re: Reverse debugging for arm baremetal targets?

Hui Zhu <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CANFwon3Uaqv+Tah6wU2MupoZ+LNnb=pv2MzNVSBmEm+2FfW84Q@mail.gmail.com>
On Mon, Jul 22, 2013 at 2:10 PM, Terry Guo <[email protected]> wrote:
> On Mon, Jul 22, 2013 at 10:07 AM, Hui Zhu <[email protected]> wrote:
>> On Mon, Jul 22, 2013 at 9:37 AM, Terry Guo <[email protected]> wrote:
>>> Hi there,
>>>
>>> Is this feature enabled for arm baremetal targets? If not, is it
>>> possible to do so and what kind of problems we need to solve to
>>> achieve this? Thanks in advance for your help.
>>>
>>> Best Regards,
>>> Terry
>>
>> If just for reverse debug, I think it is not depend on the arch.  So I
>> think it is OK for ARM.
>>
>> And if I remember is right, simics support it.
>>
>> Thanks,
>> Hui
>
> Thanks for your reply. I did some tests and it seems to me that
> reverse debugging doesn't work for baremetal targets. My test includes
> a ARM Cortex-M3 board running a baremetal program, a gdb server and a
> baremetal gdb. The gdb version is:
>
> GNU gdb (GDB) 7.6
>
> After I connect to M3 board and run command "record", I got:

This error is about process record but not reverse debug.

>
> Breakpoint 1, main () at main.cpp:24
> 24 xyz = 0;
> (gdb) record
> Process record: the current architecture doesn't support record function.

This is the reason why you cannot use reverse debug commands.

You got this error is because:
  /* Reversible debugging, process record.  */
  set_gdbarch_process_record (gdbarch, arm_process_record);
This line is called in arm_linux_init_abi but you are not a linux target.

I found all the "set_gdbarch_process_record" is called in
xxx_linux_init function make it depend on Linux.
I forget why I do it.  :P
I think 2 reasons let me do it:
1. syscall record just support linux.
2. make it can pass review.  :P

But most of prec function is just to record the behavior of
instruction.  So maybe we can move it to arch init code.

Thanks,
Hui

> (gdb) show ar
> architecture  args          arm
> (gdb) show architecture
> The target architecture is set automatically (currently arm)
> (gdb) n
> 26 foo ();
> (gdb) s
> foo () at main.cpp:16
> 16  xyz = 1;
> (gdb) n
> 17  return bar ();
> (gdb) s
> bar () at main.cpp:10
> 10  xyz = 2;
> (gdb) reverse-next
> Target remote does not support this command.
>
> Am I doing something wrong? Please advise.




>
> BR,
> Terry
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.