Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: Pedro Alves <palves@redhat.com>
Cc: Tom Tromey <tom@tromey.com>,  gdb-patches@sourceware.org
Subject: Re: [PATCH] Fix windows-nat.c for -Wnarrowing
Date: Wed, 29 Aug 2018 19:31:00 -0000	[thread overview]
Message-ID: <875zzt3r7u.fsf@tromey.com> (raw)
In-Reply-To: <25d1c3af-a52c-121c-de5c-bbce67471376@redhat.com> (Pedro Alves's	message of "Wed, 29 Aug 2018 20:09:29 +0100")

>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:

Pedro> If you're going to fix it, I'd go with my earlier suggestion:

Pedro>   It'd be easily fixable by removing that terminator
Pedro>   entry and using range-for in the other #if 0 block.

Ok, I know you said not to bother, but ...
Here's what I plan to checkin.

Tom

commit dbf105c6d25c16dee30af67f70bc468afffe6249
Author: Tom Tromey <tom@tromey.com>
Date:   Wed Aug 29 11:37:42 2018 -0600

    Fix windows-nat.c for -Wnarrowing
    
    Sergio pointed out that the Windows builder was failing due to the
    -Wnarrowing patch, with:
    
    ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225477' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
       {-1, GDB_SIGNAL_UNKNOWN}};
                               ^
    ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225725' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
    ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '2147483651' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
    ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '2147483652' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
    ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225614' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
    
    Looking into this, I found two things.
    
    First, in struct xlate_exception, it is better to have "them" be of
    type DWORD, as that's the type actually in use.
    
    Second, struct xlate_exception and xlate are not used in this file,
    because the code in windows_nat_target::resume is #if'd out.
    
    This patch changes the type of "them", but also similarly #if's out
    this object.
    
    In order to avoid a narrowing warning from the -1 entry, at Pedro's
    suggestion I have removed this and changed windows_nat_target::resume
    to use ranged for.
    
    Tested by rebuilding using the mingw toolchain on x86-64 Fedora 28.  I
    also tested it by temporarily removing the "#if 0"s and rebuilding.
    
    gdb/ChangeLog
    2018-08-29  Tom Tromey  <tom@tromey.com>
    
            * windows-nat.c (struct xlate_exception) <them>: Change type to
            DWORD.
            (xlate): Fix formatting.  Remove last entry.
            (struct xlate_exception, xlate): Comment out.
            (windows_nat_target::resume): Use ranged for.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a30dacee4a3..f7e8922cdcd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2018-08-29  Tom Tromey  <tom@tromey.com>
+
+	* windows-nat.c (struct xlate_exception) <them>: Change type to
+	DWORD.
+	(xlate): Fix formatting.  Remove last entry.
+	(struct xlate_exception, xlate): Comment out.
+	(windows_nat_target::resume): Use ranged for.
+
 2018-08-29  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	PR gdb/23555
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index aea502638e0..da663496e5a 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -280,26 +280,29 @@ static const int *mappings;
    a segment register or not.  */
 static segment_register_p_ftype *segment_register_p;
 
+/* See windows_nat_target::resume to understand why this is commented
+   out.  */
+#if 0
 /* This vector maps the target's idea of an exception (extracted
    from the DEBUG_EVENT structure) to GDB's idea.  */
 
 struct xlate_exception
   {
-    int them;
+    DWORD them;
     enum gdb_signal us;
   };
 
-static const struct xlate_exception
-  xlate[] =
+static const struct xlate_exception xlate[] =
 {
   {EXCEPTION_ACCESS_VIOLATION, GDB_SIGNAL_SEGV},
   {STATUS_STACK_OVERFLOW, GDB_SIGNAL_SEGV},
   {EXCEPTION_BREAKPOINT, GDB_SIGNAL_TRAP},
   {DBG_CONTROL_C, GDB_SIGNAL_INT},
   {EXCEPTION_SINGLE_STEP, GDB_SIGNAL_TRAP},
-  {STATUS_FLOAT_DIVIDE_BY_ZERO, GDB_SIGNAL_FPE},
-  {-1, GDB_SIGNAL_UNKNOWN}};
+  {STATUS_FLOAT_DIVIDE_BY_ZERO, GDB_SIGNAL_FPE}
+};
 
+#endif /* 0 */
 
 struct windows_nat_target final : public x86_nat_target<inf_child_target>
 {
@@ -1408,12 +1411,11 @@ windows_nat_target::resume (ptid_t ptid, int step, enum gdb_signal sig)
   structure when passing the exception to the inferior.
   Note that this seems possible in the exception handler itself.  */
 	{
-	  int i;
-	  for (i = 0; xlate[i].them != -1; i++)
-	    if (xlate[i].us == sig)
+	  for (const xlate_exception &x : xlate)
+	    if (x.us == sig)
 	      {
 		current_event.u.Exception.ExceptionRecord.ExceptionCode
-		  = xlate[i].them;
+		  = x.them;
 		continue_status = DBG_EXCEPTION_NOT_HANDLED;
 		break;
 	      }


  reply	other threads:[~2018-08-29 19:31 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-29 17:43 Tom Tromey
2018-08-29 18:39 ` Pedro Alves
2018-08-29 18:58   ` Tom Tromey
2018-08-29 19:01     ` Tom Tromey
2018-08-29 19:09       ` Pedro Alves
2018-08-29 19:31         ` Tom Tromey [this message]
2018-08-29 19:16       ` Eli Zaretskii
2018-08-29 19:22         ` Tom Tromey
2018-08-29 19:29           ` Eli Zaretskii
2018-08-29 19:33             ` Eli Zaretskii
2018-08-29 19:35               ` Tom Tromey
2018-08-29 19:38                 ` Eli Zaretskii
2018-08-29 19:34             ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875zzt3r7u.fsf@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox