GNU bug report logs - #70935
Support C++17 compilers in the C++ tests

Previous Next

Package: libtool;

Reported by: Bruno Haible <bruno <at> clisp.org>

Date: Tue, 14 May 2024 12:06:01 UTC

Severity: normal

To reply to this bug, email your comments to 70935 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-libtool <at> gnu.org:
bug#70935; Package libtool. (Tue, 14 May 2024 12:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Bruno Haible <bruno <at> clisp.org>:
New bug report received and forwarded. Copy sent to bug-libtool <at> gnu.org. (Tue, 14 May 2024 12:06:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Bruno Haible <bruno <at> clisp.org>
To: bug-libtool <at> gnu.org
Subject: Support C++17 compilers in the C++ tests
Date: Tue, 14 May 2024 14:05:25 +0200
[Message part 1 (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)]

This bug report was last modified 26 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.