Re: GDB 8.1 build error

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 04/27/2018 07:44 PM, Paul Koning wrote:

> I had deleted the build test directory, so I repeated the operation.  Got a failure again but a completely different one:
> 
> g++ -x c++ -std=gnu++11 -g -O2   -I. -I/Users/pkoning/Downloads/gdb-8.1/gdb -I/Users/pkoning/Downloads/gdb-8.1/gdb/common -I/Users/pkoning/Downloads/gdb-8.1/gdb/config -DLOCALEDIR="\"/usr/local/trunk/share/locale\"" -DHAVE_CONFIG_H -I/Users/pkoning/Downloads/gdb-8.1/gdb/../include/opcode -I/Users/pkoning/Downloads/gdb-8.1/gdb/../opcodes/.. -I/Users/pkoning/Downloads/gdb-8.1/gdb/../readline/.. -I/Users/pkoning/Downloads/gdb-8.1/gdb/../zlib -I../bfd -I/Users/pkoning/Downloads/gdb-8.1/gdb/../bfd -I/Users/pkoning/Downloads/gdb-8.1/gdb/../include -I../libdecnumber -I/Users/pkoning/Downloads/gdb-8.1/gdb/../libdecnumber  -I/Users/pkoning/Downloads/gdb-8.1/gdb/gnulib/import -Ibuild-gnulib/import   -DTUI=1  -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Lib
 rary/Frameworks/Python.framework/Versions/2.7/include/python2.7 -w  -c -o completer.o -MT completer.o -MMD -MP -MF ./.deps/completer.Tpo /Users/pkoning/Downloads/gdb-8.1/gdb/completer.c
> 
> /Users/pkoning/Downloads/gdb-8.1/gdb/completer.c:2041:23: error: 
>       non-constant-expression cannot be narrowed from type 'int' to 'char' in
>       initializer list [-Wc++11-narrowing]
>       char buf[2] = { quote_char () };
>                       ^~~~~~~~~~~~~
> /Users/pkoning/Downloads/gdb-8.1/gdb/completer.c:2041:23: note: insert an
>       explicit cast to silence this issue
>       char buf[2] = { quote_char () };
>                       ^~~~~~~~~~~~~
>                       static_cast<char>( )

We silence those currently for gcc with "-Wno-narrowing" (in gdb/warning.m4).
Looks like clang uses a different spelling for that warning [-Wc++11-narrowing].

Or ... does it?  This:

 https://clang.llvm.org/docs/DiagnosticsReference.html#wnarrowing

says that -Wnarrowing is synonym for -Wc++11-narrowing.  So is that a clang bug?

Adding that to gdb/warning.m4 (and regenerating gdb/configure gdb/gdbserver/configure
should fix it).  That is, until we actual fix the code to not require
silencing the warning (https://sourceware.org/bugzilla/show_bug.cgi?id=23087),
but that's a larger chunk of work.

Oh, wait....  Your build line has no "-W" at all, it has "-w" instead??
How did that happen?

> 
> I then asked specifically for probe.o ("cd gdb && make probe.o"):
> 
> g++ -x c++ -std=gnu++11 -g -O2   -I. -I/Users/pkoning/Downloads/gdb-8.1/gdb -I/Users/pkoning/Downloads/gdb-8.1/gdb/common -I/Users/pkoning/Downloads/gdb-8.1/gdb/config -DLOCALEDIR="\"/usr/local/trunk/share/locale\"" -DHAVE_CONFIG_H -I/Users/pkoning/Downloads/gdb-8.1/gdb/../include/opcode -I/Users/pkoning/Downloads/gdb-8.1/gdb/../opcodes/.. -I/Users/pkoning/Downloads/gdb-8.1/gdb/../readline/.. -I/Users/pkoning/Downloads/gdb-8.1/gdb/../zlib -I../bfd -I/Users/pkoning/Downloads/gdb-8.1/gdb/../bfd -I/Users/pkoning/Downloads/gdb-8.1/gdb/../include -I../libdecnumber -I/Users/pkoning/Downloads/gdb-8.1/gdb/../libdecnumber  -I/Users/pkoning/Downloads/gdb-8.1/gdb/gnulib/import -Ibuild-gnulib/import   -DTUI=1  -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Lib
 rary/Frameworks/Python.framework/Versions/2.7/include/python2.7 -w  -c -o probe.o -MT probe.o -MMD -MP -MF ./.deps/probe.Tpo /Users/pkoning/Downloads/gdb-8.1/gdb/probe.c
> /Users/pkoning/Downloads/gdb-8.1/gdb/probe.c:63:28: error: default
>       initialization of an object of const type 'const any_static_probe_ops'
>       without a user-provided default constructor
> const any_static_probe_ops any_static_probe_ops;
>                            ^
>                                                {}

Right, that's ill-formed, thus a gdb bug.  A const POD must either
be initialized, or have a user-declared default constructor.

So adding an explicit initializer like clang is suggesting should fix it:

  const any_static_probe_ops any_static_probe_ops = {};

Thanks,
Pedro Alves
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.