[PATCH] Fix gdb disassemble for power6/power7 instructions

Edjunior Barbosa Machado emachado@linux.vnet.ibm.com
Fri Nov 23 17:07:00 GMT 2012

On 11/23/2012 01:28 AM, Alan Modra wrote:
> One of the effects of updating to a power7 default is that conditional
> branch hints are displayed for "at" style hints rather than the older
> "y" hints.  When using "y" hints the disassembler always showed the
> hint, eg. "bne-" or "bne+".  Now you'll see "bne" most times.  This
> meant updating the testsuite.  I made one gas test disassemble for
> plain ppc just to ensure the older "y" hints continue to be available.
> Committed.

Thanks a lot for the patch, Alan. This also fixes the issues with gdb
disassemble for power6 and power7 instructions.

With these changes on powerpc_init_dialect(), I'd suggest to remove the info->mach
checking from gdb. Ok?


2012-11-23  Edjunior Machado  <emachado@linux.vnet.ibm.com>

	* rs6000-tdep.c (gdb_print_insn_powerpc): Remove info->mach checking,
	since now it is being done in binutils' powerpc_init_dialect().

 gdb/rs6000-tdep.c |   15 ---------------
 1 files changed, 0 insertions(+), 15 deletions(-)

diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 1797cc5..07b81bc 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -3084,21 +3084,6 @@ find_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
 static int
 gdb_print_insn_powerpc (bfd_vma memaddr, disassemble_info *info)
-  if (!info->disassembler_options)
-    {
-      /* When debugging E500 binaries and disassembling code containing
-	 E500-specific (SPE) instructions, one sometimes sees AltiVec
-	 instructions instead.  The opcode spaces for SPE instructions
-	 and AltiVec instructions overlap, and specifiying the "any" cpu
-	 looks for AltiVec instructions first.  If we know we're
-	 debugging an E500 binary, however, we can specify the "e500x2"
-	 cpu and get much more sane disassembly output.  */
-      if (info->mach == bfd_mach_ppc_e500)
-	info->disassembler_options = "e500x2";
-      else
-	info->disassembler_options = "any";
-    }
   if (info->endian == BFD_ENDIAN_BIG)
     return print_insn_big_powerpc (memaddr, info);

More information about the Binutils mailing list