From 5dbbc3b14bb04ef4bf2cbf4c23008f94f4253704 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Wed, 31 Jul 2024 11:02:18 -0700 Subject: [PATCH] [lldb] Use Target references instead of pointers in CommandObject (NFC) The GetTarget helper returns a Target reference so there's reason to convert it to a pointer and check its validity. --- .../CommandObjectBreakpointCommand.cpp | 8 +- .../Commands/CommandObjectDisassemble.cpp | 6 +- lldb/source/Commands/CommandObjectTarget.cpp | 185 ++++++++---------- .../Commands/CommandObjectWatchpoint.cpp | 96 ++++----- .../source/Commands/CommandObjectWatchpoint.h | 2 +- .../CommandObjectWatchpointCommand.cpp | 18 +- 6 files changed, 148 insertions(+), 167 deletions(-) diff --git a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp index 5d95c2a30957df..8c1fb513e016ec 100644 --- a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp @@ -548,9 +548,9 @@ class CommandObjectBreakpointCommandList : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -566,7 +566,7 @@ class CommandObjectBreakpointCommandList : public CommandObjectParsed { BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (result.Succeeded()) { @@ -575,7 +575,7 @@ class CommandObjectBreakpointCommandList : public CommandObjectParsed { BreakpointID cur_bp_id = valid_bp_ids.GetBreakpointIDAtIndex(i); if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *bp = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); if (bp) { BreakpointLocationSP bp_loc_sp; diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp index 8ec55cc1207251..652a300706b11f 100644 --- a/lldb/source/Commands/CommandObjectDisassemble.cpp +++ b/lldb/source/Commands/CommandObjectDisassemble.cpp @@ -439,10 +439,10 @@ CommandObjectDisassemble::GetRangesForSelectedMode( void CommandObjectDisassemble::DoExecute(Args &command, CommandReturnObject &result) { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!m_options.arch.IsValid()) - m_options.arch = target->GetArchitecture(); + m_options.arch = target.GetArchitecture(); if (!m_options.arch.IsValid()) { result.AppendError( @@ -535,7 +535,7 @@ void CommandObjectDisassemble::DoExecute(Args &command, } else { result.AppendErrorWithFormat( "Failed to disassemble memory at 0x%8.8" PRIx64 ".\n", - cur_range.GetBaseAddress().GetLoadAddress(target)); + cur_range.GetBaseAddress().GetLoadAddress(&target)); } } if (print_sc_header) diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 60a84820f69de6..b77bd8b0bc71a7 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -1027,7 +1027,7 @@ class CommandObjectTargetModulesSearchPathsAdd : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); const size_t argc = command.GetArgumentCount(); if (argc & 1) { result.AppendError("add requires an even number of arguments\n"); @@ -1045,7 +1045,7 @@ class CommandObjectTargetModulesSearchPathsAdd : public CommandObjectParsed { from, to); } bool last_pair = ((argc - i) == 2); - target->GetImageSearchPathList().Append( + target.GetImageSearchPathList().Append( from, to, last_pair); // Notify if this is the last pair result.SetStatus(eReturnStatusSuccessFinishNoResult); } else { @@ -1074,9 +1074,9 @@ class CommandObjectTargetModulesSearchPathsClear : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); bool notify = true; - target->GetImageSearchPathList().Clear(notify); + target.GetImageSearchPathList().Clear(notify); result.SetStatus(eReturnStatusSuccessFinishNoResult); } }; @@ -1148,7 +1148,7 @@ class CommandObjectTargetModulesSearchPathsInsert : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); size_t argc = command.GetArgumentCount(); // check for at least 3 arguments and an odd number of parameters if (argc >= 3 && argc & 1) { @@ -1171,8 +1171,8 @@ class CommandObjectTargetModulesSearchPathsInsert : public CommandObjectParsed { if (from[0] && to[0]) { bool last_pair = ((argc - i) == 2); - target->GetImageSearchPathList().Insert(from, to, insert_idx, - last_pair); + target.GetImageSearchPathList().Insert(from, to, insert_idx, + last_pair); result.SetStatus(eReturnStatusSuccessFinishNoResult); } else { if (from[0]) @@ -1203,9 +1203,8 @@ class CommandObjectTargetModulesSearchPathsList : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); - - target->GetImageSearchPathList().Dump(&result.GetOutputStream()); + Target &target = GetTarget(); + target.GetImageSearchPathList().Dump(&result.GetOutputStream()); result.SetStatus(eReturnStatusSuccessFinishResult); } }; @@ -1226,7 +1225,7 @@ class CommandObjectTargetModulesSearchPathsQuery : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (command.GetArgumentCount() != 1) { result.AppendError("query requires one argument\n"); return; @@ -1234,7 +1233,7 @@ class CommandObjectTargetModulesSearchPathsQuery : public CommandObjectParsed { ConstString orig(command.GetArgumentAtIndex(0)); ConstString transformed; - if (target->GetImageSearchPathList().RemapPath(orig, transformed)) + if (target.GetImageSearchPathList().RemapPath(orig, transformed)) result.GetOutputStream().Printf("%s\n", transformed.GetCString()); else result.GetOutputStream().Printf("%s\n", orig.GetCString()); @@ -1898,9 +1897,9 @@ class CommandObjectTargetModulesDumpObjfile protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); result.GetErrorStream().SetAddressByteSize(addr_byte_size); @@ -1908,7 +1907,7 @@ class CommandObjectTargetModulesDumpObjfile if (command.GetArgumentCount() == 0) { // Dump all headers for all modules images num_dumped = DumpModuleObjfileHeaders(result.GetOutputStream(), - target->GetImages()); + target.GetImages()); if (num_dumped == 0) { result.AppendError("the target has no associated executable images"); } @@ -1920,7 +1919,7 @@ class CommandObjectTargetModulesDumpObjfile (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; ++arg_idx) { size_t num_matched = - FindModulesByName(target, arg_cstr, module_list, true); + FindModulesByName(&target, arg_cstr, module_list, true); if (num_matched == 0) { result.AppendWarningWithFormat( "Unable to find an image that matches '%s'.\n", arg_cstr); @@ -1999,19 +1998,19 @@ class CommandObjectTargetModulesDumpSymtab protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); uint32_t num_dumped = 0; Mangled::NamePreference name_preference = (m_options.m_prefer_mangled ? Mangled::ePreferMangled : Mangled::ePreferDemangled); - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); result.GetErrorStream().SetAddressByteSize(addr_byte_size); if (command.GetArgumentCount() == 0) { // Dump all sections for all modules images - const ModuleList &module_list = target->GetImages(); + const ModuleList &module_list = target.GetImages(); std::lock_guard guard(module_list.GetMutex()); const size_t num_modules = module_list.GetSize(); if (num_modules > 0) { @@ -2044,7 +2043,7 @@ class CommandObjectTargetModulesDumpSymtab ++arg_idx) { ModuleList module_list; const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); + FindModulesByName(&target, arg_cstr, module_list, true); if (num_matches > 0) { for (ModuleSP module_sp : module_list.Modules()) { if (module_sp) { @@ -2097,16 +2096,16 @@ class CommandObjectTargetModulesDumpSections protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); uint32_t num_dumped = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); result.GetErrorStream().SetAddressByteSize(addr_byte_size); if (command.GetArgumentCount() == 0) { // Dump all sections for all modules images - const size_t num_modules = target->GetImages().GetSize(); + const size_t num_modules = target.GetImages().GetSize(); if (num_modules == 0) { result.AppendError("the target has no associated executable images"); return; @@ -2123,7 +2122,7 @@ class CommandObjectTargetModulesDumpSections num_dumped++; DumpModuleSections( m_interpreter, result.GetOutputStream(), - target->GetImages().GetModulePointerAtIndex(image_idx)); + target.GetImages().GetModulePointerAtIndex(image_idx)); } } else { // Dump specified images (by basename or fullpath) @@ -2133,7 +2132,7 @@ class CommandObjectTargetModulesDumpSections ++arg_idx) { ModuleList module_list; const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); + FindModulesByName(&target, arg_cstr, module_list, true); if (num_matches > 0) { for (size_t i = 0; i < num_matches; ++i) { if (INTERRUPT_REQUESTED(GetDebugger(), @@ -2238,9 +2237,9 @@ class CommandObjectTargetModulesDumpClangAST protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - const ModuleList &module_list = target->GetImages(); + const ModuleList &module_list = target.GetImages(); const size_t num_modules = module_list.GetSize(); if (num_modules == 0) { result.AppendError("the target has no associated executable images"); @@ -2265,7 +2264,7 @@ class CommandObjectTargetModulesDumpClangAST for (const Args::ArgEntry &arg : command.entries()) { ModuleList module_list; const size_t num_matches = - FindModulesByName(target, arg.c_str(), module_list, true); + FindModulesByName(&target, arg.c_str(), module_list, true); if (num_matches == 0) { // Check the global list std::lock_guard guard( @@ -2309,16 +2308,16 @@ class CommandObjectTargetModulesDumpSymfile protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); uint32_t num_dumped = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); result.GetErrorStream().SetAddressByteSize(addr_byte_size); if (command.GetArgumentCount() == 0) { // Dump all sections for all modules images - const ModuleList &target_modules = target->GetImages(); + const ModuleList &target_modules = target.GetImages(); std::lock_guard guard(target_modules.GetMutex()); const size_t num_modules = target_modules.GetSize(); if (num_modules == 0) { @@ -2344,7 +2343,7 @@ class CommandObjectTargetModulesDumpSymfile ++arg_idx) { ModuleList module_list; const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); + FindModulesByName(&target, arg_cstr, module_list, true); if (num_matches > 0) { for (size_t i = 0; i < num_matches; ++i) { if (INTERRUPT_REQUESTED(GetDebugger(), "Interrupted dumping {0} " @@ -2726,7 +2725,7 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { OptionGroupFile m_symbol_file; void DoExecute(Args &args, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); bool flush = false; const size_t argc = args.GetArgumentCount(); @@ -2742,7 +2741,7 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { Status error; if (PluginManager::DownloadObjectAndSymbolFile(module_spec, error)) { ModuleSP module_sp( - target->GetOrCreateModule(module_spec, true /* notify */)); + target.GetOrCreateModule(module_spec, true /* notify */)); if (module_sp) { result.SetStatus(eReturnStatusSuccessFinishResult); return; @@ -2799,10 +2798,10 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { module_spec.GetSymbolFileSpec() = m_symbol_file.GetOptionValue().GetCurrentValue(); if (!module_spec.GetArchitecture().IsValid()) - module_spec.GetArchitecture() = target->GetArchitecture(); + module_spec.GetArchitecture() = target.GetArchitecture(); Status error; - ModuleSP module_sp(target->GetOrCreateModule( - module_spec, true /* notify */, &error)); + ModuleSP module_sp( + target.GetOrCreateModule(module_spec, true /* notify */, &error)); if (!module_sp) { const char *error_cstr = error.AsCString(); if (error_cstr) @@ -2831,7 +2830,7 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { } if (flush) { - ProcessSP process = target->GetProcessSP(); + ProcessSP process = target.GetProcessSP(); if (process) process->Flush(); } @@ -2876,7 +2875,7 @@ class CommandObjectTargetModulesLoad protected: void DoExecute(Args &args, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); const bool load = m_load_option.GetOptionValue().GetCurrentValue(); const bool set_pc = m_pc_option.GetOptionValue().GetCurrentValue(); @@ -2888,7 +2887,7 @@ class CommandObjectTargetModulesLoad if (load) { if (!m_file_option.GetOptionValue().OptionWasSet() && !m_uuid_option_group.GetOptionValue().OptionWasSet()) { - ModuleList &module_list = target->GetImages(); + ModuleList &module_list = target.GetImages(); if (module_list.GetSize() == 1) { search_using_module_spec = true; module_spec.GetFileSpec() = @@ -2903,7 +2902,7 @@ class CommandObjectTargetModulesLoad const bool use_global_module_list = true; ModuleList module_list; const size_t num_matches = FindModulesByName( - target, arg_cstr, module_list, use_global_module_list); + &target, arg_cstr, module_list, use_global_module_list); if (num_matches == 1) { module_spec.GetFileSpec() = module_list.GetModuleAtIndex(0)->GetFileSpec(); @@ -2926,7 +2925,7 @@ class CommandObjectTargetModulesLoad if (search_using_module_spec) { ModuleList matching_modules; - target->GetImages().FindModules(module_spec, matching_modules); + target.GetImages().FindModules(module_spec, matching_modules); const size_t num_matches = matching_modules.GetSize(); char path[PATH_MAX]; @@ -2943,7 +2942,7 @@ class CommandObjectTargetModulesLoad const addr_t slide = m_slide_option.GetOptionValue().GetCurrentValue(); const bool slide_is_offset = true; - module->SetLoadAddress(*target, slide, slide_is_offset, + module->SetLoadAddress(target, slide, slide_is_offset, changed); } else { result.AppendError("one or more section name + load " @@ -2975,8 +2974,8 @@ class CommandObjectTargetModulesLoad sect_name); break; } else { - if (target->GetSectionLoadList() - .SetSectionLoadAddress(section_sp, load_addr)) + if (target.GetSectionLoadList().SetSectionLoadAddress( + section_sp, load_addr)) changed = true; result.AppendMessageWithFormat( "section '%s' loaded at 0x%" PRIx64 "\n", @@ -3007,13 +3006,13 @@ class CommandObjectTargetModulesLoad } if (changed) { - target->ModulesDidLoad(matching_modules); + target.ModulesDidLoad(matching_modules); Process *process = m_exe_ctx.GetProcessPtr(); if (process) process->Flush(); } if (load) { - ProcessSP process = target->CalculateProcess(); + ProcessSP process = target.CalculateProcess(); Address file_entry = objfile->GetEntryPointAddress(); if (!process) { result.AppendError("No process"); @@ -3024,7 +3023,7 @@ class CommandObjectTargetModulesLoad return; } std::vector loadables( - objfile->GetLoadableData(*target)); + objfile->GetLoadableData(target)); if (loadables.size() == 0) { result.AppendError("No loadable sections"); return; @@ -3038,7 +3037,7 @@ class CommandObjectTargetModulesLoad ThreadList &thread_list = process->GetThreadList(); RegisterContextSP reg_context( thread_list.GetSelectedThread()->GetRegisterContext()); - addr_t file_entry_addr = file_entry.GetLoadAddress(target); + addr_t file_entry_addr = file_entry.GetLoadAddress(&target); if (!reg_context->SetPC(file_entry_addr)) { result.AppendErrorWithFormat("failed to set PC value to " "0x%" PRIx64 "\n", @@ -3166,50 +3165,37 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); const bool use_global_module_list = m_options.m_use_global_module_list; // Define a local module list here to ensure it lives longer than any // "locker" object which might lock its contents below (through the // "module_list_ptr" variable). ModuleList module_list; - if (target == nullptr && !use_global_module_list) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - return; - } else { - if (target) { - uint32_t addr_byte_size = - target->GetArchitecture().GetAddressByteSize(); - result.GetOutputStream().SetAddressByteSize(addr_byte_size); - result.GetErrorStream().SetAddressByteSize(addr_byte_size); - } - // Dump all sections for all modules images - Stream &strm = result.GetOutputStream(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); + result.GetOutputStream().SetAddressByteSize(addr_byte_size); + result.GetErrorStream().SetAddressByteSize(addr_byte_size); + // Dump all sections for all modules images + Stream &strm = result.GetOutputStream(); - if (m_options.m_module_addr != LLDB_INVALID_ADDRESS) { - if (target) { - Address module_address; - if (module_address.SetLoadAddress(m_options.m_module_addr, target)) { - ModuleSP module_sp(module_address.GetModule()); - if (module_sp) { - PrintModule(target, module_sp.get(), 0, strm); - result.SetStatus(eReturnStatusSuccessFinishResult); - } else { - result.AppendErrorWithFormat( - "Couldn't find module matching address: 0x%" PRIx64 ".", - m_options.m_module_addr); - } - } else { - result.AppendErrorWithFormat( - "Couldn't find module containing address: 0x%" PRIx64 ".", - m_options.m_module_addr); - } + if (m_options.m_module_addr != LLDB_INVALID_ADDRESS) { + Address module_address; + if (module_address.SetLoadAddress(m_options.m_module_addr, &target)) { + ModuleSP module_sp(module_address.GetModule()); + if (module_sp) { + PrintModule(target, module_sp.get(), 0, strm); + result.SetStatus(eReturnStatusSuccessFinishResult); } else { - result.AppendError( - "Can only look up modules by address with a valid target."); + result.AppendErrorWithFormat( + "Couldn't find module matching address: 0x%" PRIx64 ".", + m_options.m_module_addr); } - return; + } else { + result.AppendErrorWithFormat( + "Couldn't find module containing address: 0x%" PRIx64 ".", + m_options.m_module_addr); } + return; + } size_t num_modules = 0; @@ -3227,13 +3213,13 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { guard.lock(); num_modules = Module::GetNumberAllocatedModules(); } else { - module_list_ptr = &target->GetImages(); + module_list_ptr = &target.GetImages(); } } else { for (const Args::ArgEntry &arg : command) { // Dump specified images (by basename or fullpath) const size_t num_matches = FindModulesByName( - target, arg.c_str(), module_list, use_global_module_list); + &target, arg.c_str(), module_list, use_global_module_list); if (num_matches == 0) { if (argc == 1) { result.AppendErrorWithFormat("no modules found that match '%s'", @@ -3286,10 +3272,9 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { } return; } - } } - void PrintModule(Target *target, Module *module, int indent, Stream &strm) { + void PrintModule(Target &target, Module *module, int indent, Stream &strm) { if (module == nullptr) { strm.PutCString("Null module"); return; @@ -3338,17 +3323,16 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { // Image header address { uint32_t addr_nibble_width = - target ? (target->GetArchitecture().GetAddressByteSize() * 2) - : 16; + target.GetArchitecture().GetAddressByteSize() * 2; ObjectFile *objfile = module->GetObjectFile(); if (objfile) { Address base_addr(objfile->GetBaseAddress()); if (base_addr.IsValid()) { - if (target && !target->GetSectionLoadList().IsEmpty()) { - lldb::addr_t load_addr = base_addr.GetLoadAddress(target); + if (!target.GetSectionLoadList().IsEmpty()) { + lldb::addr_t load_addr = base_addr.GetLoadAddress(&target); if (load_addr == LLDB_INVALID_ADDRESS) { - base_addr.Dump(&strm, target, + base_addr.Dump(&strm, &target, Address::DumpStyleModuleWithFileAddress, Address::DumpStyleFileAddress); } else { @@ -3367,7 +3351,7 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { } // The address was valid, but the image isn't loaded, output the // address in an appropriate format - base_addr.Dump(&strm, target, Address::DumpStyleFileAddress); + base_addr.Dump(&strm, &target, Address::DumpStyleFileAddress); break; } } @@ -4070,11 +4054,11 @@ class CommandObjectTargetModulesLookup : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); bool syntax_error = false; uint32_t i; uint32_t num_successful_lookups = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + uint32_t addr_byte_size = target.GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); result.GetErrorStream().SetAddressByteSize(addr_byte_size); // Dump all sections for all modules images @@ -4096,7 +4080,7 @@ class CommandObjectTargetModulesLookup : public CommandObjectParsed { // Dump all sections for all other modules - const ModuleList &target_modules = target->GetImages(); + const ModuleList &target_modules = target.GetImages(); std::lock_guard guard(target_modules.GetMutex()); if (target_modules.GetSize() == 0) { result.AppendError("the target has no associated executable images"); @@ -4119,7 +4103,7 @@ class CommandObjectTargetModulesLookup : public CommandObjectParsed { ++i) { ModuleList module_list; const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, false); + FindModulesByName(&target, arg_cstr, module_list, false); if (num_matches > 0) { for (size_t j = 0; j < num_matches; ++j) { Module *module = module_list.GetModulePointerAtIndex(j); @@ -4937,10 +4921,7 @@ Filter Options: m_stop_hook_sp->GetID()); error_sp->Flush(); } - Target *target = &GetTarget(); - if (target) { - target->UndoCreateStopHook(m_stop_hook_sp->GetID()); - } + GetTarget().UndoCreateStopHook(m_stop_hook_sp->GetID()); } else { // The IOHandler editor is only for command lines stop hooks: Target::StopHookCommandLine *hook_ptr = diff --git a/lldb/source/Commands/CommandObjectWatchpoint.cpp b/lldb/source/Commands/CommandObjectWatchpoint.cpp index 314c75111a028f..126982dfddf88e 100644 --- a/lldb/source/Commands/CommandObjectWatchpoint.cpp +++ b/lldb/source/Commands/CommandObjectWatchpoint.cpp @@ -39,10 +39,10 @@ static void AddWatchpointDescription(Stream &s, Watchpoint &wp, s.EOL(); } -static bool CheckTargetForWatchpointOperations(Target *target, +static bool CheckTargetForWatchpointOperations(Target &target, CommandReturnObject &result) { bool process_is_valid = - target->GetProcessSP() && target->GetProcessSP()->IsAlive(); + target.GetProcessSP() && target.GetProcessSP()->IsAlive(); if (!process_is_valid) { result.AppendError("There's no process or it is not alive."); return false; @@ -67,12 +67,10 @@ static int32_t WithRSAIndex(llvm::StringRef Arg) { // Return true if wp_ids is successfully populated with the watch ids. False // otherwise. bool CommandObjectMultiwordWatchpoint::VerifyWatchpointIDs( - Target *target, Args &args, std::vector &wp_ids) { + Target &target, Args &args, std::vector &wp_ids) { // Pre-condition: args.GetArgumentCount() > 0. if (args.GetArgumentCount() == 0) { - if (target == nullptr) - return false; - WatchpointSP watch_sp = target->GetLastCreatedWatchpoint(); + WatchpointSP watch_sp = target.GetLastCreatedWatchpoint(); if (watch_sp) { wp_ids.push_back(watch_sp->GetID()); return true; @@ -203,22 +201,24 @@ class CommandObjectWatchpointList : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - if (target->GetProcessSP() && target->GetProcessSP()->IsAlive()) { - std::optional num_supported_hardware_watchpoints = - target->GetProcessSP()->GetWatchpointSlotCount(); + if (ProcessSP process_sp = target.GetProcessSP()) { + if (process_sp->IsAlive()) { + std::optional num_supported_hardware_watchpoints = + process_sp->GetWatchpointSlotCount(); - if (num_supported_hardware_watchpoints) - result.AppendMessageWithFormat( - "Number of supported hardware watchpoints: %u\n", - *num_supported_hardware_watchpoints); + if (num_supported_hardware_watchpoints) + result.AppendMessageWithFormat( + "Number of supported hardware watchpoints: %u\n", + *num_supported_hardware_watchpoints); + } } - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); size_t num_watchpoints = watchpoints.GetSize(); @@ -286,14 +286,14 @@ class CommandObjectWatchpointEnable : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return; std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -304,7 +304,7 @@ class CommandObjectWatchpointEnable : public CommandObjectParsed { if (command.GetArgumentCount() == 0) { // No watchpoint selected; enable all currently set watchpoints. - target->EnableAllWatchpoints(); + target.EnableAllWatchpoints(); result.AppendMessageWithFormat("All watchpoints enabled. (%" PRIu64 " watchpoints)\n", (uint64_t)num_watchpoints); @@ -321,7 +321,7 @@ class CommandObjectWatchpointEnable : public CommandObjectParsed { int count = 0; const size_t size = wp_ids.size(); for (size_t i = 0; i < size; ++i) - if (target->EnableWatchpointByID(wp_ids[i])) + if (target.EnableWatchpointByID(wp_ids[i])) ++count; result.AppendMessageWithFormat("%d watchpoints enabled.\n", count); result.SetStatus(eReturnStatusSuccessFinishNoResult); @@ -355,14 +355,14 @@ class CommandObjectWatchpointDisable : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return; std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); if (num_watchpoints == 0) { @@ -372,7 +372,7 @@ class CommandObjectWatchpointDisable : public CommandObjectParsed { if (command.GetArgumentCount() == 0) { // No watchpoint selected; disable all currently set watchpoints. - if (target->DisableAllWatchpoints()) { + if (target.DisableAllWatchpoints()) { result.AppendMessageWithFormat("All watchpoints disabled. (%" PRIu64 " watchpoints)\n", (uint64_t)num_watchpoints); @@ -392,7 +392,7 @@ class CommandObjectWatchpointDisable : public CommandObjectParsed { int count = 0; const size_t size = wp_ids.size(); for (size_t i = 0; i < size; ++i) - if (target->DisableWatchpointByID(wp_ids[i])) + if (target.DisableWatchpointByID(wp_ids[i])) ++count; result.AppendMessageWithFormat("%d watchpoints disabled.\n", count); result.SetStatus(eReturnStatusSuccessFinishNoResult); @@ -464,14 +464,14 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return; std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -487,7 +487,7 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { true)) { result.AppendMessage("Operation cancelled..."); } else { - target->RemoveAllWatchpoints(); + target.RemoveAllWatchpoints(); result.AppendMessageWithFormat("All watchpoints removed. (%" PRIu64 " watchpoints)\n", (uint64_t)num_watchpoints); @@ -507,7 +507,7 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { int count = 0; const size_t size = wp_ids.size(); for (size_t i = 0; i < size; ++i) - if (target->RemoveWatchpointByID(wp_ids[i])) + if (target.RemoveWatchpointByID(wp_ids[i])) ++count; result.AppendMessageWithFormat("%d watchpoints deleted.\n", count); result.SetStatus(eReturnStatusSuccessFinishNoResult); @@ -584,14 +584,14 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return; std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -601,7 +601,7 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { } if (command.GetArgumentCount() == 0) { - target->IgnoreAllWatchpoints(m_options.m_ignore_count); + target.IgnoreAllWatchpoints(m_options.m_ignore_count); result.AppendMessageWithFormat("All watchpoints ignored. (%" PRIu64 " watchpoints)\n", (uint64_t)num_watchpoints); @@ -618,7 +618,7 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { int count = 0; const size_t size = wp_ids.size(); for (size_t i = 0; i < size; ++i) - if (target->IgnoreWatchpointByID(wp_ids[i], m_options.m_ignore_count)) + if (target.IgnoreWatchpointByID(wp_ids[i], m_options.m_ignore_count)) ++count; result.AppendMessageWithFormat("%d watchpoints ignored.\n", count); result.SetStatus(eReturnStatusSuccessFinishNoResult); @@ -703,14 +703,14 @@ class CommandObjectWatchpointModify : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return; std::unique_lock lock; - target->GetWatchpointList().GetListMutex(lock); + target.GetWatchpointList().GetListMutex(lock); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -720,7 +720,7 @@ class CommandObjectWatchpointModify : public CommandObjectParsed { } if (command.GetArgumentCount() == 0) { - WatchpointSP watch_sp = target->GetLastCreatedWatchpoint(); + WatchpointSP watch_sp = target.GetLastCreatedWatchpoint(); watch_sp->SetCondition(m_options.m_condition.c_str()); result.SetStatus(eReturnStatusSuccessFinishNoResult); } else { @@ -804,7 +804,7 @@ corresponding to the byte size of the data type."); } void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); StackFrame *frame = m_exe_ctx.GetFramePtr(); // If no argument is present, issue an error message. There's no way to @@ -852,8 +852,8 @@ corresponding to the byte size of the data type."); Status error(Variable::GetValuesForVariableExpressionPath( command.GetArgumentAtIndex(0), - m_exe_ctx.GetBestExecutionContextScope(), GetVariableCallback, target, - variable_list, valobj_list)); + m_exe_ctx.GetBestExecutionContextScope(), GetVariableCallback, + &target, variable_list, valobj_list)); if (valobj_list.GetSize()) valobj_sp = valobj_list.GetValueObjectAtIndex(0); @@ -904,7 +904,7 @@ corresponding to the byte size of the data type."); error.Clear(); WatchpointSP watch_sp = - target->CreateWatchpoint(addr, size, &compiler_type, watch_type, error); + target.CreateWatchpoint(addr, size, &compiler_type, watch_type, error); if (!watch_sp) { result.AppendErrorWithFormat( "Watchpoint creation failed (addr=0x%" PRIx64 ", size=%" PRIu64 @@ -991,7 +991,7 @@ class CommandObjectWatchpointSetExpression : public CommandObjectRaw { m_option_group.NotifyOptionParsingStarting( &exe_ctx); // This is a raw command, so notify the option group - Target *target = &GetTarget(); + Target &target = GetTarget(); StackFrame *frame = m_exe_ctx.GetFramePtr(); OptionsWithRaw args(raw_command); @@ -1034,7 +1034,7 @@ class CommandObjectWatchpointSetExpression : public CommandObjectRaw { options.SetLanguage(m_option_watchpoint.language_type); ExpressionResults expr_result = - target->EvaluateExpression(expr, frame, valobj_sp, options); + target.EvaluateExpression(expr, frame, valobj_sp, options); if (expr_result != eExpressionCompleted) { result.AppendError("expression evaluation of address to watch failed"); result.AppendErrorWithFormat("expression evaluated: \n%s", expr.data()); @@ -1054,7 +1054,7 @@ class CommandObjectWatchpointSetExpression : public CommandObjectRaw { if (m_option_watchpoint.watch_size.GetCurrentValue() != 0) size = m_option_watchpoint.watch_size.GetCurrentValue(); else - size = target->GetArchitecture().GetAddressByteSize(); + size = target.GetArchitecture().GetAddressByteSize(); // Now it's time to create the watchpoint. uint32_t watch_type; @@ -1095,7 +1095,7 @@ class CommandObjectWatchpointSetExpression : public CommandObjectRaw { Status error; WatchpointSP watch_sp = - target->CreateWatchpoint(addr, size, &compiler_type, watch_type, error); + target.CreateWatchpoint(addr, size, &compiler_type, watch_type, error); if (watch_sp) { watch_sp->SetWatchSpec(std::string(expr)); Stream &output_stream = result.GetOutputStream(); diff --git a/lldb/source/Commands/CommandObjectWatchpoint.h b/lldb/source/Commands/CommandObjectWatchpoint.h index 87f9f4383bd270..a68491103ef518 100644 --- a/lldb/source/Commands/CommandObjectWatchpoint.h +++ b/lldb/source/Commands/CommandObjectWatchpoint.h @@ -22,7 +22,7 @@ class CommandObjectMultiwordWatchpoint : public CommandObjectMultiword { ~CommandObjectMultiwordWatchpoint() override; - static bool VerifyWatchpointIDs(Target *target, Args &args, + static bool VerifyWatchpointIDs(Target &target, Args &args, std::vector &wp_ids); }; diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp index b4743eb3d87574..cc4cb767648668 100644 --- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp @@ -355,9 +355,9 @@ are no syntax errors may indicate that a function was declared but never called. protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); if (num_watchpoints == 0) { @@ -384,7 +384,7 @@ are no syntax errors may indicate that a function was declared but never called. for (size_t i = 0; i < count; ++i) { uint32_t cur_wp_id = valid_wp_ids.at(i); if (cur_wp_id != LLDB_INVALID_WATCH_ID) { - Watchpoint *wp = target->GetWatchpointList().FindByID(cur_wp_id).get(); + Watchpoint *wp = target.GetWatchpointList().FindByID(cur_wp_id).get(); // Sanity check wp first. if (wp == nullptr) continue; @@ -450,9 +450,9 @@ class CommandObjectWatchpointCommandDelete : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); if (num_watchpoints == 0) { @@ -478,7 +478,7 @@ class CommandObjectWatchpointCommandDelete : public CommandObjectParsed { for (size_t i = 0; i < count; ++i) { uint32_t cur_wp_id = valid_wp_ids.at(i); if (cur_wp_id != LLDB_INVALID_WATCH_ID) { - Watchpoint *wp = target->GetWatchpointList().FindByID(cur_wp_id).get(); + Watchpoint *wp = target.GetWatchpointList().FindByID(cur_wp_id).get(); if (wp) wp->ClearCallback(); } else { @@ -505,9 +505,9 @@ class CommandObjectWatchpointCommandList : public CommandObjectParsed { protected: void DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = &GetTarget(); + Target &target = GetTarget(); - const WatchpointList &watchpoints = target->GetWatchpointList(); + const WatchpointList &watchpoints = target.GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); if (num_watchpoints == 0) { @@ -533,7 +533,7 @@ class CommandObjectWatchpointCommandList : public CommandObjectParsed { for (size_t i = 0; i < count; ++i) { uint32_t cur_wp_id = valid_wp_ids.at(i); if (cur_wp_id != LLDB_INVALID_WATCH_ID) { - Watchpoint *wp = target->GetWatchpointList().FindByID(cur_wp_id).get(); + Watchpoint *wp = target.GetWatchpointList().FindByID(cur_wp_id).get(); if (wp) { const WatchpointOptions *wp_options = wp->GetOptions();