]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Add Filesystem TS and std::stacktrace symbols to libstdc++exp.a
authorJonathan Wakely <jwakely@redhat.com>
Thu, 7 Sep 2023 09:24:56 +0000 (10:24 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 8 Sep 2023 17:04:12 +0000 (18:04 +0100)
commitb96b554592c5cbb6a2c1797ffcb5706fd295f4fd
tree62d0bbe4c052f2d8a1e9e4edec5e858ad2e99aa5
parent1a0c6decd2112267c88438466df2e1c46b20248e
libstdc++: Add Filesystem TS and std::stacktrace symbols to libstdc++exp.a

This consolidates the three static archives for extensions into one, so
that -lstdc++exp can be used to provide the definitions of all unstable
library features.

The libstdc++_libbacktrace.a archive is now just a "noinst" convenience
library that is only used during the build, not installed. Its contents
are added to libstdc++exp.a, along with the new non-inline definitions
of std::stacktrace symbols.

The libstdc++fs.a archive is still installed, but its contents are
duplicated in libstdc++exp.a now. This means -lstdc++exp can be used
instead of -lstdc++fs. For targets using the GNU linker we should
consider replacing libstdc++fs.a with a linker script that does
INPUT(libstdc++exp.a).

The tests for <experimental/filesystem> could be changed to use
-lstdc++exp instead of -lstdc++fs, which would allow removing
src/filesystem/.libs from the LDFLAGS in scripts/testsuite_flags.in,
but that can be done at a later date.

libstdc++-v3/ChangeLog:

* acinclude.m4 (GLIBCXX_CONFIGURE): Add c++23 directory.
* configure: Regenerate.
* doc/html/manual/*: Regenerate.
* doc/xml/manual/using.xml: Update documentation on linking.
* include/std/stacktrace: Remove declarations of libbacktrace
APIs.
(stacktrace_entry::_S_err_handler, stacktrace_entry::_S_init):
Remove.
(stacktrace_entry::_Info): New class.
(stacktrace_entry::_M_get_info): Use _Info.
(__stacktrace_impl): New class.
(basic_stacktrace): Derive from __stacktrace_impl.
(basic_stacktrace::current): Use __stacktrace_impl::_S_current.
* scripts/testsuite_flags.in: Adjust LDFLAGS to find
libstdc++exp instead of libstdc++_libbacktrace.
* src/Makefile.am (SUBDIRS): Add c++23 directory.
* src/Makefile.in: Regenerate.
* src/c++20/Makefile.am: Fix comment.
* src/c++20/Makefile.in: Regenerate.
* src/c++23/Makefile.am: New file.
* src/c++23/Makefile.in: New file.
* src/c++23/stacktrace.cc: New file with definitions of
stacktrace_entry::_Info and __stacktrace_impl members.
* src/experimental/Makefile.am: Use LIBADD to include other
libraries.
* src/experimental/Makefile.in: Regenerate.
* src/libbacktrace/Makefile.am: Use noinst_LTLIBRARIES.
* src/libbacktrace/Makefile.in: Regenerate.
* testsuite/19_diagnostics/stacktrace/current.cc: Adjust
dg-options to use -lstdc++exp.
* testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
* testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
* testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc:
Likewise.
22 files changed:
libstdc++-v3/acinclude.m4
libstdc++-v3/configure
libstdc++-v3/doc/html/manual/using.html
libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
libstdc++-v3/doc/xml/manual/using.xml
libstdc++-v3/include/std/stacktrace
libstdc++-v3/scripts/testsuite_flags.in
libstdc++-v3/src/Makefile.am
libstdc++-v3/src/Makefile.in
libstdc++-v3/src/c++20/Makefile.am
libstdc++-v3/src/c++20/Makefile.in
libstdc++-v3/src/c++23/Makefile.am [new file with mode: 0644]
libstdc++-v3/src/c++23/Makefile.in [new file with mode: 0644]
libstdc++-v3/src/c++23/stacktrace.cc [new file with mode: 0644]
libstdc++-v3/src/experimental/Makefile.am
libstdc++-v3/src/experimental/Makefile.in
libstdc++-v3/src/libbacktrace/Makefile.am
libstdc++-v3/src/libbacktrace/Makefile.in
libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
libstdc++-v3/testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc