Building with recent GCC versions: gdbsupport/gdb_assert.h:35:4: error: 'nonnull' argument 'filename' compared to NULL [-Werror=nonnull-compare]

Jan-Benedict Glaw <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi!

I'm running some CI builds and noticed that, when building GDB with
quite recent GCC versions, it breaks.

With ie. this "gcc-snapshot" GCC from Debian:

/usr/lib/gcc-snapshot/bin/gcc --version
gcc (Debian 20210630-1) 12.0.0 20210630 (experimental) [master revision 6bf383c37e6:93c270320bb:35da8a98026849bd20d16bbf9210ac1d0b44ea6a]

we see:

./configure --target=i686-linux --prefix=/tmp/gdb-i686-linux
[...]
all make V=1 all-gdb
[...]
[all 2021-07-26 20:39:22] /usr/lib/gcc-snapshot/bin/g++ -x c++    -I. -I. -I./config -DLOCALEDIR="\"/tmp/gdb-i686-linux/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../readline/readline/.. -I./../zlib -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber  -I./../gnulib/import -I../gnulib/import -I./.. -I..  -DTUI=1    -I./.. -pthread  -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-variable -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-error=maybe-uninitialized -Wno-mismatched-tags -Wsuggest-override -Wimplicit-fallthrough=3 -Wduplicated-cond -Wshadow=local -Wdeprecated-copy -Wdeprecated-copy-dtor -Wredundant-move -Wmissing-declarations -Wstrict-null-sentinel -Wformat -Wformat-nonliteral -Werror -g -O2   -c -o compile/compile.o -MT compile/compile.o -MMD -MP -MF compile/.deps/compile.Tpo compile/compile.c
[all 2021-07-26 20:39:26] In file included from ./../gdbsupport/common-defs.h:126,
[all 2021-07-26 20:39:26]                  from ./defs.h:28,
[all 2021-07-26 20:39:26]                  from compile/compile.c:20:
[all 2021-07-26 20:39:26] ./../gdbsupport/gdb_unlinker.h: In constructor 'gdb::unlinker::unlinker(const char*)':
[all 2021-07-26 20:39:26] ./../gdbsupport/gdb_assert.h:35:4: error: 'nonnull' argument 'filename' compared to NULL [-Werror=nonnull-compare]
[all 2021-07-26 20:39:26]    35 |   ((void) ((expr) ? 0 :                                                       \
[all 2021-07-26 20:39:26]       |   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[all 2021-07-26 20:39:26]    36 |            (gdb_assert_fail (#expr, __FILE__, __LINE__, FUNCTION_NAME), 0)))
[all 2021-07-26 20:39:26]       |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[all 2021-07-26 20:39:26] ./../gdbsupport/gdb_unlinker.h:38:5: note: in expansion of macro 'gdb_assert'
[all 2021-07-26 20:39:26]    38 |     gdb_assert (filename != NULL);
[all 2021-07-26 20:39:26]       |     ^~~~~~~~~~
[all 2021-07-26 20:39:27] cc1plus: all warnings being treated as errors
[all 2021-07-26 20:39:27] make[1]: *** [Makefile:1642: compile/compile.o] Error 1
[all 2021-07-26 20:39:27] make[1]: Leaving directory '/var/lib/laminar/run/gdb-i686-linux/4/binutils-gdb/gdb'
[all 2021-07-26 20:39:27] make: *** [Makefile:11410: all-gdb] Error 2


I also discussed this on the GCC patches mailing list
(https://gcc.gnu.org/pipermail/gcc-patches/2021-July/575568.html),
where Martin suggested that this should be fixed here in GDB.

Any thoughts about this?

Thanks,
  Jan-Benedict

--
signature.asc (application/pgp-signature, 195 B)
-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQQlDTvPcScNjKREqWEdvV51g5nhuwUCYP8k4gAKCRAdvV51g5nh
u+5YAJ4jy6ZNg41qIAJm/3RtXWI4Lbb5jwCePNp3FjcIXrFxXfhNYgN+N1KooJk=
=kax3
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.