aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog30
-rwxr-xr-xlibstdc++-v3/configure44
-rw-r--r--libstdc++-v3/configure.ac21
-rw-r--r--libstdc++-v3/include/bits/chrono.h8
-rw-r--r--libstdc++-v3/include/bits/this_thread_sleep.h1
-rw-r--r--libstdc++-v3/include/std/stacktrace14
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py37
7 files changed, 150 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c216147..0449198 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,33 @@
+2025-10-15 Jonathan Wakely <jwakely@redhat.com>
+
+ * python/libstdcxx/v6/printers.py (StdStacktraceEntryPrinter):
+ New printer for std::stacktrace_entry.
+ (StdStacktracePrinter): New printer for std::basic_stacktrace.
+
+2025-10-15 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/stacktrace (basic_stacktrace::current): Call
+ _M_trim before returning.
+ (basic_stacktrace::_M_trim): New member function.
+
+2025-10-15 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/122293
+ * include/bits/chrono.h (__to_timeout_timespec): Fix
+ preprocessor condition to match the conditions under which
+ callers of this function are defined.
+ * include/bits/this_thread_sleep.h: Remove unused include.
+
+2025-10-15 Chris Johns <chrisj@rtems.org>
+
+ * configure: Regenerate.
+ * configure.ac (newlib, *-rtems*): Add HAVE_SYS_IOCTL_H,
+ HAVE_SYS_STAT_H, HAVE_SYS_TYPES_H, HAVE_S_ISREG, HAVE_UNISTD_H,
+ HAVE_UNLINKAT, _GLIBCXX_USE_CHMOD, _GLIBCXX_USE_MKDIR,
+ _GLIBCXX_USE_CHDIR, _GLIBCXX_USE_GETCWD, _GLIBCXX_USE_UTIME,
+ _GLIBCXX_USE_LINK, _GLIBCXX_USE_READLINK, _GLIBCXX_USE_SYMLINK,
+ _GLIBCXX_USE_TRUNCATE and _GLIBCXX_USE_FDOPENDIR.
+
2025-10-14 Mike Crowe <mac@mcrowe.com>
PR libstdc++/116586
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 86ec969..42b638f 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -28744,6 +28744,14 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo "#define HAVE_LINK 1" >>confdefs.h
+ $as_echo "#define HAVE_SYS_IOCT4YL_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_S_ISREG 1" >>confdefs.h
+
$as_echo "#define HAVE_QUICK_EXIT 1" >>confdefs.h
$as_echo "#define HAVE_READLINK 1" >>confdefs.h
@@ -28758,8 +28766,42 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo "#define HAVE_SYMLINK 1" >>confdefs.h
+ $as_echo "#define HAVE_SYS_IOCT4YL_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_S_ISREG 1" >>confdefs.h
+
$as_echo "#define HAVE_TRUNCATE 1" >>confdefs.h
+ $as_echo "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+ $as_echo "#define HAVE_UNLINKAT 1" >>confdefs.h
+
+ $as_echo "#define HAVE_USLEEP 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_CHMOD 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_MKDIR 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_CHDIR 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_GETCWD 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_UTIME 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_LINK 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_READLINK 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_SYMLINK 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_TRUNCATE 1" >>confdefs.h
+
+ $as_echo "#define _GLIBCXX_USE_FDOPENDIR 1" >>confdefs.h
+
$as_echo "#define HAVE_USLEEP 1" >>confdefs.h
@@ -53919,7 +53961,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
CXXFLAGS='-O0 -S'
cat > conftest.$ac_ext << EOF
-#line 53922 "configure"
+#line 53964 "configure"
#include <stddef.h>
int main()
{
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 47813eb..b9d49c3 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -399,6 +399,10 @@ dnl # rather than hardcoding that information.
AC_DEFINE(HAVE_ALIGNED_ALLOC)
AC_DEFINE(HAVE_AT_QUICK_EXIT)
AC_DEFINE(HAVE_LINK)
+ AC_DEFINE(HAVE_SYS_IOCT4YL_H)
+ AC_DEFINE(HAVE_SYS_STAT_H)
+ AC_DEFINE(HAVE_SYS_TYPES_H)
+ AC_DEFINE(HAVE_S_ISREG)
AC_DEFINE(HAVE_QUICK_EXIT)
AC_DEFINE(HAVE_READLINK)
AC_DEFINE(HAVE_SETENV)
@@ -406,7 +410,24 @@ dnl # rather than hardcoding that information.
AC_DEFINE(HAVE_SOCKATMARK)
AC_DEFINE(HAVE_STRERROR_L)
AC_DEFINE(HAVE_SYMLINK)
+ AC_DEFINE(HAVE_SYS_IOCT4YL_H)
+ AC_DEFINE(HAVE_SYS_STAT_H)
+ AC_DEFINE(HAVE_SYS_TYPES_H)
+ AC_DEFINE(HAVE_S_ISREG)
AC_DEFINE(HAVE_TRUNCATE)
+ AC_DEFINE(HAVE_UNISTD_H)
+ AC_DEFINE(HAVE_UNLINKAT)
+ AC_DEFINE(HAVE_USLEEP)
+ AC_DEFINE(_GLIBCXX_USE_CHMOD)
+ AC_DEFINE(_GLIBCXX_USE_MKDIR)
+ AC_DEFINE(_GLIBCXX_USE_CHDIR)
+ AC_DEFINE(_GLIBCXX_USE_GETCWD)
+ AC_DEFINE(_GLIBCXX_USE_UTIME)
+ AC_DEFINE(_GLIBCXX_USE_LINK)
+ AC_DEFINE(_GLIBCXX_USE_READLINK)
+ AC_DEFINE(_GLIBCXX_USE_SYMLINK)
+ AC_DEFINE(_GLIBCXX_USE_TRUNCATE)
+ AC_DEFINE(_GLIBCXX_USE_FDOPENDIR)
AC_DEFINE(HAVE_USLEEP)
# These functions are defined in librtemscpu. We don't use
diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index 7f505aa..4dc3998 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1515,8 +1515,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
} // namespace filesystem
#endif // C++17 && HOSTED
-#if defined _GLIBCXX_USE_NANOSLEEP || defined _GLIBCXX_USE_CLOCK_REALTIME \
- || defined _GLIBCXX_HAS_GTHREADS
+#if _GLIBCXX_HOSTED
+#if ! defined _GLIBCXX_NO_SLEEP || defined _GLIBCXX_HAS_GTHREADS \
+ || _GLIBCXX_HAVE_LINUX_FUTEX
namespace chrono
{
/// @cond undocumented
@@ -1585,7 +1586,8 @@ namespace chrono
/// @endcond
} // namespace chrono
-#endif // USE_NANOSLEEP || USE_CLOCK_REALTIME || HAS_GTHREADS
+#endif // !NO_SLEEP || HAS_GTHREADS || HAVE_LINUX_FUTEX
+#endif // HOSTED
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
diff --git a/libstdc++-v3/include/bits/this_thread_sleep.h b/libstdc++-v3/include/bits/this_thread_sleep.h
index 01f25dd..7c9d573 100644
--- a/libstdc++-v3/include/bits/this_thread_sleep.h
+++ b/libstdc++-v3/include/bits/this_thread_sleep.h
@@ -36,7 +36,6 @@
#if __cplusplus >= 201103L
#include <bits/chrono.h> // std::chrono::*
-#include <ext/numeric_traits.h> // __int_traits
#ifdef _GLIBCXX_USE_NANOSLEEP
# include <cerrno> // errno, EINTR
diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace
index 01e18ba..b9e260e 100644
--- a/libstdc++-v3/include/std/stacktrace
+++ b/libstdc++-v3/include/std/stacktrace
@@ -208,6 +208,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
if (_S_current(__cb, std::__addressof(__ret)))
__ret._M_clear();
+ else
+ __ret._M_trim();
}
return __ret;
}
@@ -224,6 +226,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
if (_S_current(__cb, std::__addressof(__ret), __skip))
__ret._M_clear();
+ else
+ __ret._M_trim();
}
return __ret;
@@ -260,6 +264,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
}
}
+ else
+ __ret._M_trim();
}
return __ret;
}
@@ -651,6 +657,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
};
+ void
+ _M_trim() noexcept
+ {
+ // libbacktrace adds an invalid -1UL entry at the end, remove it.
+ if (!empty() && !end()[-1])
+ _M_impl._M_resize(size() - 1, _M_alloc);
+ }
+
[[no_unique_address]] allocator_type _M_alloc{};
_Impl _M_impl{};
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index 1822d42..7a5a627 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -2357,6 +2357,37 @@ class StdTextEncodingPrinter(printer_base):
return 'unknown'
return rep['_M_name']
+class StdStacktraceEntryPrinter(printer_base):
+ """Print a std::stacktrace_entry."""
+
+ def __init__(self, typename, val):
+ self._val = val
+ self._typename = typename
+
+ def to_string(self):
+ block = gdb.current_progspace().block_for_pc(self._val['_M_pc'])
+ if block is None or block.function is None:
+ return "<unknown>"
+ sym = block.function
+ return "{{{} at {}:{}}}".format(sym.print_name, sym.symtab.filename, sym.line)
+
+class StdStacktracePrinter(printer_base):
+ """Print a std::stacktrace."""
+
+ def __init__(self, typename, val):
+ self._val = val
+ self._typename = typename
+ self._size = self._val['_M_impl']['_M_size']
+
+ def to_string(self):
+ return '%s of length %d' % (self._typename, self._size)
+
+ def children(self):
+ return StdSpanPrinter._iterator(self._val['_M_impl']['_M_frames'], self._size)
+
+ def display_hint(self):
+ return 'array'
+
# A "regular expression" printer which conforms to the
# "SubPrettyPrinter" protocol from gdb.printing.
class RxPrinter(object):
@@ -2977,6 +3008,12 @@ def build_libstdcxx_dictionary():
# libstdcxx_printer.add_version('std::chrono::(anonymous namespace)', 'Rule',
# StdChronoTimeZoneRulePrinter)
+ # C++23 components
+ libstdcxx_printer.add_version('std::', 'stacktrace_entry',
+ StdStacktraceEntryPrinter)
+ libstdcxx_printer.add_version('std::', 'basic_stacktrace',
+ StdStacktracePrinter)
+
# C++26 components
libstdcxx_printer.add_version('std::', 'text_encoding',
StdTextEncodingPrinter)