This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fixes for type-punning warnings in GCC 4.1


On Mon, Jan 16, 2006 at 04:26:57PM -0200, Alexandre Oliva wrote:
> On Dec 19, 2005, Daniel Jacobowitz <drow@false.org> wrote:
> 
> >> > From: Alexandre Oliva <aoliva@redhat.com>
> >> > Date: Mon, 19 Dec 2005 17:20:48 -0200
> 
> >> > -	num = sscanf (p, "%g%s", (float *) &putithere->typed_val_float.dval,s);
> >> > +	num = sscanf (p, "%g%s", (float *) (void *) &putithere->typed_val_float.dval,s);
> 
> > We should fix it properly, in any case.  The right solution here is
> > pretty apparent: delete the "float" case, and #define appropriate
> > format characters for DOUBLEST in doublest.h, in the same place we
> > typedef DOUBLEST.  Just like GCC's HOST_WIDE_INT_PRINT.
> 
> We can't quite do that because we may have to issue more complex
> command patterns than simply a plain sscanf into the output location.
> I've come up with this macro that defers to a static inline function
> in the complex case.  Is this change acceptable?  Tested on
> amd64-linux-gnu.
> 
> Another alternative that I found uglier would be to define a
> DOUBLEST_SCAN macro and a DOUBLEST_SCAN_TYPE typedef, and always
> declare a variable of DOUBLEST_SCAN_TYPE, scan into it, and then copy
> the scanned value to the given output variable.  This enables people
> to construct more complex scan patterns, but is it worth the ugliness
> and extra copying for the sake of the uncommon `has long double but
> can't scanf it' case?

The output is always a DOUBLEST.  I don't know of any reason why we
should enable HAVE_LONG_DOUBLE if we can't printf and scanf them; would
this be simpler in that case?  Don't make DOUBLEST something we can't
scan or print.

-- 
Daniel Jacobowitz
CodeSourcery


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]