Re: [RFA] Fix cygwin32 failure introduced by [patch] windows-nat.c: Fix offset problem in signal string handling

Eli Zaretskii
2013-03-27T10:47:03Z

> From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
> Cc: <brobecker@adacore.com>, <gdb-patches@sourceware.org>, <vinschen@redhat.com>
> Date: Wed, 27 Mar 2013 09:54:23 +0100
>
> ../../src/gdb/windows-nat.c: In function 'handle_output_debug_string':
> ../../src/gdb/windows-nat.c:993:16: erreur: assignment makes pointer from integer without a cast

Right. But IMO the casts here are dubious to begin with. strtoull
produces a 64-bit value; casting it to a 32-bit uintptr_t might shut
up the compiler, but it doesn't solve the fundamental problem, which
is that a 64-bit value is being stuffed into a 32-bit wide pointer.

A cleaner way would be something like

sscanf (p, "%p", &x);

If that doesn't satisfy the compiler, either, then the following code,
which explicitly resets should be better than the double casts, IMO:

unsigned long xul;
...
xul = strtoull (p, NULL, 0) & ~((DWORD_PTR)0);
x = (LPCVOID) xul;

P.S. Yes, I hate casts, because they tend to conceal subtle bugs.