Date: Thu, 17 Jun 1999 10:33:59 +0300 (IDT) From: Eli Zaretskii X-Sender: eliz AT is To: Robert Hoehne cc: djgpp-workers AT delorie DOT com Subject: "info float" in GDB Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp-workers AT delorie DOT com These changes make some minor improvements in the way float info is displayed by GDB. *** gdb/go32-nat.c~9 Sat Jun 12 12:16:54 1999 --- gdb/go32-nat.c Wed Jun 16 22:42:26 1999 *************** print_387_status (unsigned short status, *** 224,231 **** } print_387_control_word (ep->control & 0xffff); ! printf_unfiltered ("last exception: "); ! printf_unfiltered ("opcode %s; ", local_hex_string (ep->opcode)); printf_unfiltered ("pc %s:", local_hex_string (ep->code_seg)); printf_unfiltered ("%s; ", local_hex_string (ep->eip)); printf_unfiltered ("operand %s", local_hex_string (ep->operand_seg)); --- 224,237 ---- } print_387_control_word (ep->control & 0xffff); ! /* Other platforms say "last exception", but that's not true: the ! FPU stores the last non-control instruction there. */ ! printf_unfiltered ("last FP instruction: "); ! /* The ORing with D800h restores the upper 5 bits of the opcode that ! are not stored by the FPU (since these bits are the same for all ! floating-point instructions). */ ! printf_unfiltered ("opcode %s; ", ! local_hex_string (ep->opcode ? (ep->opcode|0xd800) : 0)); printf_unfiltered ("pc %s:", local_hex_string (ep->code_seg)); printf_unfiltered ("%s; ", local_hex_string (ep->eip)); printf_unfiltered ("operand %s", local_hex_string (ep->operand_seg)); *************** print_387_status (unsigned short status, *** 270,276 **** REGISTER_CONVERT_TO_VIRTUAL (FP0_REGNUM+regno, builtin_type_long_double, &ep->regs[regno], &val); ! printf_unfiltered (" %LG\n", val); } } --- 276,282 ---- REGISTER_CONVERT_TO_VIRTUAL (FP0_REGNUM+regno, builtin_type_long_double, &ep->regs[regno], &val); ! printf_unfiltered (" %.19LG\n", val); } } *** gdb/i387-tdep.c~0 Fri Oct 16 21:45:04 1998 --- gdb/i387-tdep.c Wed Jun 16 22:20:34 1999 *************** void *** 88,97 **** print_387_status_word (status) unsigned int status; { ! printf_unfiltered ("status %s: ", local_hex_string (status)); if (status & 0xff) { ! printf_unfiltered ("exceptions:"); if (status & 0x0001) printf_unfiltered (" INVALID"); if (status & 0x0002) printf_unfiltered (" DENORM"); if (status & 0x0004) printf_unfiltered (" DIVZ"); --- 88,97 ---- print_387_status_word (status) unsigned int status; { ! printf_unfiltered ("status %s", local_hex_string (status)); if (status & 0xff) { ! printf_unfiltered (": exceptions:"); if (status & 0x0001) printf_unfiltered (" INVALID"); if (status & 0x0002) printf_unfiltered (" DENORM"); if (status & 0x0004) printf_unfiltered (" DIVZ"); *************** print_387_status_word (status) *** 99,106 **** if (status & 0x0010) printf_unfiltered (" UNDERF"); if (status & 0x0020) printf_unfiltered (" LOS"); if (status & 0x0040) printf_unfiltered (" FPSTACK"); - printf_unfiltered ("; "); } printf_unfiltered ("flags: %d%d%d%d; ", (status & 0x4000) != 0, (status & 0x0400) != 0, --- 99,106 ---- if (status & 0x0010) printf_unfiltered (" UNDERF"); if (status & 0x0020) printf_unfiltered (" LOS"); if (status & 0x0040) printf_unfiltered (" FPSTACK"); } + printf_unfiltered ("; "); printf_unfiltered ("flags: %d%d%d%d; ", (status & 0x4000) != 0, (status & 0x0400) != 0,