From 86a58f10284dea118703ecde0ef5b9a4f6e4d8be Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20G=C3=B3rny?= Date: Thu, 16 Sep 2021 11:43:56 +0200 Subject: [PATCH] [lldb] [DynamicRegisterInfo] Pass name/alt_name via RegisterInfo Remove the name and alt_name parameters from AddRegister() and instead pass them via RegisterInfo.name and .alt_name fields. This makes the API simpler and removes some duplication. Differential Revision: https://reviews.llvm.org/D109872 --- .../Plugins/Process/Utility/DynamicRegisterInfo.cpp | 4 ---- .../Plugins/Process/Utility/DynamicRegisterInfo.h | 2 -- .../Process/gdb-remote/GDBRemoteRegisterContext.cpp | 19 ++++--------------- .../Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 6 ++++-- 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp b/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp index f3dfa5d..cc79260 100644 --- a/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp +++ b/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp @@ -396,14 +396,10 @@ DynamicRegisterInfo::SetRegisterInfo(const StructuredData::Dictionary &dict, } void DynamicRegisterInfo::AddRegister(RegisterInfo ®_info, - ConstString ®_name, - ConstString ®_alt_name, ConstString &set_name) { assert(!m_finalized); const uint32_t reg_num = m_regs.size(); - reg_info.name = reg_name.AsCString(); assert(reg_info.name); - reg_info.alt_name = reg_alt_name.AsCString(nullptr); uint32_t i; if (reg_info.value_regs) { for (i = 0; reg_info.value_regs[i] != LLDB_INVALID_REGNUM; ++i) diff --git a/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h b/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h index 7e90454..663fbab 100644 --- a/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h +++ b/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h @@ -36,8 +36,6 @@ public: const lldb_private::ArchSpec &arch); void AddRegister(lldb_private::RegisterInfo ®_info, - lldb_private::ConstString ®_name, - lldb_private::ConstString ®_alt_name, lldb_private::ConstString &set_name); void Finalize(const lldb_private::ArchSpec &arch); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp index 5c3f9b4..c050efb 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp @@ -992,19 +992,12 @@ void GDBRemoteDynamicRegisterInfo::HardcodeARMRegisters(bool from_scratch) { } } for (i = 0; i < num_registers; ++i) { - ConstString name; - ConstString alt_name; - if (g_register_infos[i].name && g_register_infos[i].name[0]) - name.SetCString(g_register_infos[i].name); - if (g_register_infos[i].alt_name && g_register_infos[i].alt_name[0]) - alt_name.SetCString(g_register_infos[i].alt_name); - if (i <= 15 || i == 25) - AddRegister(g_register_infos[i], name, alt_name, gpr_reg_set); + AddRegister(g_register_infos[i], gpr_reg_set); else if (i <= 24) - AddRegister(g_register_infos[i], name, alt_name, sfp_reg_set); + AddRegister(g_register_infos[i], sfp_reg_set); else - AddRegister(g_register_infos[i], name, alt_name, vfp_reg_set); + AddRegister(g_register_infos[i], vfp_reg_set); } } else { // Add composite registers to our primordial registers, then. @@ -1040,8 +1033,6 @@ void GDBRemoteDynamicRegisterInfo::HardcodeARMRegisters(bool from_scratch) { // If "match" is true, then we can add extra registers. if (match) { for (i = 0; i < num_composites; ++i) { - ConstString name; - ConstString alt_name; const uint32_t first_primordial_reg = g_comp_register_infos[i].value_regs[0]; const char *reg_name = g_register_infos[first_primordial_reg].name; @@ -1054,9 +1045,7 @@ void GDBRemoteDynamicRegisterInfo::HardcodeARMRegisters(bool from_scratch) { // The name matches the existing primordial entry. Find and // assign the offset, and then add this composite register entry. g_comp_register_infos[i].byte_offset = reg_info->byte_offset; - name.SetCString(g_comp_register_infos[i].name); - AddRegister(g_comp_register_infos[i], name, alt_name, - vfp_reg_set); + AddRegister(g_comp_register_infos[i], vfp_reg_set); } } } diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 87ad0a3..79c54bc 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -578,13 +578,14 @@ void ProcessGDBRemote::BuildDynamicRegisterInfo(bool force) { } reg_info.name = reg_name.AsCString(); + reg_info.alt_name = alt_name.AsCString(); // We have to make a temporary ABI here, and not use the GetABI because // this code gets called in DidAttach, when the target architecture // (and consequently the ABI we'll get from the process) may be wrong. if (ABISP abi_sp = ABI::FindPlugin(shared_from_this(), arch_to_use)) abi_sp->AugmentRegisterInfo(reg_info); - m_register_info_sp->AddRegister(reg_info, reg_name, alt_name, set_name); + m_register_info_sp->AddRegister(reg_info, set_name); } else { break; // ensure exit before reg_num is incremented } @@ -4554,9 +4555,10 @@ bool ParseRegisters(XMLNode feature_node, GdbServerTargetInfo &target_info, reg_num_remote = reg_info.kinds[eRegisterKindProcessPlugin] + 1; ++reg_num_local; reg_info.name = reg_name.AsCString(); + reg_info.alt_name = alt_name.AsCString(); if (abi_sp) abi_sp->AugmentRegisterInfo(reg_info); - dyn_reg_info.AddRegister(reg_info, reg_name, alt_name, set_name); + dyn_reg_info.AddRegister(reg_info, set_name); return true; // Keep iterating through all "reg" elements }); -- 2.7.4