[rfa] some -Wformat-nonliteral changes

Andrew Cagney ac131313@redhat.com
Mon Aug 4 14:06:00 GMT 2003


> As promised, here are the easy -Wformat-nonliteral changes.  Most of
> them consist of replacing calls like fprintf(stream, foo) with
> fputs(foo, stream).  A few of them consist of replacing error(msg)
> with error("%s",msg).  And one of them is an actual bug fix - there's
> a call to internal_error that left out __FILE__ and __LINE__.

Insert expression of disbelief:

> -      internal_error ("Error converting character `%d' from `%s' to `%s' "
> +      internal_error (__FILE__, __LINE__,
> +		      "Error converting character `%d' from `%s' to `%s' "
>                        "character set: %s",
>                        from_char, ci->from->name, ci->to->name,
>                        safe_strerror (errno));

The other changes are also, arguably, bug fixes.  There's no guarentee 
that there isn't a % in the buffer.

> Having said that, there's still a lot of warnings triggered by
> -Wformat-nonliteral; some of them are in situations with a fairly easy
> workaround, but some of them are a little more delicate.  I would
> definitely recommend that the -Wformat-nonliteral patch be reverted
> for the time being, because it's breaking compiles for some of us.
> 
> I've tested this with GCC 3.2, i686-pc-linux-gnu, DWARF-2; no new
> regressions.  It also doesn't turn up any regressions on GDB 6.0; I'd
> lean towards applying the internal_error bug fix part of it to the
> branch, but I don't have much of an opinion one way or another about
> applying the entire patch.
> 
> OK to apply?  It should all be obvious, but I might as well have
> another set of eyes proofreading it.

Yes, ok, and yes, the internal_error patch should go onto the branch.

Before reverting -Wformat-nonliteral, I'd like to see exactly what the 
damange is - it's clearly finding bugs.

Andrew




More information about the Gdb-patches mailing list