[RFC PATCH] disas/hppa: drop raw opcode dump

Alex Bennée posted 1 patch 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240229140557.1749767-1-alex.bennee@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>
disas/hppa.c | 4 ----
1 file changed, 4 deletions(-)
[RFC PATCH] disas/hppa: drop raw opcode dump
Posted by Alex Bennée 9 months ago
The hppa disassembly is different from the others due to leading with
the raw opcode data. This confuses plugins looking for instruction
prefixes to match instructions. For plugins like execlog there is
another mechanism for getting the instruction byte data.

For the sake of consistently just present the instruction assembly
code.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 disas/hppa.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/disas/hppa.c b/disas/hppa.c
index 22dce9b41bb..dd34cce211b 100644
--- a/disas/hppa.c
+++ b/disas/hppa.c
@@ -1972,10 +1972,6 @@ print_insn_hppa (bfd_vma memaddr, disassemble_info *info)
 
   insn = bfd_getb32 (buffer);
 
-  info->fprintf_func(info->stream, " %02x %02x %02x %02x   ",
-                (insn >> 24) & 0xff, (insn >> 16) & 0xff,
-                (insn >>  8) & 0xff, insn & 0xff);
-
   for (i = 0; i < NUMOPCODES; ++i)
     {
       const struct pa_opcode *opcode = &pa_opcodes[i];
-- 
2.39.2


Re: [RFC PATCH] disas/hppa: drop raw opcode dump
Posted by Richard Henderson 9 months ago
On 2/29/24 04:05, Alex Bennée wrote:
> The hppa disassembly is different from the others due to leading with
> the raw opcode data. This confuses plugins looking for instruction
> prefixes to match instructions. For plugins like execlog there is
> another mechanism for getting the instruction byte data.
> 
> For the sake of consistently just present the instruction assembly
> code.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   disas/hppa.c | 4 ----
>   1 file changed, 4 deletions(-)
> 
> diff --git a/disas/hppa.c b/disas/hppa.c
> index 22dce9b41bb..dd34cce211b 100644
> --- a/disas/hppa.c
> +++ b/disas/hppa.c
> @@ -1972,10 +1972,6 @@ print_insn_hppa (bfd_vma memaddr, disassemble_info *info)
>   
>     insn = bfd_getb32 (buffer);
>   
> -  info->fprintf_func(info->stream, " %02x %02x %02x %02x   ",
> -                (insn >> 24) & 0xff, (insn >> 16) & 0xff,
> -                (insn >>  8) & 0xff, insn & 0xff);
> -

It's hardly the only one doing this.  Our capstone dumper does this, and glancing at some 
others riscv.c does as well.

When you say "the others", I think you mean "everything using capstone", which has uses a 
different print function entirely for plugins just to avoid the dump.


r~

Re: [RFC PATCH] disas/hppa: drop raw opcode dump
Posted by Helge Deller 9 months ago
On 2/29/24 15:05, Alex Bennée wrote:
> The hppa disassembly is different from the others due to leading with
> the raw opcode data. This confuses plugins looking for instruction
> prefixes to match instructions. For plugins like execlog there is
> another mechanism for getting the instruction byte data.
>
> For the sake of consistently just present the instruction assembly
> code.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

This effectively reverts commit 2f926bfd5b79e6219ae65a1e530b38f37d62b384
("disas/hppa: Show hexcode of instruction along with disassembly").

Sad, but Ok.

Acked-by: Helge Deller <deller@gmx.de>


> ---
>   disas/hppa.c | 4 ----
>   1 file changed, 4 deletions(-)
>
> diff --git a/disas/hppa.c b/disas/hppa.c
> index 22dce9b41bb..dd34cce211b 100644
> --- a/disas/hppa.c
> +++ b/disas/hppa.c
> @@ -1972,10 +1972,6 @@ print_insn_hppa (bfd_vma memaddr, disassemble_info *info)
>
>     insn = bfd_getb32 (buffer);
>
> -  info->fprintf_func(info->stream, " %02x %02x %02x %02x   ",
> -                (insn >> 24) & 0xff, (insn >> 16) & 0xff,
> -                (insn >>  8) & 0xff, insn & 0xff);
> -
>     for (i = 0; i < NUMOPCODES; ++i)
>       {
>         const struct pa_opcode *opcode = &pa_opcodes[i];
Re: [RFC PATCH] disas/hppa: drop raw opcode dump
Posted by Alex Bennée 9 months ago
Helge Deller <deller@gmx.de> writes:

> On 2/29/24 15:05, Alex Bennée wrote:
>> The hppa disassembly is different from the others due to leading with
>> the raw opcode data. This confuses plugins looking for instruction
>> prefixes to match instructions. For plugins like execlog there is
>> another mechanism for getting the instruction byte data.
>>
>> For the sake of consistently just present the instruction assembly
>> code.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>
> This effectively reverts commit 2f926bfd5b79e6219ae65a1e530b38f37d62b384
> ("disas/hppa: Show hexcode of instruction along with disassembly").
>
> Sad, but Ok.
>
> Acked-by: Helge Deller <deller@gmx.de>

Well its an RFC for a reason. If this is useful we could just sneak a
flag into disassemble_info that is set by plugin_disas? Or maybe move
the insn stream to afterwards?

>
>
>> ---
>>   disas/hppa.c | 4 ----
>>   1 file changed, 4 deletions(-)
>>
>> diff --git a/disas/hppa.c b/disas/hppa.c
>> index 22dce9b41bb..dd34cce211b 100644
>> --- a/disas/hppa.c
>> +++ b/disas/hppa.c
>> @@ -1972,10 +1972,6 @@ print_insn_hppa (bfd_vma memaddr, disassemble_info *info)
>>
>>     insn = bfd_getb32 (buffer);
>>
>> -  info->fprintf_func(info->stream, " %02x %02x %02x %02x   ",
>> -                (insn >> 24) & 0xff, (insn >> 16) & 0xff,
>> -                (insn >>  8) & 0xff, insn & 0xff);
>> -
>>     for (i = 0; i < NUMOPCODES; ++i)
>>       {
>>         const struct pa_opcode *opcode = &pa_opcodes[i];

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro