aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/include/std/stacktrace4
-rw-r--r--libstdc++-v3/include/std/thread3
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc18
-rw-r--r--libstdc++-v3/testsuite/30_threads/thread/id/output.cc14
4 files changed, 32 insertions, 7 deletions
diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace
index 9d5f639..f570745 100644
--- a/libstdc++-v3/include/std/stacktrace
+++ b/libstdc++-v3/include/std/stacktrace
@@ -740,7 +740,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
std::ostringstream __os;
__os << __x;
- return __format::__write(__fc.out(), __os.view());
+ auto __str = __os.view();
+ return __format::__write_padded_as_spec(__str, __str.size(),
+ __fc, _M_spec);
}
private:
diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread
index 39042d7..ee3b8b1 100644
--- a/libstdc++-v3/include/std/thread
+++ b/libstdc++-v3/include/std/thread
@@ -335,7 +335,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__os << __id;
auto __str = __os.view();
return __format::__write_padded_as_spec(__str, __str.size(),
- __fc, _M_spec);
+ __fc, _M_spec,
+ __format::_Align_right);
}
private:
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
index 4960ccb..67f1e0c 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
@@ -1,4 +1,5 @@
-// { dg-do compile { target c++23 } }
+// { dg-options "-lstdc++exp" }
+// { dg-do run { target c++23 } }
// { dg-require-effective-target stacktrace }
// { dg-add-options no_pch }
@@ -17,7 +18,8 @@ test_to_string()
{
auto trace = std::stacktrace::current();
std::string s1 = std::to_string(trace.at(0));
- VERIFY( s1.contains("test_to_string():15") );
+ VERIFY( s1.contains("test_to_string()") );
+ VERIFY( s1.contains("output.cc:19") );
std::string s2 = std::to_string(trace);
VERIFY( s2.contains(s1) );
}
@@ -47,7 +49,17 @@ test_format()
std::stacktrace_entry entry = trace.at(0);
std::string str = std::to_string(entry);
VERIFY( std::format("{}", entry) == str );
- VERIFY( std::format("{0:!<{1}}", entry, str.size() + 3) == (str + "!!!") );
+ auto len = str.size();
+ // with width
+ VERIFY( std::format("{0:{1}}", entry, len + 1) == (str + " ") );
+ // with align + width
+ VERIFY( std::format("{0:<{1}}", entry, len + 2) == (str + " ") );
+ VERIFY( std::format("{0:^{1}}", entry, len + 3) == (" " + str + " ") );
+ VERIFY( std::format("{0:>{1}}", entry, len + 4) == (" " + str) );
+ // with fill-and-align + width
+ VERIFY( std::format("{0:!<{1}}", entry, len + 2) == (str + "!!") );
+ VERIFY( std::format("{0:!^{1}}", entry, len + 3) == ("!" + str + "!!") );
+ VERIFY( std::format("{0:!>{1}}", entry, len + 4) == ("!!!!" + str) );
}
int main()
diff --git a/libstdc++-v3/testsuite/30_threads/thread/id/output.cc b/libstdc++-v3/testsuite/30_threads/thread/id/output.cc
index 08d8c89..3c16720 100644
--- a/libstdc++-v3/testsuite/30_threads/thread/id/output.cc
+++ b/libstdc++-v3/testsuite/30_threads/thread/id/output.cc
@@ -80,8 +80,18 @@ test02()
auto len = s1.size();
out.str("");
- auto s2 = std::format("{0:x^{1}}", j, len + 4);
- VERIFY( s2 == ("xx" + s1 + "xx") );
+ std::string s2;
+ // with width
+ s2 = std::format("{0:{1}}", j, len + 2);
+ VERIFY( s2 == (" " + s1) );
+ // with align + width
+ s2 = std::format("{0:>{1}}", j, len + 2);
+ VERIFY( s2 == (" " + s1) );
+ s2 = std::format("{0:<{1}}", j, len + 2);
+ VERIFY( s2 == (s1 + " ") );
+ // with fill-and-align + width
+ s2 = std::format("{0:x^{1}}", j, len + 5);
+ VERIFY( s2 == ("xx" + s1 + "xxx") );
#ifdef _GLIBCXX_USE_WCHAR_T
static_assert( std::is_default_constructible_v<std::formatter<std::thread::id, wchar_t>> );