Re: [PATCH] Add a new format letter to dump instructions backward

Pedro Alves
2016-01-25T11:41:31Z

On 01/24/2016 09:28 PM, Toshihito Kikuchi wrote:
> Hi all,
>

Hi there.

> With the attached patch, I'd like to add a new format letter "j" to
> the "x" command to dump instructions in backward direction.

Thanks.

What's the rationale for making this a format letter though?
It seems orthogonal to the other format letters to me.

Example, say I dump raw opcodes in hex, with:

(gdb) x /4x main
0x400766 : 0x55 0x48 0x89 0xe5
(gdb) x /4x
0x40076a <main+4>: 0x48 0x83 0xec 0x30
(gdb) x
0x40076e <main+8>: 0x48
(gdb)
0x40076f <main+9>: 0xc7

but then I can't go backwards in hex, as /j overrides it,
and always prints like /i:

(gdb) x /4xj
0x400766 : push %rbp
0x400767 <main+1>: mov %rsp,%rbp
0x40076a <main+4>: sub $0x30,%rsp
=> 0x40076e <main+8>: movq $0x0,-0x8(%rbp)

Seems to me that some other UI would be better. E.g.,:

#1 - a different switch, like "x -back /i " ?

#2 - a different command, like "bx" ?

#3 - negative repeat counts ?

(gdb) x /4i // next 4 instructions
(gdb) x /-4i // previous 4 instructions

(gdb) x /4bx // next 4 bytes, in hex
(gdb) x /-4bx // previous 4 bytes, in hex

Added #1 just for completeness, I don't find it very convenient.

#3 feels natural to me. What do you (and others) think?

Adding some tests would be great. Also, the documentation
will need to be updated.

If you haven't yet, please take a look at:
https://sourceware.org/gdb/wiki/ContributionChecklist

Thanks,
Pedro Alves