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

Jan-Benedict Glaw jbglaw@lug-owl.de
Mon Jul 26 21:11:01 GMT 2021


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

-- 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/gdb/attachments/20210726/a1f8cb86/attachment.sig>


More information about the Gdb mailing list