-
Notifications
You must be signed in to change notification settings - Fork 10.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[lldb][Windows] Fixed LibcxxChronoTimePointSecondsSummaryProvider() #92701
Merged
slydiman
merged 1 commit into
llvm:main
from
slydiman:fix2-lldb-test-TestDataFormatterLibcxxChrono
May 20, 2024
Merged
[lldb][Windows] Fixed LibcxxChronoTimePointSecondsSummaryProvider() #92701
slydiman
merged 1 commit into
llvm:main
from
slydiman:fix2-lldb-test-TestDataFormatterLibcxxChrono
May 20, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@llvm/pr-subscribers-lldb Author: Dmitry Vasilyev (slydiman) ChangesThis patch fixes #92574. It is a replacement for #92575. Full diff: https://github.com/llvm/llvm-project/pull/92701.diff 2 Files Affected:
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
index e160fd0763939..da05ba7b40d32 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
@@ -1098,6 +1098,7 @@ LibcxxChronoTimePointSecondsSummaryProvider(ValueObject &valobj, Stream &stream,
if (!ptr_sp)
return false;
+#ifndef _WIN32
// The date time in the chrono library is valid in the range
// [-32767-01-01T00:00:00Z, 32767-12-31T23:59:59Z]. A 64-bit time_t has a
// larger range, the function strftime is not able to format the entire range
@@ -1107,6 +1108,11 @@ LibcxxChronoTimePointSecondsSummaryProvider(ValueObject &valobj, Stream &stream,
-1'096'193'779'200; // -32767-01-01T00:00:00Z
const std::time_t chrono_timestamp_max =
971'890'963'199; // 32767-12-31T23:59:59Z
+#else
+ const std::time_t chrono_timestamp_min = -43'200; // 1969-12-31T12:00:00Z
+ const std::time_t chrono_timestamp_max =
+ 32'536'850'399; // 3001-01-19T21:59:59
+#endif
const std::time_t seconds = ptr_sp->GetValueAsSigned(0);
if (seconds < chrono_timestamp_min || seconds > chrono_timestamp_max)
@@ -1148,12 +1154,17 @@ LibcxxChronoTimepointDaysSummaryProvider(ValueObject &valobj, Stream &stream,
if (!ptr_sp)
return false;
+#ifndef _WIN32
// The date time in the chrono library is valid in the range
// [-32767-01-01Z, 32767-12-31Z]. A 32-bit time_t has a larger range, the
// function strftime is not able to format the entire range of time_t. The
// exact point has not been investigated; it's limited to chrono's range.
const int chrono_timestamp_min = -12'687'428; // -32767-01-01Z
const int chrono_timestamp_max = 11'248'737; // 32767-12-31Z
+#else
+ const int chrono_timestamp_min = 0; // 1970-01-01Z
+ const int chrono_timestamp_max = 376'583; // 3001-01-19Z
+#endif
const int days = ptr_sp->GetValueAsSigned(0);
if (days < chrono_timestamp_min || days > chrono_timestamp_max)
diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/chrono/TestDataFormatterLibcxxChrono.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/chrono/TestDataFormatterLibcxxChrono.py
index fb35481d55514..0737a5bc7e6eb 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/chrono/TestDataFormatterLibcxxChrono.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/chrono/TestDataFormatterLibcxxChrono.py
@@ -14,6 +14,7 @@ class LibcxxChronoDataFormatterTestCase(TestBase):
@skipIf(compiler="clang", compiler_version=["<", "17.0"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
+ isNotWindowsHost = lldbplatformutil.getHostPlatform() != "windows"
self.build()
(self.target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
self, "break here", lldb.SBFileSpec("main.cpp", False)
@@ -57,7 +58,11 @@ def test_with_run_command(self):
self.expect(
"frame variable ss_neg_date_time",
substrs=[
- "ss_neg_date_time = date/time=-32767-01-01T00:00:00Z timestamp=-1096193779200 s"
+ (
+ "ss_neg_date_time = date/time=-32767-01-01T00:00:00Z timestamp=-1096193779200 s"
+ if isNotWindowsHost
+ else "ss_neg_date_time = timestamp=-1096193779200 s"
+ )
],
)
self.expect(
@@ -68,7 +73,11 @@ def test_with_run_command(self):
self.expect(
"frame variable ss_pos_date_time",
substrs=[
- "ss_pos_date_time = date/time=32767-12-31T23:59:59Z timestamp=971890963199 s"
+ (
+ "ss_pos_date_time = date/time=32767-12-31T23:59:59Z timestamp=971890963199 s"
+ if isNotWindowsHost
+ else "ss_pos_date_time = timestamp=971890963199 s"
+ )
],
)
self.expect(
@@ -103,7 +112,13 @@ def test_with_run_command(self):
)
self.expect(
"frame variable sd_neg_date",
- substrs=["sd_neg_date = date=-32767-01-01Z timestamp=-12687428 days"],
+ substrs=[
+ (
+ "sd_neg_date = date=-32767-01-01Z timestamp=-12687428 days"
+ if isNotWindowsHost
+ else "sd_neg_date = timestamp=-12687428 days"
+ )
+ ],
)
self.expect(
"frame variable sd_neg_days",
@@ -112,7 +127,13 @@ def test_with_run_command(self):
self.expect(
"frame variable sd_pos_date",
- substrs=["sd_pos_date = date=32767-12-31Z timestamp=11248737 days"],
+ substrs=[
+ (
+ "sd_pos_date = date=32767-12-31Z timestamp=11248737 days"
+ if isNotWindowsHost
+ else "sd_pos_date = timestamp=11248737 days"
+ )
+ ],
)
self.expect(
"frame variable sd_pos_days",
@@ -157,7 +178,11 @@ def test_with_run_command(self):
self.expect(
"frame variable ls_neg_date_time",
substrs=[
- "ls_neg_date_time = date/time=-32767-01-01T00:00:00 timestamp=-1096193779200 s"
+ (
+ "ls_neg_date_time = date/time=-32767-01-01T00:00:00 timestamp=-1096193779200 s"
+ if isNotWindowsHost
+ else "ls_neg_date_time = timestamp=-1096193779200 s"
+ )
],
)
self.expect(
@@ -168,7 +193,11 @@ def test_with_run_command(self):
self.expect(
"frame variable ls_pos_date_time",
substrs=[
- "ls_pos_date_time = date/time=32767-12-31T23:59:59 timestamp=971890963199 s"
+ (
+ "ls_pos_date_time = date/time=32767-12-31T23:59:59 timestamp=971890963199 s"
+ if isNotWindowsHost
+ else "ls_pos_date_time = timestamp=971890963199 s"
+ )
],
)
self.expect(
@@ -207,7 +236,13 @@ def test_with_run_command(self):
)
self.expect(
"frame variable ld_neg_date",
- substrs=["ld_neg_date = date=-32767-01-01 timestamp=-12687428 days"],
+ substrs=[
+ (
+ "ld_neg_date = date=-32767-01-01 timestamp=-12687428 days"
+ if isNotWindowsHost
+ else "ld_neg_date = timestamp=-12687428 days"
+ )
+ ],
)
self.expect(
"frame variable ld_neg_days",
@@ -216,7 +251,13 @@ def test_with_run_command(self):
self.expect(
"frame variable ld_pos_date",
- substrs=["ld_pos_date = date=32767-12-31 timestamp=11248737 days"],
+ substrs=[
+ (
+ "ld_pos_date = date=32767-12-31 timestamp=11248737 days"
+ if isNotWindowsHost
+ else "ld_pos_date = timestamp=11248737 days"
+ )
+ ],
)
self.expect(
"frame variable ld_pos_days",
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
This patch fixes llvm#92574. It is a replacement for llvm#92575.
slydiman
force-pushed
the
fix2-lldb-test-TestDataFormatterLibcxxChrono
branch
from
May 19, 2024 17:56
2dfbb86
to
7d455ee
Compare
labath
approved these changes
May 20, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch fixes #92574. It is a replacement for #92575.