DavidSpickett updated this revision to Diff 557014. DavidSpickett added a comment.
Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D158514/new/ https://reviews.llvm.org/D158514 Files: lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py Index: lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py =================================================================== --- lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py +++ lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py @@ -125,11 +125,13 @@ self.runCmd("thread select %d" % (idx + 1)) self.check_za_register(4, 2) self.runCmd("register write vg 2") + self.check_disabled_za_register(2) elif stopped_at_line_number == thY_break_line1: self.runCmd("thread select %d" % (idx + 1)) self.check_za_register(2, 3) self.runCmd("register write vg 4") + self.check_disabled_za_register(4) self.runCmd("thread continue 2") self.runCmd("thread continue 3") Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp +++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp @@ -781,6 +781,11 @@ std::optional<uint64_t> svg_reg_value; const RegisterInfo *svg_reg_info = m_reg_info_sp->GetRegisterInfo("svg"); if (svg_reg_info) { + // When vg is written it is automatically made invalid. Writing vg will also + // change svg if we're in streaming mode but it will not be made invalid + // so do this manually so the following read gets the latest svg value. + SetRegisterIsValid(svg_reg_info, false); + uint32_t svg_reg_num = svg_reg_info->kinds[eRegisterKindLLDB]; uint64_t reg_value = ReadRegisterAsUnsigned(svg_reg_num, fail_value); if (reg_value != fail_value && reg_value <= 32)
Index: lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py =================================================================== --- lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py +++ lldb/test/API/commands/register/register/aarch64_za_register/za_dynamic_resize/TestZAThreadedDynamic.py @@ -125,11 +125,13 @@ self.runCmd("thread select %d" % (idx + 1)) self.check_za_register(4, 2) self.runCmd("register write vg 2") + self.check_disabled_za_register(2) elif stopped_at_line_number == thY_break_line1: self.runCmd("thread select %d" % (idx + 1)) self.check_za_register(2, 3) self.runCmd("register write vg 4") + self.check_disabled_za_register(4) self.runCmd("thread continue 2") self.runCmd("thread continue 3") Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp +++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp @@ -781,6 +781,11 @@ std::optional<uint64_t> svg_reg_value; const RegisterInfo *svg_reg_info = m_reg_info_sp->GetRegisterInfo("svg"); if (svg_reg_info) { + // When vg is written it is automatically made invalid. Writing vg will also + // change svg if we're in streaming mode but it will not be made invalid + // so do this manually so the following read gets the latest svg value. + SetRegisterIsValid(svg_reg_info, false); + uint32_t svg_reg_num = svg_reg_info->kinds[eRegisterKindLLDB]; uint64_t reg_value = ReadRegisterAsUnsigned(svg_reg_num, fail_value); if (reg_value != fail_value && reg_value <= 32)
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits