gdb/head build, with GCC10, FAILs @ "error: expected constructor, destructor, or type conversion before ‘(’ token" ?

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

gdb/head build, with GCC10, FAILs @ "error: expected constructor, destructor, or type conversion before ‘(’ token" ?

Sourceware - gdb list mailing list
building

        cd src/binutils-gdb
        git log | head -n 5
                commit 33aa3c10f663b834c9573ede439b2df3c92f0cfe
                Author: Tom Tromey <[hidden email]>
                Date:   Wed Mar 25 10:26:38 2020 -0600
                ...

with

        gcc --version
                gcc (SUSE Linux) 10.0.1 20200324 (experimental) [revision 75c24a08d697d6442fe6c26142f0559f803af977]

config's

        export LDFLAGS="-L/usr/local/pyenv/versions/3.8-dev/lib -Wl,-rpath,/usr/local/pyenv/versions/3.8-dev/lib"
        export LIBS="-lpython3.8"
        ./configure \
         --prefix=/usr/local/gdb-test \
         --with-python=/usr/local/pyenv/versions/3.8-dev

no errors.

make FAILs @ gdbsupport/gdb_proc_service.h

        make V=1
                ...
                /usr/bin/g++-10  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -std=c++17    -I. -I. -I./../gdb/regformats -I./.. -I./../include -I./../gdb -I./../gnulib/import -I../gnulib/import -I./.. -I..  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -D_FORTIFY_SOURCE=2 -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 -DGDBSERVER -c -o linux-low.o -MT linux-low.o -MMD -MP -MF ./.deps/linux-low.Tpo linux-low.cc
                In file included from gdb_proc_service.h:22,
                                 from linux-low.h:27,
                                 from linux-low.cc:20:
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:179:1: note: in expansion of macro ‘PS_EXPORT’
                  179 | PS_EXPORT (ps_get_thread_area);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:180:1: note: in expansion of macro ‘PS_EXPORT’
                  180 | PS_EXPORT (ps_getpid);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:181:1: note: in expansion of macro ‘PS_EXPORT’
                  181 | PS_EXPORT (ps_lcontinue);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:182:1: note: in expansion of macro ‘PS_EXPORT’
                  182 | PS_EXPORT (ps_lgetfpregs);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:183:1: note: in expansion of macro ‘PS_EXPORT’
                  183 | PS_EXPORT (ps_lgetregs);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:184:1: note: in expansion of macro ‘PS_EXPORT’
                  184 | PS_EXPORT (ps_lsetfpregs);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:185:1: note: in expansion of macro ‘PS_EXPORT’
                  185 | PS_EXPORT (ps_lsetregs);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:186:1: note: in expansion of macro ‘PS_EXPORT’
                  186 | PS_EXPORT (ps_lstop);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:187:1: note: in expansion of macro ‘PS_EXPORT’
                  187 | PS_EXPORT (ps_pcontinue);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:188:1: note: in expansion of macro ‘PS_EXPORT’
                  188 | PS_EXPORT (ps_pdread);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:189:1: note: in expansion of macro ‘PS_EXPORT’
                  189 | PS_EXPORT (ps_pdwrite);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:190:1: note: in expansion of macro ‘PS_EXPORT’
                  190 | PS_EXPORT (ps_pglobal_lookup);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:191:1: note: in expansion of macro ‘PS_EXPORT’
                  191 | PS_EXPORT (ps_pstop);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:192:1: note: in expansion of macro ‘PS_EXPORT’
                  192 | PS_EXPORT (ps_ptread);
                      | ^~~~~~~~~
                ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
                  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
                      |                                                  ^
                ./../gdbsupport/gdb_proc_service.h:193:1: note: in expansion of macro ‘PS_EXPORT’
                  193 | PS_EXPORT (ps_ptwrite);
                      | ^~~~~~~~~
                make[2]: *** [Makefile:545: linux-low.o] Error 1
                make[2]: Leaving directory '/usr/local/src/binutils-gdb/gdbserver'
                make[1]: *** [Makefile:11295: all-gdbserver] Error 2
                make[1]: Leaving directory '/usr/local/src/binutils-gdb'
                make: *** [Makefile:854: all] Error 2


not yet clear if that's a bug in gdb source, or an issue with (as yet, still unreleased) GCC10

Reply | Threaded
Open this post in threaded view
|

Re: gdb/head build, with GCC10, FAILs @ "error: expected constructor, destructor, or type conversion before ‘(’ token" ?

