2003-07-02 Michael Snyder * sh-tdep.c (do_dr_register_info): Fix register number output (0, 2, 4, ... not 0, 1, 2...). Display DP register both in hex and in floating point (noting when it is not valid FP). Index: sh-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sh-tdep.c,v retrieving revision 1.132 diff -p -r1.132 sh-tdep.c *** sh-tdep.c 13 Jun 2003 04:40:34 -0000 1.132 --- sh-tdep.c 2 Jul 2003 18:00:22 -0000 *************** static void *** 3928,3938 **** do_dr_register_info (int dr_regnum) { int first_fp_reg_num = dr_reg_base_num (dr_regnum); ! printf_filtered ("dr%d\t0x%08x%08x\n", ! dr_regnum - gdbarch_tdep (current_gdbarch)->DR0_REGNUM, ! (int) read_register (first_fp_reg_num), ! (int) read_register (first_fp_reg_num + 1)); } /* Double precision registers, compact mode. */ --- 3928,3962 ---- do_dr_register_info (int dr_regnum) { int first_fp_reg_num = dr_reg_base_num (dr_regnum); + char *raw_buffer; + double dbl; + int inv; ! /* Allocate space for the float. */ ! raw_buffer = (char *) alloca (2 * REGISTER_RAW_SIZE (FP0_REGNUM)); ! ! /* Get the data in raw format. */ ! if (!frame_register_read (get_selected_frame (), ! first_fp_reg_num, raw_buffer) ! || !frame_register_read (get_selected_frame (), ! first_fp_reg_num + 1, ! raw_buffer + REGISTER_RAW_SIZE (FP0_REGNUM))) ! error ("can't read register %d (%s)", ! dr_regnum, REGISTER_NAME (dr_regnum)); ! ! /* Get the register as a number */ ! dbl = unpack_double (builtin_type_double, raw_buffer, &inv); ! ! dr_regnum = 2 * (dr_regnum - gdbarch_tdep (current_gdbarch)->DR0_REGNUM); ! printf_filtered ("dr%d\t0x%08x%08x ", ! dr_regnum, ! (int) read_register (first_fp_reg_num), ! (int) read_register (first_fp_reg_num + 1)); ! ! if (inv) ! printf_filtered ("\n"); ! else ! printf_filtered ("(%.9g)\n", dbl); } /* Double precision registers, compact mode. */