On Mar 11, 2024, at 20:52, Jonathan Wakely jwakely@redhat.com wrote:
On Mon, 11 Mar 2024 at 16:38, Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Jan 30, 2024, at 23:03, ci_notify@linaro.org wrote:
Dear contributor, our automatic CI has detected problems related to your patch(es). Please find some details below. If you have any questions, please follow up on linaro-toolchain@lists.linaro.org mailing list, Libera's #linaro-tcwg channel, or ping your favourite Linaro toolchain developer on the usual project channel.
We appreciate that it might be difficult to find the necessary logs or reproduce the issue locally. If you can't get what you need from our CI within minutes, let us know and we will be happy to help.
We track this report status in https://linaro.atlassian.net/browse/GNU-1136 , please let us know if you are looking at the problem and/or when you have a fix.
In master-arm after:
| commit gdb-14-branchpoint-1411-g033bc67bdb0 | Author: Tom Tromey tom@tromey.com | Date: Tue Sep 19 17:39:31 2023 -0600 | | Only search types in cp_lookup_rtti_type | | This changes cp_lookup_rtti_type to only search for types -- not | functions or variables. Due to the symbol-matching hack, this could | just use SEARCH_TYPE_DOMAIN, but I think it's better to be clear; also | I hold on to some hope that perhaps the hack can someday be removed.
FAIL: 2 regressions
regressions.sum: === libstdc++ tests ===
Running libstdc++:libstdc++-prettyprinters/prettyprinters.exp ... FAIL: libstdc++-prettyprinters/cxx11.cc print ecmiaow FAIL: libstdc++-prettyprinters/cxx11.cc print emiaow
Hi Tom, Hi Jonathan,
After the above GDB patch I see 2 new failures both for aarch64-linux-gnu and arm-linux-gnueabihf in GCC's libstdc++ testsuite. The log [1] says:
$35 = warning: RTTI symbol not found for class 'main::custom_cat' warning: RTTI symbol not found for class 'main::custom_cat' got: $35 = warning: RTTI symbol not found for class 'main::custom_cat' FAIL: libstdc++-prettyprinters/cxx11.cc print emiaow skipping: warning: RTTI symbol not found for class 'main::custom_cat' std::error_code = {std::_V2::error_category: 42} skipping: std::error_code = {std::_V2::error_category: 42} $36 = warning: RTTI symbol not found for class 'main::custom_cat' warning: RTTI symbol not found for class 'main::custom_cat' got: $36 = warning: RTTI symbol not found for class 'main::custom_cat' FAIL: libstdc++-prettyprinters/cxx11.cc print ecmiaow ===
Which way should I dig -- GDB or libstdc++? Does this look like libstdc++ testcase needs an update?
Just a guess, but maybe making the type global instead of a local type (with no linkage) will solve it:
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc @@ -63,6 +63,11 @@ struct datum
std::unique_ptr<datum> global;
+struct custom_cat : std::error_category {
- const char* name() const noexcept { return "miaow"; }
- std::string message(int) const { return ""; }
+};
int main() { @@ -179,10 +184,7 @@ main() std::error_condition ecinval = std::make_error_condition(std::errc::invalid_argument); // { dg-final { note-test ecinval {std::error_condition = {"generic": EINVAL}} } }
- struct custom_cat : std::error_category {
- const char* name() const noexcept { return "miaow"; }
- std::string message(int) const { return ""; }
- } cat;
- custom_cat cat;
std::error_code emiaow(42, cat); // { dg-final { note-test emiaow {std::error_code = {custom_cat: 42}} } } std::error_condition ecmiaow(42, cat);
If this works, I think this change to the test is reasonable. A local type as an error_category probably doesn't make sense in real code.
But I don't know if this is revealing some issue with Tom's patch and how it handles local types (or any types without linkage).
Hi Jonathan,
Your above change to cxx11.cc http://cxx11.cc/ fixes the failures [1]. Would you please commit it?
Thanks!
[1] https://ci.linaro.org/job/tcwg_gnu_native_check_gcc--master-aarch64-precommi...
-- Maxim Kuvyrkov https://www.linaro.org