[Pkg-xfce-devel] Bug#811608: FTBFS with GCC 6: nonnull argument compared to NULL

Martin Michlmayr tbm at hpe.com
Thu Jan 21 23:31:45 UTC 2016


* Yves-Alexis Perez <corsac at debian.org> [2016-01-20 08:25]:
> > Note that only the first error is reported; there might be more.  You
> > can find a snapshot of GCC 6 in experimental.  To build with GCC 6,
> > you can set CC=gcc-6 CXX=g++-6 explicitly.
> 
> Could you add a bit more information about this, especially the new options
> etc?

You can find some of that here:
https://gcc.gnu.org/gcc-6/changes.html

> > > glib-2.0 
> > > libsystem.c: In function 'getpwnam':
> > > libsystem.c:859:14: error: nonnull argument 'name' compared to NULL [-Werror=nonnull]
> > >      if (name == NULL)
> 
> This looks spurious. It's usually considered a *good* idea to check for NULL
> pointer, so I don't understand the error. Also, the code is:

I'm no expert with this, but /usr/include/pwd.h defines:
extern struct passwd *getpwnam (const char *__name) __nonnull ((1));

Looking at the preprocessed source of libsystem I see this e.g.
extern struct passwd *getpwnam (const char *__name) __attribute__ ((__nonnull__ (1)));
extern int __attribute__((__nonnull__ (1))) pam_end(pam_handle_t *pamh, int pam_status);

so it's marked as __nonnull__ but then you're checking if it's NULL,
and this is what this warning is about (error because of -Werror).

You can find more info about this warning and the rationale here:
https://gcc.gnu.org/ml/gcc-patches/2015-09/msg00621.html

> So:
> 
> - I fail to see how the compiler can statically know name is NULL

Because of __nonnull__.

-- 
Martin Michlmayr
Linux for HPE Helion, Hewlett Packard Enterprise



More information about the Pkg-xfce-devel mailing list