Re: GDB 8.1 build error

Simon Marchi
2018-04-27T19:01:41Z

On 2018-04-27 14:44, Paul Koning wrote:
> 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/Library/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;
> ^
> {}
>
>
>
> Paul-Konings-MacBook-Pro:buildgdb pkoning$ gcc --version
> Configured with:
> --prefix=/Applications/Xcode.app/Contents/Developer/usr
> --with-gxx-include-dir=/usr/include/c++/4.2.1
> Apple LLVM version 7.3.0 (clang-703.0.31)
> Target: x86_64-apple-darwin17.5.0
> Thread model: posix
> InstalledDir:
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
> Paul-Konings-MacBook-Pro:buildgdb pkoning$ head config.log
> This file contains any messages produced by compilers while
> running configure, to aid debugging if configure makes a mistake.
>
> It was created by configure, which was
> generated by GNU Autoconf 2.64. Invocation command line was
>
> $ /Users/pkoning/Downloads/gdb-8.1/configure
> --prefix=/usr/local/trunk --disable-build-warnings
>
>
> OS is Mac OS 10.13.4.
>
> These appear to be LLVM incompatibilities; if I feed those command
> lines to (real) GCC 8.0, just built yesterday from current trunk, they
> compile cleanly.
>
> paul

This seems to be a bogus error that was fixed in clang 3.9:

https://stackoverflow.com/questions/7411515/why-does-c-require-a-user-provided-default-constructor-to-default-construct-a?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

You Apple LLVM 7.3.0 seems to map to upstream clang 3.8.0:

https://en.wikipedia.org/wiki/Xcode#Latest_versions

I indeed get the same error if I try building the file with clang 3.8 on
Linux:

$ clang++-3.8 -x c++ -std=gnu++11 -g3 -O0 <snip>
/home/emaisin/src/binutils-gdb/gdb/probe.c
/home/emaisin/src/binutils-gdb/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;
^

If compatibility with clang 3.8 is really important to you, we could
always add an empty constructor to that class. Otherwise, if it's easy
for you to update your Xcode, I'd say try that first.

Simon