Tom de Vries
On 26-03-2020 00:25, PGNet Dev via Gdb wrote:

> building
>
> cd src/binutils-gdb
> git log | head -n 5
> commit 33aa3c10f663b834c9573ede439b2df3c92f0cfe
> Author: Tom Tromey <[hidden email]>
> Date:   Wed Mar 25 10:26:38 2020 -0600
> ...
>
> with
>
> gcc --version
> gcc (SUSE Linux) 10.0.1 20200324 (experimental) [revision 75c24a08d697d6442fe6c26142f0559f803af977]
>
> config's
>
> export LDFLAGS="-L/usr/local/pyenv/versions/3.8-dev/lib -Wl,-rpath,/usr/local/pyenv/versions/3.8-dev/lib"
> export LIBS="-lpython3.8"
> ./configure \
> --prefix=/usr/local/gdb-test \
> --with-python=/usr/local/pyenv/versions/3.8-dev
>
> no errors.
>
> make FAILs @ gdbsupport/gdb_proc_service.h
>
> make V=1
> ...
> /usr/bin/g++-10  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -std=c++17    -I. -I. -I./../gdb/regformats -I./.. -I./../include -I./../gdb -I./../gnulib/import -I../gnulib/import -I./.. -I..  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -D_FORTIFY_SOURCE=2 -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 -DGDBSERVER -c -o linux-low.o -MT linux-low.o -MMD -MP -MF ./.deps/linux-low.Tpo linux-low.cc

