GNU bug report logs -
#70935
Support C++17 compilers in the C++ tests
Previous Next
Reported by: Bruno Haible <bruno <at> clisp.org>
Date: Tue, 14 May 2024 12:06:01 UTC
Severity: normal
Done: Ileana Dumitrescu <ileanadumitrescu95 <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Mon, 1 Jul 2024 18:55:32 +0300
with message-id <e5c7587d-3cd5-41f4-94bb-309f6d2f5461 <at> gmail.com>
and subject line Re: bug#70935: Support C++17 compilers in the C++ tests
has caused the debbugs.gnu.org bug report #70935,
regarding Support C++17 compilers in the C++ tests
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
70935: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70935
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
Hi,
Running the libtool tests on Ubuntu 22.04, I saw this test output:
Constructors.
142: C++ static constructors ok
143: C++ exception handling skipped (exceptions.at:361)
It sounds odd that a C++ test gets skipped when a perfectly fine C++ compiler
is present. So I investigated...
The log file of the respective test is:
--------------------------------------------------------------------------------
# -*- compilation -*-
143. exceptions.at:24: testing C++ exception handling ...
./exceptions.at:33: case $LIBLTDL in #(
*/_inst/lib/*) test -f "$LIBLTDL" || (exit 77) ;;
esac
stdout:
./exceptions.at:361: $CXX $CPPFLAGS $CXXFLAGS -DUSING_COMMON_DLL -DUSING_MODULE_DLL -DUSING_LIB_DLL -c main.cpp || exit 77
stderr:
In file included from main.cpp:7:
lib.h:30:26: error: ISO C++17 does not allow dynamic exception specifications
30 | int LIB_IMPEXP libfoo () throw (libexc);
| ^~~~~
In file included from main.cpp:8:
module.h:17:40: error: ISO C++17 does not allow dynamic exception specifications
17 | extern "C" int MODULE_IMPEXP modfoo () throw (modexc);
| ^~~~~
main.cpp:22:16: error: ISO C++17 does not allow dynamic exception specifications
22 | int foo (void) throw (exc)
| ^~~~~
stdout:
143. exceptions.at:24: 143. C++ exception handling (exceptions.at:24): skipped (exceptions.at:361)
--------------------------------------------------------------------------------
The problem is apparently that the test uses old syntax that was deprecated
in C++11 and removed in C++17 [1]. The new syntax is described in [2].
The attached patch fixes it.
[1] https://en.cppreference.com/w/cpp/language/except_spec
[2] https://en.cppreference.com/w/cpp/language/noexcept_spec
[0001-Support-C-17-compilers-in-the-C-tests.patch (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
[Message part 6 (text/plain, inline)]
On 14/05/2024 15:05, Bruno Haible wrote:
> Hi,
>
> Running the libtool tests on Ubuntu 22.04, I saw this test output:
>
> Constructors.
>
> 142: C++ static constructors ok
> 143: C++ exception handling skipped (exceptions.at:361)
>
> It sounds odd that a C++ test gets skipped when a perfectly fine C++ compiler
> is present. So I investigated...
>
> The log file of the respective test is:
>
> --------------------------------------------------------------------------------
> # -*- compilation -*-
> 143. exceptions.at:24: testing C++ exception handling ...
> ./exceptions.at:33: case $LIBLTDL in #(
> */_inst/lib/*) test -f "$LIBLTDL" || (exit 77) ;;
> esac
> stdout:
> ./exceptions.at:361: $CXX $CPPFLAGS $CXXFLAGS -DUSING_COMMON_DLL -DUSING_MODULE_DLL -DUSING_LIB_DLL -c main.cpp || exit 77
> stderr:
> In file included from main.cpp:7:
> lib.h:30:26: error: ISO C++17 does not allow dynamic exception specifications
> 30 | int LIB_IMPEXP libfoo () throw (libexc);
> | ^~~~~
> In file included from main.cpp:8:
> module.h:17:40: error: ISO C++17 does not allow dynamic exception specifications
> 17 | extern "C" int MODULE_IMPEXP modfoo () throw (modexc);
> | ^~~~~
> main.cpp:22:16: error: ISO C++17 does not allow dynamic exception specifications
> 22 | int foo (void) throw (exc)
> | ^~~~~
> stdout:
> 143. exceptions.at:24: 143. C++ exception handling (exceptions.at:24): skipped (exceptions.at:361)
> --------------------------------------------------------------------------------
>
> The problem is apparently that the test uses old syntax that was deprecated
> in C++11 and removed in C++17 [1]. The new syntax is described in [2].
>
> The attached patch fixes it.
>
> [1] https://en.cppreference.com/w/cpp/language/except_spec
> [2] https://en.cppreference.com/w/cpp/language/noexcept_spec
>
Thank you for the patch. This has been applied in libtool:
https://git.savannah.gnu.org/cgit/libtool.git/commit/?h=development&id=17fb010919e9f7e28fe28e13f2710bb85b00cb3a
--
Ileana Dumitrescu
GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354
[OpenPGP_0x6570EA01146F7354.asc (application/pgp-keys, attachment)]
[OpenPGP_signature.asc (application/pgp-signature, attachment)]
This bug report was last modified 327 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.