From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31190 invoked by alias); 19 Apr 2011 19:01:12 -0000 Received: (qmail 31176 invoked by uid 22791); 19 Apr 2011 19:01:11 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-ey0-f169.google.com (HELO mail-ey0-f169.google.com) (209.85.215.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Apr 2011 19:00:55 +0000 Received: by eyd9 with SMTP id 9so2001eyd.0 for ; Tue, 19 Apr 2011 12:00:53 -0700 (PDT) Received: by 10.14.136.73 with SMTP id v49mr2343760eei.235.1303239653167; Tue, 19 Apr 2011 12:00:53 -0700 (PDT) Received: from [192.168.2.100] (ip82-139-82-5.lijbrandt.net [82.139.82.5]) by mx.google.com with ESMTPS id k51sm121673eei.24.2011.04.19.12.00.51 (version=SSLv3 cipher=OTHER); Tue, 19 Apr 2011 12:00:52 -0700 (PDT) Message-ID: <4DADDBE2.8050704@gmail.com> Date: Tue, 19 Apr 2011 19:01:00 -0000 From: "Baars, M.J." User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 MIME-Version: 1.0 To: Tom Tromey CC: gdb@sourceware.org, gdb-patches@sourceware.org, Mark Kettenis Subject: Re: print_npx_status_word References: <4DA7166F.10302@gmail.com> <4DA7ED79.3000400@gmail.com> <4DA87235.7060003@gmail.com> <4DA87479.50203@gmail.com> <4DA93270.6030708@gmail.com> <201104160824.p3G8ONWV006175@glazunov.sibelius.xs4all.nl> <4DA99DA1.2090708__5871.13250880993$1302961604$gmane$org@gmail.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------090800060409030508040304" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-04/txt/msg00337.txt.bz2 This is a multi-part message in MIME format. --------------090800060409030508040304 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1803 On 04/18/2011 07:03 PM, Tom Tromey wrote: >>>>>> "Michael" == Baars, M J writes: Hi Tom, Thank you for your reply, for your convenience I attached a slightly different version already. > Michael> Oops... did I remove one of your entries in the ChangeLog? :) > > As others have noted, ChangeLog is "prepend only". > We generally don't edit old entries. As I stated before, it would be unwise though to keep unmaintained function names in the log entries. You can apply the changes optionally, but I strongly advise against retaining the original log entries. > Michael> +struct > Michael> +{ > Michael> + char *tag; > Michael> + char *description; > Michael> +} > > Wrong indentation here, should be 2 spaces. > Fields should have descriptive comments. > I think the struct should have a tag and be terminated here. > Also the fields should be "const". Here you are completely right, I added the 'const' operators. If you don't like the indentation, I suggest you instead modify you tab-settings locally. Personally I'm used programming with a little more space than. > Michael> +static const npx_exception_flags[6] = > Michael> + > Michael> +{ > Michael> + {"IE", "invalid operation"}, > > Wrong indentation. This is a problem in the whole patch. > > Michael> +// print the numeric coprocessor extension (npx) status word > > No `//' comments. I have taken this into account, does that also hold for inline comments? > Comments should be full sentences, see GNU standards. > > Michael> +void print_npx_status_word(uint16_t npx_status_word, struct ui_file *file) > > Newline after "void". > Space before "(" -- a problem in a few spots. > Again, GNU standards. Hope you'll make an exception here, I like the code better this way :) > Tom Regards, Michael. --------------090800060409030508040304 Content-Type: text/x-patch; name="ChangeLog.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ChangeLog.diff" Content-length: 498 --- ./gdb-7.2/gdb/ChangeLog 2010-09-03 01:37:25.000000000 +0200 +++ ./gdb-7.2.2/gdb/ChangeLog 2011-04-16 22:56:35.359736001 +0200 @@ -1,3 +1,11 @@ +2011-04-16 Ir. M.J. Baars + + * i387-tdep.c (print_npx_control_word) - new function + +2011-04-14 Ir. M.J. Baars + + * i387-tdep.c (print_npx_status_word) - new function + 2010-09-02 Joel Brobecker * NEWS: Replace "Changes since GDB 7.1" by "Changes in GDB 7.2". --------------090800060409030508040304 Content-Type: text/x-patch; name="ChangeLog-1999.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ChangeLog-1999.diff" Content-length: 678 --- ./gdb-7.2/gdb/ChangeLog-1999 2001-01-12 04:44:31.000000000 +0100 +++ ./gdb-7.2.2/gdb/ChangeLog-1999 2011-04-16 22:53:25.543736000 +0200 @@ -581,9 +581,9 @@ Wed Dec 8 15:29:48 1999 Andrew Cagney Patch from Mark Kettenis : * config/i386/tm-i386.h (FLOAT_INFO): New define. - * i387-tdep.c (print_i387_value, print_i387_ext, - print_i387_status_word, print_i387_control_word, i387_float_info): - New functions, used to implement generic `info float' command. + + * i387-tdep.c (print_i387_value,print_i387_ext,i387_float_info): + New functions, used to implement generic `info float' command. 1999-12-06 Christopher Faylor --------------090800060409030508040304 Content-Type: text/x-patch; name="ChangeLog-2001.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ChangeLog-2001.diff" Content-length: 557 --- ./gdb-7.2/gdb/ChangeLog-2001 2002-01-06 05:37:53.000000000 +0100 +++ ./gdb-7.2.2/gdb/ChangeLog-2001 2011-04-14 15:55:22.631948002 +0200 @@ -8076,11 +8076,6 @@ Wed Apr 4 21:48:42 2001 Christopher Fa * MAINTAINERS: Add myself to write after approval list. -2001-03-09 Mark Kettenis - - * i387-tdep.c (print_i387_status_word): Fix printing of Stack - fault flag. It is bit 6 of the x87 FPU status word, not bit 7. - 2001-03-08 Andrew Cagney * configure.host (m88*-harris-cxux*): Mark as obsolete. --------------090800060409030508040304 Content-Type: text/x-patch; name="ChangeLog-2002.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ChangeLog-2002.diff" Content-length: 1057 --- ./gdb-7.2/gdb/ChangeLog-2002 2004-04-24 00:15:17.000000000 +0200 +++ ./gdb-7.2.2/gdb/ChangeLog-2002 2011-04-16 22:54:05.451736001 +0200 @@ -5396,12 +5396,14 @@ Fri Sep 13 07:42:09 2002 Andrew Cagney * config/i386/tm-i386.h: Don't include "regcache.h". * i387-tdep.h (i387_print_float_info): New prototype. - * i387-tdep.c (print_i387_value, print_i387_ext, - print_i387_status_word, print_i387_control_word): Add `struct - ui_file *' argument and use it for output. - (i387_print_float_info): Renamed from i387_float_info. Add - `struct gdbarch *' and `struct ui_file *' arguments and use the - latter for output. + + * i387-tdep.c (print_i387_value,print_i387_ext): + Add `struct ui_file *' argument and use it for output. + + * i387-tdep.c (i387_print_float_info): + Renamed from i387_float_info. Add `struct gdbarch *' and `struct ui_file *' arguments + and use the latter for output. + * i386-tdep.c: Include "i387-tdep.h". (i386_gdbarch_init): Set print_float_info. * config/i386/tm-i386.h (i387_float_info): Remove prototype. --------------090800060409030508040304 Content-Type: text/x-patch; name="ChangeLog-2004.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ChangeLog-2004.diff" Content-length: 628 --- ./gdb-7.2/gdb/ChangeLog-2004 2006-10-24 22:23:56.000000000 +0200 +++ ./gdb-7.2.2/gdb/ChangeLog-2004 2011-04-16 22:54:31.555736002 +0200 @@ -3468,9 +3468,9 @@ * ui-out.c (ui_out_field_core_addr): Ditto. * breakpoint.c (breakpoint_adjustment_warning): Ditto. * exec.c (print_section_info): Ditto. - * i387-tdep.c (print_i387_status_word): Ditto. - (print_i387_control_word): Ditto. - (i387_print_float_info): Ditto. + + * i387-tdep.c (i387_print_float_info): Ditto. + * maint.c (maint_print_section_info): Ditto. * solib.c (info_sharedlibrary_command): Ditto. * somsolib.c (som_sharedlibrary_info_command): Ditto. --------------090800060409030508040304 Content-Type: text/x-patch; name="i387-tdep.c.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="i387-tdep.c.diff" Content-length: 8147 --- ./gdb-7.2/gdb/i387-tdep.c 2010-05-05 21:30:36.000000000 +0200 +++ ./gdb-7.2.2/gdb/i387-tdep.c 2011-04-19 20:42:56.691027998 +0200 @@ -36,6 +36,106 @@ #include "i387-tdep.h" #include "i386-xstate.h" +struct +{ + const char *tag; + const char *description; +} + +static const npx_exception_flags[6] = + +{ + {"IE", "invalid operation"}, + {"DE", "denormalized operand"}, + {"ZE", "zero divide"}, + {"OE", "overflow"}, + {"UE", "underflow"}, + {"PE", "precision"} +}; + +struct +{ + const char *tag; + const char *description; +} + +static const npx_exception_mask[6] = + +{ + {"IM", "invalid operation"}, + {"DM", "denormalized operand"}, + {"ZM", "zero divide"}, + {"OM", "overflow"}, + {"UM", "underflow"}, + {"PM", "precision"} +}; + +static const char *npx_precision_control[4] = +{ + "24-bits (single precision)", + "(reserved)", + "53-bits (double precision)", + "64-bits (extended precision)" +}; + +static const char *npx_rounding_control[4] = +{ + "round to nearest or even", + "round down (towards -inf)", + "round up (toward +inf)", + "chop (truncate toward zero)" +}; + +/* print the numeric coprocessor extension (npx) status word */ +void print_npx_status_word(uint16_t npx_status_word, struct ui_file *file) +{ + fprintf_filtered(file, "status word : 0x%04X\n", npx_status_word); + + fprintf_filtered(file, " exception flags : "); + + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0005) & 0x0001) ? npx_exception_flags[5].tag : " "); // precision + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0004) & 0x0001) ? npx_exception_flags[4].tag : " "); // underflow + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0003) & 0x0001) ? npx_exception_flags[3].tag : " "); // overflow + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0002) & 0x0001) ? npx_exception_flags[2].tag : " "); // zero divide + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0001) & 0x0001) ? npx_exception_flags[1].tag : " "); // denormalized operand + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0000) & 0x0001) ? npx_exception_flags[0].tag : " "); // invalid operation + fprintf_filtered(file, "\n"); + + fprintf_filtered(file, " stack fault : %u\n", ((npx_status_word >> 0x0006) & 0x0001)); + fprintf_filtered(file, " error summary status : %u\n", ((npx_status_word >> 0x0007) & 0x0001)); + fprintf_filtered(file, " busy : %u\n", ((npx_status_word >> 0x000F) & 0x0001)); + fprintf_filtered(file, " top of stack pointer : %u\n", ((npx_status_word >> 0x000B) & 0x0007)); + + fprintf_filtered(file, " condition code : "); + + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x000E) & 0x0001) ? "C3" : " "); + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x000A) & 0x0001) ? "C2" : " "); + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0009) & 0x0001) ? "C1" : " "); + fprintf_filtered(file, "%s ", ((npx_status_word >> 0x0008) & 0x0001) ? "C0" : " "); + fprintf_filtered(file, "\n"); +} + +/* print the numeric coprocessor extension (npx) control word */ +void print_npx_control_word(uint16_t npx_control_word, struct ui_file *file) +{ + fprintf_filtered(file, "control word : 0x%04X\n", npx_control_word); + + fprintf_filtered(file, " exception mask : "); + + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0005) & 0x0001) ? npx_exception_mask[5].tag : " "); // precision + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0004) & 0x0001) ? npx_exception_mask[4].tag : " "); // underflow + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0003) & 0x0001) ? npx_exception_mask[3].tag : " "); // overflow + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0002) & 0x0001) ? npx_exception_mask[2].tag : " "); // zero divide + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0001) & 0x0001) ? npx_exception_mask[1].tag : " "); // denormalized operand + fprintf_filtered(file, "%s ", ((npx_control_word >> 0x0000) & 0x0001) ? npx_exception_mask[0].tag : " "); // invalid operation + fprintf_filtered(file, "\n"); + + fprintf_filtered(file, " precision control (PC) : %s\n", npx_precision_control[((npx_control_word >> 0x0008) & 0x0003)]); + fprintf_filtered(file, " rounding control (RC) : %s\n", npx_rounding_control[((npx_control_word >> 0x000A) & 0x0003)]); + + fprintf_filtered(file, " infinity control : %u\n", ((npx_control_word >> 0x000C) & 0x0001)); +} + /* Print the floating point number specified by RAW. */ static void @@ -114,88 +214,6 @@ print_i387_ext (struct gdbarch *gdbarch, fputs_filtered (" Unsupported", file); } -/* Print the status word STATUS. */ - -static void -print_i387_status_word (unsigned int status, struct ui_file *file) -{ - fprintf_filtered (file, "Status Word: %s", - hex_string_custom (status, 4)); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " "); - fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " "); - fprintf_filtered (file, " %s", (status & 0x0004) ? "ZE" : " "); - fprintf_filtered (file, " %s", (status & 0x0008) ? "OE" : " "); - fprintf_filtered (file, " %s", (status & 0x0010) ? "UE" : " "); - fprintf_filtered (file, " %s", (status & 0x0020) ? "PE" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0080) ? "ES" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0040) ? "SF" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0100) ? "C0" : " "); - fprintf_filtered (file, " %s", (status & 0x0200) ? "C1" : " "); - fprintf_filtered (file, " %s", (status & 0x0400) ? "C2" : " "); - fprintf_filtered (file, " %s", (status & 0x4000) ? "C3" : " "); - - fputs_filtered ("\n", file); - - fprintf_filtered (file, - " TOP: %d\n", ((status >> 11) & 7)); -} - -/* Print the control word CONTROL. */ - -static void -print_i387_control_word (unsigned int control, struct ui_file *file) -{ - fprintf_filtered (file, "Control Word: %s", - hex_string_custom (control, 4)); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " "); - fprintf_filtered (file, " %s", (control & 0x0002) ? "DM" : " "); - fprintf_filtered (file, " %s", (control & 0x0004) ? "ZM" : " "); - fprintf_filtered (file, " %s", (control & 0x0008) ? "OM" : " "); - fprintf_filtered (file, " %s", (control & 0x0010) ? "UM" : " "); - fprintf_filtered (file, " %s", (control & 0x0020) ? "PM" : " "); - - fputs_filtered ("\n", file); - - fputs_filtered (" PC: ", file); - switch ((control >> 8) & 3) - { - case 0: - fputs_filtered ("Single Precision (24-bits)\n", file); - break; - case 1: - fputs_filtered ("Reserved\n", file); - break; - case 2: - fputs_filtered ("Double Precision (53-bits)\n", file); - break; - case 3: - fputs_filtered ("Extended Precision (64-bits)\n", file); - break; - } - - fputs_filtered (" RC: ", file); - switch ((control >> 10) & 3) - { - case 0: - fputs_filtered ("Round to nearest\n", file); - break; - case 1: - fputs_filtered ("Round down\n", file); - break; - case 2: - fputs_filtered ("Round up\n", file); - break; - case 3: - fputs_filtered ("Round toward zero\n", file); - break; - } -} - /* Print out the i387 floating point state. Note that we ignore FRAME in the code below. That's OK since floating-point registers are never saved on the stack. */ @@ -268,8 +286,12 @@ i387_print_float_info (struct gdbarch *g fputs_filtered ("\n", file); - print_i387_status_word (fstat, file); - print_i387_control_word (fctrl, file); + print_npx_status_word(fstat, file); + fprintf_filtered(file, "\n"); + + print_npx_control_word(fctrl, file); + fprintf_filtered(file, "\n"); + fprintf_filtered (file, "Tag Word: %s\n", hex_string_custom (ftag, 4)); fprintf_filtered (file, "Instruction Pointer: %s:", --------------090800060409030508040304--