Subject: Re: bug#70935: Support C++17 compilers in the C++ tests
From: Ileana Dumitrescu <[email-masked]>
To: [email-masked]
Cc: Bruno Haible <[email-masked]>
Date: Mon, 1 Jul 2024 18:55:32 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

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