I can reproduce this by using CXXFLAGS=-std=c++17 (which for some reason
I don't see mentioned in the build settings description above).

> In file included from gdb_proc_service.h:22,
>                 from linux-low.h:27,
>                 from linux-low.cc:20:
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:179:1: note: in expansion of macro ‘PS_EXPORT’
>  179 | PS_EXPORT (ps_get_thread_area);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:180:1: note: in expansion of macro ‘PS_EXPORT’
>  180 | PS_EXPORT (ps_getpid);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:181:1: note: in expansion of macro ‘PS_EXPORT’
>  181 | PS_EXPORT (ps_lcontinue);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:182:1: note: in expansion of macro ‘PS_EXPORT’
>  182 | PS_EXPORT (ps_lgetfpregs);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:183:1: note: in expansion of macro ‘PS_EXPORT’
>  183 | PS_EXPORT (ps_lgetregs);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:184:1: note: in expansion of macro ‘PS_EXPORT’
>  184 | PS_EXPORT (ps_lsetfpregs);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:185:1: note: in expansion of macro ‘PS_EXPORT’
>  185 | PS_EXPORT (ps_lsetregs);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:186:1: note: in expansion of macro ‘PS_EXPORT’
>  186 | PS_EXPORT (ps_lstop);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:187:1: note: in expansion of macro ‘PS_EXPORT’
>  187 | PS_EXPORT (ps_pcontinue);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:188:1: note: in expansion of macro ‘PS_EXPORT’
>  188 | PS_EXPORT (ps_pdread);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:189:1: note: in expansion of macro ‘PS_EXPORT’
>  189 | PS_EXPORT (ps_pdwrite);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:190:1: note: in expansion of macro ‘PS_EXPORT’
>  190 | PS_EXPORT (ps_pglobal_lookup);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:191:1: note: in expansion of macro ‘PS_EXPORT’
>  191 | PS_EXPORT (ps_pstop);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:192:1: note: in expansion of macro ‘PS_EXPORT’
>  192 | PS_EXPORT (ps_ptread);
>      | ^~~~~~~~~
> ./../gdbsupport/gdb_proc_service.h:177:50: error: expected constructor, destructor, or type conversion before ‘(’ token
>  177 |   __attribute__((visibility ("default"))) typeof (SYM) SYM
>      |                                                  ^
> ./../gdbsupport/gdb_proc_service.h:193:1: note: in expansion of macro ‘PS_EXPORT’
>  193 | PS_EXPORT (ps_ptwrite);
>      | ^~~~~~~~~
> make[2]: *** [Makefile:545: linux-low.o] Error 1
> make[2]: Leaving directory '/usr/local/src/binutils-gdb/gdbserver'
> make[1]: *** [Makefile:11295: all-gdbserver] Error 2
> make[1]: Leaving directory '/usr/local/src/binutils-gdb'
> make: *** [Makefile:854: all] Error 2
>
>
> not yet clear if that's a bug in gdb source, or an issue with (as yet, still unreleased) GCC10

I reproduced this using the exact same gcc, as well as with gcc-7, gcc-8
and gcc-9.

Thanks,
- Tom
Reply | Threaded
Open this post in threaded view
|

Re: gdb/head build, with GCC10, FAILs @ "error: expected constructor, destructor, or type conversion before ‘(’ token" ?

Tom de Vries
On 26-03-2020 08:17, Tom de Vries wrote:

> On 26-03-2020 00:25, PGNet Dev via Gdb wrote:
>> building
>>
>> cd src/binutils-gdb
>> git log | head -n 5
>> commit 33aa3c10f663b834c9573ede439b2df3c92f0cfe
>> Author: Tom Tromey <[hidden email]>
>> Date:   Wed Mar 25 10:26:38 2020 -0600
>> ...
>>
>> with
>>
>> gcc --version
>> gcc (SUSE Linux) 10.0.1 20200324 (experimental) [revision 75c24a08d697d6442fe6c26142f0559f803af977]
>>
>> config's
>>
>> export LDFLAGS="-L/usr/local/pyenv/versions/3.8-dev/lib -Wl,-rpath,/usr/local/pyenv/versions/3.8-dev/lib"
>> export LIBS="-lpython3.8"
>> ./configure \
>> --prefix=/usr/local/gdb-test \
>> --with-python=/usr/local/pyenv/versions/3.8-dev
>>
>> no errors.
>>
>> make FAILs @ gdbsupport/gdb_proc_service.h
>>
>> make V=1
>> ...
>> /usr/bin/g++-10  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -std=c++17    -I. -I. -I./../gdb/regformats -I./.. -I./../include -I./../gdb -I./../gnulib/import -I../gnulib/import -I./.. -I..  -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -D_FORTIFY_SOURCE=2 -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 -DGDBSERVER -c -o linux-low.o -MT linux-low.o -MMD -MP -MF ./.deps/linux-low.Tpo linux-low.cc
>
> I can reproduce this by using CXXFLAGS=-std=c++17 (which for some reason
> I don't see mentioned in the build settings description above).
>

g++-10 has as default language -std=gnu++14. By compiling with
-std=c++17 you turn off support for GNU extensions, and typeof is the
extension that's used here.

So, if you want to not run into this particular error, you can use
-std=gnu++17.

However, I tried using that setting and ran into another error:
...
/data/gdb_versions/devel/src/gdb/inferior.h:82:12: error: 'bool
std::uncaught_exception()' is deprecated [-Werror=deprecated-declarations]
   82 |  if (!std::uncaught_exception ())
...

So, I'm guessing this is not a common build configuration.

Thanks,
- Tom
Reply | Threaded
Open this post in threaded view
|

Re: gdb/head build, with GCC10, FAILs @ "error: expected constructor, destructor, or type conversion before ‘(’ token" ?

Sourceware - gdb list mailing list
On 3/26/20 1:08 AM, Tom de Vries wrote:
>> I can reproduce this by using CXXFLAGS=-std=c++17

simple enough to 'fix' by removing all the 2nd-guessing ...

bumping to latest head

        cd binutils-gdb
        git log | head -n 5
                commit a879b4d5a683f8dbebae8cf98297ee4a2db2e9e1
                Author: John Baldwin <[hidden email]>
                Date:   Thu Mar 26 09:48:28 2020 -0700

                    Support AT_BSDFLAGS on FreeBSD.

un-setting any env vars, avoiding non-defaults,

        unset LD CC CPP LDFLAGS CFLAGS CXXFLAGS CPPFLAGS

config for local python

        export LDFLAGS="-L/usr/local/pyenv/versions/3.8-dev/lib -Wl,-rpath,/usr/local/pyenv/versions/3.8-dev/lib"
        export LIBSS="-lpython3.8"
        ./configure \
         --prefix=/usr/local/gdb-test \
         --with-python=/usr/local/pyenv/versions/3.8-dev

builds

        make V=1
        make install

with no errors

built bin's linked to correct python

        ldd /usr/local/gdb-test/bin/gdb | grep py
                libpython3.8.so.1.0 => /usr/local/pyenv/versions/3.8-dev/lib/libpython3.8.so.1.0 (0x00007f85ff0c5000)

and execs ok

        /usr/local/gdb-test/bin/gdb --version
                GNU gdb (GDB) 10.0.50.20200326-git


thx!