-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
While working on enabling ARM64EC runtime test coverage (on an ARM64 host), I'm observing that <stacktrace> doesn't work.
For example, we expect "P0881R7_stacktrace!all_innermost" here:
| assert(trim_past_plus(all.at(0).description()) == "P0881R7_stacktrace!all_innermost"sv); |
This works for x64, x86, and ARM64. But for ARM64EC, we get "P0881R7_stacktrace". The content of all.at(0).description() is "P0881R7_stacktrace+0xB0E0" and the "+0xB0E0" is being trimmed off:
STL/tests/std/tests/P0881R7_stacktrace/test.cpp
Lines 103 to 108 in defc75b
| string trim_past_plus(string str) { | |
| if (size_t pos = str.rfind("+", string::npos); pos != string::npos) { | |
| str.resize(pos); | |
| } | |
| return str; | |
| } |
Similarly, in the header units and modules test,
STL/tests/std/include/test_header_units_and_modules.hpp
Lines 851 to 861 in defc75b
| auto desc = stacktrace::current().at(0).description(); | |
| if (auto pos = desc.find("!"); pos != string::npos) { | |
| desc = desc.substr(pos + 1); | |
| } | |
| if (auto pos = desc.find("+"); pos != string::npos) { | |
| desc.resize(pos); | |
| } | |
| assert(desc == "test_stacktrace"); |
desc is "P2465R3_standard_library_modules+0x95254" before trimming and "P2465R3_standard_library_modules" after.
My understanding of ARM64EC is extremely limited, so I don't know if this is an issue in dbgeng.dll, or the debug info that the compiler is emitting, or what.