Making discarded-qualifiers a gcc error instead of warning?
Will Fiveash
will.fiveash at oracle.com
Fri Sep 2 12:49:59 EDT 2016
On Fri, Sep 02, 2016 at 02:24:11AM -0400, Greg Hudson wrote:
> On 09/01/2016 08:23 PM, Will Fiveash wrote:
> > On Thu, Sep 01, 2016 at 05:56:15PM -0500, Will Fiveash wrote:
> >> I'm in the process of making the Solaris compile of MIT krb more strict
> >> and one thing I've noticed in the MIT build environment is that
> >> -Wdiscarded-qualifiers is being treated by gcc as a warning, not an
> >> error. Given there are only three of these types of warnings in the
> >> entire 1.14.3 code base I was wondering if y'all would consider making
> >> discarded-qualifiers an error and adding a cast to the three lines in
> >> the source files that need it?
>
> Sure. Feel free to submit a pull request if you have time to do so;
> otherwise I will try to get around to it.
I'll let you know, thanks.
> > to compile without a hard error (a -Wincompatible-pointer-types warning
> > is issued). Shouldn't this bug also cause gcc to error out?
>
> See:
>
> https://github.com/krb5/krb5/commit/d69a3bd4c1d0c39a1f527c97f12bc53ea0cc1b8b
That sounds good to me.
> Ben wrote:
> > char * is explicitly compatible with every (non-function) pointer type in
> > the C standard. So this particular example should not necessarily error
> > out, though the analogous one with int* should.
>
> I don't believe that's true. You can cast any pointer to char * and
> dereference it without violating strict aliasing (C99 section 6.5
> paragraphs 6-7), but that doesn't mean char * is compatible with char **
> (C99 section 6.7.5.1).
That is my understanding as well. If a function argument is void * on
the other hand then C does allow that function to be called with a
char/int/etc... ** argument (which is why I dislike use of void * as
argument types, it basically disables C static type checking).
--
Will Fiveash
Oracle Solaris Software Engineer
More information about the krbdev
mailing list