This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] Don't clobber info->mach in gdb_print_insn_mips
- From: fnf at intrinsity dot com (Fred Fish)
- To: gdb-patches at sources dot redhat dot com
- Cc: fnf at intrinsity dot com (Fred Fish)
- Date: Mon, 23 Jun 2003 08:39:18 -0500 (CDT)
- Subject: [PATCH] Don't clobber info->mach in gdb_print_insn_mips
- Reply-to: fnf at intrinsity dot com (Fred Fish)
I updated to the latest CVS gdb over the weekend and afterwards my
mipsisa32-intrinsity-elf target would no longer disassemble
coprocessor 2 instructions correctly. I tracked it down to the
info->mach field being clobbered by gdb_print_insn_mips. The attached
patch fixes it, though I'm not sure if this is the correct solution.
Note that mipsisa32-intrinsity-elf is not yet a supported target
configuration as it is a work in progress and the patches have not
been submitted yet. But mipsisa32-unknown-elf has a similar problem.
-Fred
2003-06-23 Fred Fish <fnf@intrinsity.com>
* mips-tdep.c (gdb_print_insn_mips): Don't clobber a previously
set value of info->mach.
Index: mips-tdep.c
===================================================================
RCS file: /mips/newtools/fsf/gdb/gdb/mips-tdep.c,v
retrieving revision 1.20
diff -c -r1.20 mips-tdep.c
*** mips-tdep.c 2003/06/23 02:13:09 1.20
--- mips-tdep.c 2003/06/23 13:33:02
***************
*** 5279,5288 ****
guess that if the address passed in is odd, it's 16-bits. */
if (proc_desc)
info->mach = pc_is_mips16 (PROC_LOW_ADDR (proc_desc)) ?
! bfd_mach_mips16 : 0;
else
info->mach = pc_is_mips16 (memaddr) ?
! bfd_mach_mips16 : 0;
/* Round down the instruction address to the appropriate boundary. */
memaddr &= (info->mach == bfd_mach_mips16 ? ~1 : ~3);
--- 5279,5288 ----
guess that if the address passed in is odd, it's 16-bits. */
if (proc_desc)
info->mach = pc_is_mips16 (PROC_LOW_ADDR (proc_desc)) ?
! bfd_mach_mips16 : info->mach;
else
info->mach = pc_is_mips16 (memaddr) ?
! bfd_mach_mips16 : info->mach;
/* Round down the instruction address to the appropriate boundary. */
memaddr &= (info->mach == bfd_mach_mips16 ? ~1 : ~3);