Skip to content
Snippets Groups Projects
  • Jonathan Wakely's avatar
    b96b5545
    libstdc++: Add Filesystem TS and std::stacktrace symbols to libstdc++exp.a · b96b5545
    Jonathan Wakely authored
    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.
    b96b5545
    History
    libstdc++: Add Filesystem TS and std::stacktrace symbols to libstdc++exp.a
    Jonathan Wakely authored
    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.