From: Thiago Jung Bauermann <bauerman@br.ibm.com>
To: gdb-patches <gdb-patches@sourceware.org>
Subject: (not) disassembling power[456] instructions in GDB
Date: Thu, 01 Feb 2007 00:23:00 -0000 [thread overview]
Message-ID: <1170289373.26944.45.camel@localhost.localdomain> (raw)
[-- Attachment #1: Type: text/plain, Size: 2291 bytes --]
Hi,
I found out that GDB is not currently disassembling instructions which
are available on power4, power5 or power6 processors even though it has
support to do so. GDB copies the disassembler code from binutils, which
provides a -M option to let the user specify the dialect to be used, but
the problem is that GDB itself doesn't provide a command or option to
let
the user specify the dialect. The result is that the powerpc_dialect()
function in ppc-dis.c will always return the same value, which doesn't
include any of the PPC_OPCODE_POWER[456] flags.
Example:
(gdb) disassemble main
Dump of assembler code for function main:
0x1000046c <main+0>: stwu r1,-48(r1)
0x10000470 <main+4>: stw r31,44(r1)
0x10000474 <main+8>: mr r31,r1
0x10000478 <main+12>: stw r3,24(r31)
0x1000047c <main+16>: stw r4,28(r31)
0x10000480 <main+20>: li r0,4
0x10000484 <main+24>: stw r0,8(r31)
0x10000488 <main+28>: .long 0x7c284fec
0x1000048c <main+32>: .long 0xed405834
0x10000490 <main+36>: lwz r11,0(r1)
0x10000494 <main+40>: lwz r31,-4(r11)
0x10000498 <main+44>: mr r1,r11
0x1000049c <main+48>: blr
End of assembler dump.
(gdb)
In the output above, ".long 0x7c284fec" is an instruction available
only in power4 or later processors (dcbzl), and ".long 0xed405834"
is available only in power5 or later (frsqrtes).
The attached patch makes GDB always use the -Many option of the
disassembler, which will make it disassemble every instruction it
understands.
Here's the output with the patch applied:
(gdb) disassemble main
Dump of assembler code for function main:
0x1000046c <main+0>: stwu r1,-48(r1)
0x10000470 <main+4>: stw r31,44(r1)
0x10000474 <main+8>: mr r31,r1
0x10000478 <main+12>: stw r3,24(r31)
0x1000047c <main+16>: stw r4,28(r31)
0x10000480 <main+20>: li r0,4
0x10000484 <main+24>: stw r0,8(r31)
0x10000488 <main+28>: dcbzl r8,r9
0x1000048c <main+32>: frsqrtes f10,f11
0x10000490 <main+36>: lwz r11,0(r1)
0x10000494 <main+40>: lwz r31,-4(r11)
0x10000498 <main+44>: mr r1,r11
0x1000049c <main+48>: blr
End of assembler dump.
(gdb)
Comments? Can this patch be applied?
--
[]'s
Thiago Jung Bauermann
Software Engineer
IBM Linux Technology Center
[-- Attachment #2: ppc-disassemble-any.diff --]
[-- Type: text/x-patch, Size: 440 bytes --]
--- rs6000-tdep.c.orig 2007-01-31 21:10:19.000000000 -0200
+++ rs6000-tdep.c 2007-01-31 21:10:22.000000000 -0200
@@ -2904,6 +2904,9 @@ find_variant_by_arch (enum bfd_architect
static int
gdb_print_insn_powerpc (bfd_vma memaddr, disassemble_info *info)
{
+ if (!info->disassembler_options)
+ info->disassembler_options = "any";
+
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
return print_insn_big_powerpc (memaddr, info);
else
[-- Attachment #3: ChangeLog --]
[-- Type: text/x-changelog, Size: 157 bytes --]
2007-01-31 Thiago Jung Bauermann <bauerman@br.ibm.com>
* rs6000-tdep.c (gdb_print_insn_powerpc): ensure
info->disassembler_options has the "any" value.
next reply other threads:[~2007-02-01 0:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-01 0:23 Thiago Jung Bauermann [this message]
2007-02-01 17:11 ` [PATCH] " Thiago Jung Bauermann
2007-02-06 15:06 ` Thiago Jung Bauermann
2007-02-08 18:05 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1170289373.26944.45.camel@localhost.localdomain \
--to=bauerman@br.ibm.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox