diff options
Diffstat (limited to 'lldb/source/Plugins/Process')
95 files changed, 1798 insertions, 1759 deletions
diff --git a/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.cpp b/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.cpp index feb7a11584f..6845a36730c 100644 --- a/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.cpp +++ b/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.cpp @@ -32,8 +32,8 @@ #include "lldb/Host/PseudoTerminal.h" #include "lldb/Target/ProcessLaunchInfo.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/StreamString.h" #include "CFBundle.h" @@ -131,10 +131,10 @@ static bool ResolveExecutablePath(const char *path, char *resolved_path, // TODO check if we have a general purpose fork and exec. We may be // able to get rid of this entirely. -static Error ForkChildForPTraceDebugging(const char *path, char const *argv[], - char const *envp[], ::pid_t *pid, - int *pty_fd) { - Error error; +static Status ForkChildForPTraceDebugging(const char *path, char const *argv[], + char const *envp[], ::pid_t *pid, + int *pty_fd) { + Status error; if (!path || !argv || !envp || !pid || !pty_fd) { error.SetErrorString("invalid arguments"); return error; @@ -149,7 +149,7 @@ static Error ForkChildForPTraceDebugging(const char *path, char const *argv[], *pid = static_cast<::pid_t>(pty.Fork(fork_error, sizeof(fork_error))); if (*pid < 0) { //-------------------------------------------------------------- - // Error during fork. + // Status during fork. //-------------------------------------------------------------- *pid = static_cast<::pid_t>(LLDB_INVALID_PROCESS_ID); error.SetErrorStringWithFormat("%s(): fork failed: %s", __FUNCTION__, @@ -205,10 +205,10 @@ static Error ForkChildForPTraceDebugging(const char *path, char const *argv[], return error; } -static Error +static Status CreatePosixSpawnFileAction(const FileAction &action, posix_spawn_file_actions_t *file_actions) { - Error error; + Status error; // Log it. Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); @@ -270,11 +270,11 @@ CreatePosixSpawnFileAction(const FileAction &action, return error; } -static Error PosixSpawnChildForPTraceDebugging(const char *path, - ProcessLaunchInfo &launch_info, - ::pid_t *pid, - cpu_type_t *actual_cpu_type) { - Error error; +static Status PosixSpawnChildForPTraceDebugging(const char *path, + ProcessLaunchInfo &launch_info, + ::pid_t *pid, + cpu_type_t *actual_cpu_type) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (!pid) { @@ -436,9 +436,9 @@ static Error PosixSpawnChildForPTraceDebugging(const char *path, return error; } -Error LaunchInferior(ProcessLaunchInfo &launch_info, int *pty_master_fd, - LaunchFlavor *launch_flavor) { - Error error; +Status LaunchInferior(ProcessLaunchInfo &launch_info, int *pty_master_fd, + LaunchFlavor *launch_flavor) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (!launch_flavor) { diff --git a/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.h b/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.h index d1af4d09f8b..a0e8ce5cb9d 100644 --- a/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.h +++ b/lldb/source/Plugins/Process/Darwin/DarwinProcessLauncher.h @@ -39,8 +39,9 @@ namespace darwin_process_launcher { /// @param[out] launch_flavor /// Contains the launch flavor used when launching the process. // ============================================================================= -Error LaunchInferior(ProcessLaunchInfo &launch_info, int *pty_master_fd, - lldb_private::process_darwin::LaunchFlavor *launch_flavor); +Status +LaunchInferior(ProcessLaunchInfo &launch_info, int *pty_master_fd, + lldb_private::process_darwin::LaunchFlavor *launch_flavor); } // darwin_process_launcher } // lldb_private diff --git a/lldb/source/Plugins/Process/Darwin/MachException.cpp b/lldb/source/Plugins/Process/Darwin/MachException.cpp index 5a97a4b01be..7d956dfc650 100644 --- a/lldb/source/Plugins/Process/Darwin/MachException.cpp +++ b/lldb/source/Plugins/Process/Darwin/MachException.cpp @@ -23,9 +23,9 @@ // LLDB includes #include "lldb/Target/UnixSignals.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" using namespace lldb; @@ -211,11 +211,11 @@ bool MachException::Data::GetStopInfo(struct ThreadStopInfo *stop_info, return true; } -Error MachException::Message::Receive(mach_port_t port, - mach_msg_option_t options, - mach_msg_timeout_t timeout, - mach_port_t notify_port) { - Error error; +Status MachException::Message::Receive(mach_port_t port, + mach_msg_option_t options, + mach_msg_timeout_t timeout, + mach_port_t notify_port) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); mach_msg_timeout_t mach_msg_timeout = @@ -312,10 +312,10 @@ bool MachException::Message::CatchExceptionRaise(task_t task) { return success; } -Error MachException::Message::Reply(::pid_t inferior_pid, task_t inferior_task, - int signal) { +Status MachException::Message::Reply(::pid_t inferior_pid, task_t inferior_task, + int signal) { // Reply to the exception... - Error error; + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); @@ -412,8 +412,8 @@ Error MachException::Message::Reply(::pid_t inferior_pid, task_t inferior_task, #define LLDB_EXC_MASK (EXC_MASK_ALL & ~EXC_MASK_RESOURCE) -Error MachException::PortInfo::Save(task_t task) { - Error error; +Status MachException::PortInfo::Save(task_t task) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); if (log) @@ -471,8 +471,8 @@ Error MachException::PortInfo::Save(task_t task) { return error; } -Error MachException::PortInfo::Restore(task_t task) { - Error error; +Status MachException::PortInfo::Restore(task_t task) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); diff --git a/lldb/source/Plugins/Process/Darwin/MachException.h b/lldb/source/Plugins/Process/Darwin/MachException.h index ac8cd7030c5..2da6a36a921 100644 --- a/lldb/source/Plugins/Process/Darwin/MachException.h +++ b/lldb/source/Plugins/Process/Darwin/MachException.h @@ -40,9 +40,9 @@ public: thread_state_flavor_t flavors[EXC_TYPES_COUNT]; mach_msg_type_number_t count; - Error Save(task_t task); + Status Save(task_t task); - Error Restore(task_t task); + Status Restore(task_t task); }; struct Data { @@ -96,11 +96,11 @@ public: bool CatchExceptionRaise(task_t task); - Error Reply(::pid_t inferior_pid, task_t inferior_task, int signal); + Status Reply(::pid_t inferior_pid, task_t inferior_task, int signal); - Error Receive(mach_port_t receive_port, mach_msg_option_t options, - mach_msg_timeout_t timeout, - mach_port_t notify_port = MACH_PORT_NULL); + Status Receive(mach_port_t receive_port, mach_msg_option_t options, + mach_msg_timeout_t timeout, + mach_port_t notify_port = MACH_PORT_NULL); void Dump(Stream &stream) const; diff --git a/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp b/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp index 65ab12fe1ad..f6c8c78ccb7 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp +++ b/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp @@ -53,13 +53,13 @@ struct hack_task_dyld_info { // Public Static Methods // ----------------------------------------------------------------------------- -Error NativeProcessProtocol::Launch( +Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); - Error error; + Status error; // Verify the working directory is valid if one was specified. FileSpec working_dir(launch_info.GetWorkingDirectory()); @@ -120,7 +120,7 @@ Error NativeProcessProtocol::Launch( return error; } -Error NativeProcessProtocol::Attach( +Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); @@ -130,7 +130,7 @@ Error NativeProcessProtocol::Attach( // Retrieve the architecture for the running process. ArchSpec process_arch; - Error error = ResolveProcessArchitecture(pid, process_arch); + Status error = ResolveProcessArchitecture(pid, process_arch); if (!error.Success()) return error; @@ -174,9 +174,9 @@ NativeProcessDarwin::~NativeProcessDarwin() {} // Instance methods // ----------------------------------------------------------------------------- -Error NativeProcessDarwin::FinalizeLaunch(LaunchFlavor launch_flavor, - MainLoop &main_loop) { - Error error; +Status NativeProcessDarwin::FinalizeLaunch(LaunchFlavor launch_flavor, + MainLoop &main_loop) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); #if 0 @@ -261,7 +261,7 @@ Error NativeProcessDarwin::FinalizeLaunch(LaunchFlavor launch_flavor, return error; } -Error NativeProcessDarwin::SaveExceptionPortInfo() { +Status NativeProcessDarwin::SaveExceptionPortInfo() { return m_exc_port_info.Save(m_task); } @@ -348,7 +348,7 @@ void *NativeProcessDarwin::DoExceptionThread() { // polling is expensive. On devices, we need to minimize overhead caused // by the process monitor. uint32_t num_exceptions_received = 0; - Error error; + Status error; task_t task = m_task; mach_msg_timeout_t periodic_timeout = 0; @@ -550,8 +550,8 @@ void *NativeProcessDarwin::DoExceptionThread() { return nullptr; } -Error NativeProcessDarwin::StartExceptionThread() { - Error error; +Status NativeProcessDarwin::StartExceptionThread() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (log) log->Printf("NativeProcessDarwin::%s() called", __FUNCTION__); @@ -640,7 +640,7 @@ Error NativeProcessDarwin::StartExceptionThread() { } lldb::addr_t -NativeProcessDarwin::GetDYLDAllImageInfosAddress(Error &error) const { +NativeProcessDarwin::GetDYLDAllImageInfosAddress(Status &error) const { error.Clear(); struct hack_task_dyld_info dyld_info; @@ -694,7 +694,7 @@ uint32_t NativeProcessDarwin::GetCPUType() const { task_t NativeProcessDarwin::ExceptionMessageBundleComplete() { // We have a complete bundle of exceptions for our child process. - Error error; + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); std::lock_guard<std::recursive_mutex> locker(m_exception_messages_mutex); @@ -737,7 +737,7 @@ task_t NativeProcessDarwin::ExceptionMessageBundleComplete() { const addr_t info_array_count_addr = aii_addr + 4; uint32_t info_array_count = 0; size_t bytes_read = 0; - Error read_error; + Status read_error; read_error = ReadMemory(info_array_count_addr, // source addr &info_array_count, // dest addr 4, // byte count @@ -885,8 +885,8 @@ void NativeProcessDarwin::StartSTDIOThread() { // TODO implement } -Error NativeProcessDarwin::StartWaitpidThread(MainLoop &main_loop) { - Error error; +Status NativeProcessDarwin::StartWaitpidThread(MainLoop &main_loop) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); // Strategy: create a thread that sits on waitpid(), waiting for the @@ -973,7 +973,7 @@ void *NativeProcessDarwin::DoWaitpidThread() { // Ensure we don't get CPU starved. MaybeRaiseThreadPriority(); - Error error; + Status error; int status = -1; while (1) { @@ -1038,9 +1038,9 @@ void *NativeProcessDarwin::DoWaitpidThread() { return nullptr; } -Error NativeProcessDarwin::SendInferiorExitStatusToMainLoop(::pid_t pid, - int status) { - Error error; +Status NativeProcessDarwin::SendInferiorExitStatusToMainLoop(::pid_t pid, + int status) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); size_t bytes_written = 0; @@ -1069,8 +1069,8 @@ Error NativeProcessDarwin::SendInferiorExitStatusToMainLoop(::pid_t pid, return error; } -Error NativeProcessDarwin::HandleWaitpidResult() { - Error error; +Status NativeProcessDarwin::HandleWaitpidResult() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); // Read the pid. @@ -1126,7 +1126,7 @@ Error NativeProcessDarwin::HandleWaitpidResult() { return error; } -task_t NativeProcessDarwin::TaskPortForProcessID(Error &error, +task_t NativeProcessDarwin::TaskPortForProcessID(Status &error, bool force) const { if ((m_task == TASK_NULL) || force) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); @@ -1178,12 +1178,12 @@ task_t NativeProcessDarwin::TaskPortForProcessID(Error &error, } void NativeProcessDarwin::AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, - Error &error) { + Status &error) { error.SetErrorString("TODO: implement"); } -Error NativeProcessDarwin::PrivateResume() { - Error error; +Status NativeProcessDarwin::PrivateResume() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); std::lock_guard<std::recursive_mutex> locker(m_exception_messages_mutex); @@ -1225,8 +1225,8 @@ Error NativeProcessDarwin::PrivateResume() { return error; } -Error NativeProcessDarwin::ReplyToAllExceptions() { - Error error; +Status NativeProcessDarwin::ReplyToAllExceptions() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_VERBOSE)); TaskPortForProcessID(error); @@ -1282,8 +1282,8 @@ Error NativeProcessDarwin::ReplyToAllExceptions() { return error; } -Error NativeProcessDarwin::ResumeTask() { - Error error; +Status NativeProcessDarwin::ResumeTask() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); TaskPortForProcessID(error); @@ -1364,9 +1364,10 @@ bool NativeProcessDarwin::IsExceptionPortValid() const { return MACH_PORT_VALID(m_exception_port); } -Error NativeProcessDarwin::GetTaskBasicInfo( - task_t task, struct task_basic_info *info) const { - Error error; +Status +NativeProcessDarwin::GetTaskBasicInfo(task_t task, + struct task_basic_info *info) const { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); // Validate args. @@ -1412,8 +1413,8 @@ Error NativeProcessDarwin::GetTaskBasicInfo( return error; } -Error NativeProcessDarwin::SuspendTask() { - Error error; +Status NativeProcessDarwin::SuspendTask() { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (m_task == TASK_NULL) { @@ -1432,8 +1433,8 @@ Error NativeProcessDarwin::SuspendTask() { return error; } -Error NativeProcessDarwin::Resume(const ResumeActionList &resume_actions) { - Error error; +Status NativeProcessDarwin::Resume(const ResumeActionList &resume_actions) { + Status error; Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (log) @@ -1461,74 +1462,74 @@ Error NativeProcessDarwin::Resume(const ResumeActionList &resume_actions) { return error; } -Error NativeProcessDarwin::Halt() { - Error error; +Status NativeProcessDarwin::Halt() { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::Detach() { - Error error; +Status NativeProcessDarwin::Detach() { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::Signal(int signo) { - Error error; +Status NativeProcessDarwin::Signal(int signo) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::Interrupt() { - Error error; +Status NativeProcessDarwin::Interrupt() { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::Kill() { - Error error; +Status NativeProcessDarwin::Kill() { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) { - Error error; +Status NativeProcessDarwin::GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) { - Error error; +Status NativeProcessDarwin::ReadMemory(lldb::addr_t addr, void *buf, + size_t size, size_t &bytes_read) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, - size_t size, - size_t &bytes_read) { - Error error; +Status NativeProcessDarwin::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, + size_t size, + size_t &bytes_read) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::WriteMemory(lldb::addr_t addr, const void *buf, - size_t size, size_t &bytes_written) { - Error error; +Status NativeProcessDarwin::WriteMemory(lldb::addr_t addr, const void *buf, + size_t size, size_t &bytes_written) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) { - Error error; +Status NativeProcessDarwin::AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::DeallocateMemory(lldb::addr_t addr) { - Error error; +Status NativeProcessDarwin::DeallocateMemory(lldb::addr_t addr) { + Status error; error.SetErrorString("TODO: implement"); return error; } @@ -1543,25 +1544,25 @@ bool NativeProcessDarwin::GetArchitecture(ArchSpec &arch) const { return false; } -Error NativeProcessDarwin::SetBreakpoint(lldb::addr_t addr, uint32_t size, - bool hardware) { - Error error; +Status NativeProcessDarwin::SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) { + Status error; error.SetErrorString("TODO: implement"); return error; } void NativeProcessDarwin::DoStopIDBumped(uint32_t newBumpId) {} -Error NativeProcessDarwin::GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) { - Error error; +Status NativeProcessDarwin::GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) { + Status error; error.SetErrorString("TODO: implement"); return error; } -Error NativeProcessDarwin::GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) { - Error error; +Status NativeProcessDarwin::GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) { + Status error; error.SetErrorString("TODO: implement"); return error; } @@ -1569,10 +1570,10 @@ Error NativeProcessDarwin::GetFileLoadAddress(const llvm::StringRef &file_name, // ----------------------------------------------------------------- // NativeProcessProtocol protected interface // ----------------------------------------------------------------- -Error NativeProcessDarwin::GetSoftwareBreakpointTrapOpcode( +Status NativeProcessDarwin::GetSoftwareBreakpointTrapOpcode( size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) { - Error error; + Status error; error.SetErrorString("TODO: implement"); return error; } diff --git a/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.h b/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.h index 01fdd64b127..2214bbc52ca 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.h +++ b/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.h @@ -37,7 +37,7 @@ #include "NativeThreadListDarwin.h" namespace lldb_private { -class Error; +class Status; class Scalar; namespace process_darwin { @@ -50,11 +50,11 @@ namespace process_darwin { /// /// Changes in the inferior process state are broadcasted. class NativeProcessDarwin : public NativeProcessProtocol { - friend Error NativeProcessProtocol::Launch( + friend Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); - friend Error NativeProcessProtocol::Attach( + friend Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); @@ -64,34 +64,34 @@ public: // ----------------------------------------------------------------- // NativeProcessProtocol Interface // ----------------------------------------------------------------- - Error Resume(const ResumeActionList &resume_actions) override; + Status Resume(const ResumeActionList &resume_actions) override; - Error Halt() override; + Status Halt() override; - Error Detach() override; + Status Detach() override; - Error Signal(int signo) override; + Status Signal(int signo) override; - Error Interrupt() override; + Status Interrupt() override; - Error Kill() override; + Status Kill() override; - Error GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) override; + Status GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) override; - Error ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemory(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error WriteMemory(lldb::addr_t addr, const void *buf, size_t size, - size_t &bytes_written) override; + Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, + size_t &bytes_written) override; - Error AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) override; + Status AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) override; - Error DeallocateMemory(lldb::addr_t addr) override; + Status DeallocateMemory(lldb::addr_t addr) override; lldb::addr_t GetSharedLibraryInfoAddress() override; @@ -99,15 +99,16 @@ public: bool GetArchitecture(ArchSpec &arch) const override; - Error SetBreakpoint(lldb::addr_t addr, uint32_t size, bool hardware) override; + Status SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) override; void DoStopIDBumped(uint32_t newBumpId) override; - Error GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) override; + Status GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) override; - Error GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) override; + Status GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) override; NativeThreadDarwinSP GetThreadByID(lldb::tid_t id); @@ -116,9 +117,9 @@ public: // ----------------------------------------------------------------- // Interface used by NativeRegisterContext-derived classes. // ----------------------------------------------------------------- - static Error PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, - void *data = nullptr, size_t data_size = 0, - long *result = nullptr); + static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, + void *data = nullptr, size_t data_size = 0, + long *result = nullptr); bool SupportHardwareSingleStepping() const; @@ -126,7 +127,7 @@ protected: // ----------------------------------------------------------------- // NativeProcessProtocol protected interface // ----------------------------------------------------------------- - Error + Status GetSoftwareBreakpointTrapOpcode(size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) override; @@ -236,19 +237,19 @@ private: /// operations. Failure here will force termination of the /// launched process and debugging session. // ----------------------------------------------------------------- - Error FinalizeLaunch(LaunchFlavor launch_flavor, MainLoop &main_loop); + Status FinalizeLaunch(LaunchFlavor launch_flavor, MainLoop &main_loop); - Error SaveExceptionPortInfo(); + Status SaveExceptionPortInfo(); void ExceptionMessageReceived(const MachException::Message &message); void MaybeRaiseThreadPriority(); - Error StartExceptionThread(); + Status StartExceptionThread(); - Error SendInferiorExitStatusToMainLoop(::pid_t pid, int status); + Status SendInferiorExitStatusToMainLoop(::pid_t pid, int status); - Error HandleWaitpidResult(); + Status HandleWaitpidResult(); bool ProcessUsingSpringBoard() const; @@ -258,7 +259,7 @@ private: void *DoExceptionThread(); - lldb::addr_t GetDYLDAllImageInfosAddress(Error &error) const; + lldb::addr_t GetDYLDAllImageInfosAddress(Status &error) const; static uint32_t GetCPUTypeForLocalProcess(::pid_t pid); @@ -268,25 +269,25 @@ private: void StartSTDIOThread(); - Error StartWaitpidThread(MainLoop &main_loop); + Status StartWaitpidThread(MainLoop &main_loop); static void *WaitpidThread(void *arg); void *DoWaitpidThread(); - task_t TaskPortForProcessID(Error &error, bool force = false) const; + task_t TaskPortForProcessID(Status &error, bool force = false) const; /// Attaches to an existing process. Forms the /// implementation of Process::DoAttach. - void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Error &error); + void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Status &error); - ::pid_t Attach(lldb::pid_t pid, Error &error); + ::pid_t Attach(lldb::pid_t pid, Status &error); - Error PrivateResume(); + Status PrivateResume(); - Error ReplyToAllExceptions(); + Status ReplyToAllExceptions(); - Error ResumeTask(); + Status ResumeTask(); bool IsTaskValid() const; @@ -296,11 +297,11 @@ private: bool IsExceptionPortValid() const; - Error GetTaskBasicInfo(task_t task, struct task_basic_info *info) const; + Status GetTaskBasicInfo(task_t task, struct task_basic_info *info) const; - Error SuspendTask(); + Status SuspendTask(); - static Error SetDefaultPtraceOpts(const lldb::pid_t); + static Status SetDefaultPtraceOpts(const lldb::pid_t); static void *MonitorThread(void *baton); @@ -319,7 +320,7 @@ private: void MonitorSignal(const siginfo_t &info, NativeThreadDarwin &thread, bool exited); - Error SetupSoftwareSingleStepping(NativeThreadDarwin &thread); + Status SetupSoftwareSingleStepping(NativeThreadDarwin &thread); #if 0 static ::ProcessMessage::CrashReason @@ -341,22 +342,22 @@ private: NativeThreadDarwinSP AddThread(lldb::tid_t thread_id); - Error GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); + Status GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); - Error FixupBreakpointPCAsNeeded(NativeThreadDarwin &thread); + Status FixupBreakpointPCAsNeeded(NativeThreadDarwin &thread); /// Writes a siginfo_t structure corresponding to the given thread /// ID to the memory region pointed to by @p siginfo. - Error GetSignalInfo(lldb::tid_t tid, void *siginfo); + Status GetSignalInfo(lldb::tid_t tid, void *siginfo); /// Writes the raw event message code (vis-a-vis PTRACE_GETEVENTMSG) /// corresponding to the given thread ID to the memory pointed to /// by @p message. - Error GetEventMessage(lldb::tid_t tid, unsigned long *message); + Status GetEventMessage(lldb::tid_t tid, unsigned long *message); void NotifyThreadDeath(lldb::tid_t tid); - Error Detach(lldb::tid_t tid); + Status Detach(lldb::tid_t tid); // This method is requests a stop on all threads which are still // running. It sets up a deferred delegate notification, which will @@ -370,8 +371,8 @@ private: // Resume the given thread, optionally passing it the given signal. // The type of resume operation (continue, single-step) depends on // the state parameter. - Error ResumeThread(NativeThreadDarwin &thread, lldb::StateType state, - int signo); + Status ResumeThread(NativeThreadDarwin &thread, lldb::StateType state, + int signo); void ThreadWasCreated(NativeThreadDarwin &thread); diff --git a/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.cpp b/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.cpp index b04f9053136..07398ab7b67 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.cpp +++ b/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.cpp @@ -94,15 +94,15 @@ NativeRegisterContextSP NativeThreadDarwin::GetRegisterContext() { return NativeRegisterContextSP(); } -Error NativeThreadDarwin::SetWatchpoint(lldb::addr_t addr, size_t size, - uint32_t watch_flags, bool hardware) { - Error error; +Status NativeThreadDarwin::SetWatchpoint(lldb::addr_t addr, size_t size, + uint32_t watch_flags, bool hardware) { + Status error; error.SetErrorString("not yet implemented"); return error; } -Error NativeThreadDarwin::RemoveWatchpoint(lldb::addr_t addr) { - Error error; +Status NativeThreadDarwin::RemoveWatchpoint(lldb::addr_t addr) { + Status error; error.SetErrorString("not yet implemented"); return error; } diff --git a/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.h b/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.h index b8d9089e673..f66f8fe8738 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.h +++ b/lldb/source/Plugins/Process/Darwin/NativeThreadDarwin.h @@ -58,10 +58,10 @@ public: NativeRegisterContextSP GetRegisterContext() override; - Error SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, - bool hardware) override; + Status SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, + bool hardware) override; - Error RemoveWatchpoint(lldb::addr_t addr) override; + Status RemoveWatchpoint(lldb::addr_t addr) override; // ----------------------------------------------------------------- // New methods that are fine for others to call. @@ -75,11 +75,11 @@ private: /// Resumes the thread. If @p signo is anything but /// LLDB_INVALID_SIGNAL_NUMBER, deliver that signal to the thread. - Error Resume(uint32_t signo); + Status Resume(uint32_t signo); /// Single steps the thread. If @p signo is anything but /// LLDB_INVALID_SIGNAL_NUMBER, deliver that signal to the thread. - Error SingleStep(uint32_t signo); + Status SingleStep(uint32_t signo); bool NotifyException(MachException::Data &exc); @@ -117,7 +117,7 @@ private: void SetExited(); - Error RequestStop(); + Status RequestStop(); // ------------------------------------------------------------------------- /// Return the mach thread port number for this thread. diff --git a/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.cpp b/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.cpp index fa06fb8b2a5..7d44adeec37 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.cpp +++ b/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.cpp @@ -20,8 +20,8 @@ #include <sys/sysctl.h> // LLDB includes -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" #include "lldb/lldb-enumerations.h" @@ -343,7 +343,7 @@ uint32_t NativeThreadListDarwin::UpdateThreadList(NativeProcessDarwin &process, mach_msg_type_number_t thread_list_count = 0; task_t task = process.GetTask(); - Error error; + Status error; auto mach_err = ::task_threads(task, &thread_list, &thread_list_count); error.SetError(mach_err, eErrorTypeMachKernel); if (error.Fail()) { diff --git a/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.h b/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.h index 2b194bcc153..7b59afb96e9 100644 --- a/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.h +++ b/lldb/source/Plugins/Process/Darwin/NativeThreadListDarwin.h @@ -123,7 +123,7 @@ protected: typedef collection::iterator iterator; typedef collection::const_iterator const_iterator; - // Consider having this return an lldb_private::Error. + // Consider having this return an lldb_private::Status. uint32_t UpdateThreadList(NativeProcessDarwin &process, bool update, collection *num_threads = nullptr); diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp index 93d294fd040..3046150e324 100644 --- a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp @@ -111,8 +111,8 @@ uint32_t ProcessFreeBSD::GetPluginVersion() { return 1; } void ProcessFreeBSD::Terminate() {} -Error ProcessFreeBSD::DoDetach(bool keep_stopped) { - Error error; +Status ProcessFreeBSD::DoDetach(bool keep_stopped) { + Status error; if (keep_stopped) { error.SetErrorString("Detaching with keep_stopped true is not currently " "supported on FreeBSD."); @@ -127,7 +127,7 @@ Error ProcessFreeBSD::DoDetach(bool keep_stopped) { return error; } -Error ProcessFreeBSD::DoResume() { +Status ProcessFreeBSD::DoResume() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); SetPrivateState(eStateRunning); @@ -147,7 +147,7 @@ Error ProcessFreeBSD::DoResume() { m_monitor->ThreadSuspend(*t_pos, false); do_step = true; if (software_single_step) { - Error error = SetupSoftwareSingleStepping(*t_pos); + Status error = SetupSoftwareSingleStepping(*t_pos); if (error.Fail()) return error; } @@ -168,7 +168,7 @@ Error ProcessFreeBSD::DoResume() { else m_monitor->Resume(GetID(), m_resume_signo); - return Error(); + return Status(); } bool ProcessFreeBSD::UpdateThreadList(ThreadList &old_thread_list, @@ -209,7 +209,7 @@ bool ProcessFreeBSD::UpdateThreadList(ThreadList &old_thread_list, return true; } -Error ProcessFreeBSD::WillResume() { +Status ProcessFreeBSD::WillResume() { m_resume_signo = 0; m_suspend_tids.clear(); m_run_tids.clear(); @@ -293,9 +293,10 @@ bool ProcessFreeBSD::CanDebug(lldb::TargetSP target_sp, return true; } -Error ProcessFreeBSD::DoAttachToProcessWithID( - lldb::pid_t pid, const ProcessAttachInfo &attach_info) { - Error error; +Status +ProcessFreeBSD::DoAttachToProcessWithID(lldb::pid_t pid, + const ProcessAttachInfo &attach_info) { + Status error; assert(m_monitor == NULL); Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); @@ -343,8 +344,8 @@ Error ProcessFreeBSD::DoAttachToProcessWithID( return error; } -Error ProcessFreeBSD::WillLaunch(Module *module) { - Error error; +Status ProcessFreeBSD::WillLaunch(Module *module) { + Status error; return error; } @@ -366,8 +367,9 @@ ProcessFreeBSD::GetFileSpec(const lldb_private::FileAction *file_action, return file_spec; } -Error ProcessFreeBSD::DoLaunch(Module *module, ProcessLaunchInfo &launch_info) { - Error error; +Status ProcessFreeBSD::DoLaunch(Module *module, + ProcessLaunchInfo &launch_info) { + Status error; assert(m_monitor == NULL); FileSpec working_dir = launch_info.GetWorkingDirectory(); @@ -456,8 +458,8 @@ addr_t ProcessFreeBSD::GetImageInfoAddress() { return LLDB_INVALID_ADDRESS; } -Error ProcessFreeBSD::DoHalt(bool &caused_stop) { - Error error; +Status ProcessFreeBSD::DoHalt(bool &caused_stop) { + Status error; if (IsStopped()) { caused_stop = false; @@ -470,8 +472,8 @@ Error ProcessFreeBSD::DoHalt(bool &caused_stop) { return error; } -Error ProcessFreeBSD::DoSignal(int signal) { - Error error; +Status ProcessFreeBSD::DoSignal(int signal) { + Status error; if (kill(GetID(), signal)) error.SetErrorToErrno(); @@ -479,8 +481,8 @@ Error ProcessFreeBSD::DoSignal(int signal) { return error; } -Error ProcessFreeBSD::DoDestroy() { - Error error; +Status ProcessFreeBSD::DoDestroy() { + Status error; if (!HasExited()) { assert(m_monitor); @@ -513,7 +515,7 @@ void ProcessFreeBSD::DoDidExec() { target->GetArchitecture()); FileSpecList executable_search_paths( Target::GetDefaultExecutableSearchPaths()); - Error error = platform_sp->ResolveExecutable( + Status error = platform_sp->ResolveExecutable( exe_module_spec, exe_module_sp, executable_search_paths.GetSize() ? &executable_search_paths : NULL); if (!error.Success()) @@ -589,19 +591,19 @@ bool ProcessFreeBSD::IsAlive() { } size_t ProcessFreeBSD::DoReadMemory(addr_t vm_addr, void *buf, size_t size, - Error &error) { + Status &error) { assert(m_monitor); return m_monitor->ReadMemory(vm_addr, buf, size, error); } size_t ProcessFreeBSD::DoWriteMemory(addr_t vm_addr, const void *buf, - size_t size, Error &error) { + size_t size, Status &error) { assert(m_monitor); return m_monitor->WriteMemory(vm_addr, buf, size, error); } addr_t ProcessFreeBSD::DoAllocateMemory(size_t size, uint32_t permissions, - Error &error) { + Status &error) { addr_t allocated_addr = LLDB_INVALID_ADDRESS; unsigned prot = 0; @@ -626,8 +628,8 @@ addr_t ProcessFreeBSD::DoAllocateMemory(size_t size, uint32_t permissions, return allocated_addr; } -Error ProcessFreeBSD::DoDeallocateMemory(lldb::addr_t addr) { - Error error; +Status ProcessFreeBSD::DoDeallocateMemory(lldb::addr_t addr) { + Status error; MMapMap::iterator pos = m_addr_to_mmap_size.find(addr); if (pos != m_addr_to_mmap_size.end() && InferiorCallMunmap(this, addr, pos->second)) @@ -691,16 +693,16 @@ ProcessFreeBSD::GetSoftwareBreakpointTrapOpcode(BreakpointSite *bp_site) { return opcode_size; } -Error ProcessFreeBSD::EnableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessFreeBSD::EnableBreakpointSite(BreakpointSite *bp_site) { return EnableSoftwareBreakpoint(bp_site); } -Error ProcessFreeBSD::DisableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessFreeBSD::DisableBreakpointSite(BreakpointSite *bp_site) { return DisableSoftwareBreakpoint(bp_site); } -Error ProcessFreeBSD::EnableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessFreeBSD::EnableWatchpoint(Watchpoint *wp, bool notify) { + Status error; if (wp) { user_id_t watchID = wp->GetID(); addr_t addr = wp->GetLoadAddress(); @@ -754,8 +756,8 @@ Error ProcessFreeBSD::EnableWatchpoint(Watchpoint *wp, bool notify) { return error; } -Error ProcessFreeBSD::DisableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessFreeBSD::DisableWatchpoint(Watchpoint *wp, bool notify) { + Status error; if (wp) { user_id_t watchID = wp->GetID(); addr_t addr = wp->GetLoadAddress(); @@ -797,8 +799,8 @@ Error ProcessFreeBSD::DisableWatchpoint(Watchpoint *wp, bool notify) { return error; } -Error ProcessFreeBSD::GetWatchpointSupportInfo(uint32_t &num) { - Error error; +Status ProcessFreeBSD::GetWatchpointSupportInfo(uint32_t &num) { + Status error; std::lock_guard<std::recursive_mutex> guard(m_thread_list.GetMutex()); FreeBSDThread *thread = static_cast<FreeBSDThread *>( m_thread_list.GetThreadAtIndex(0, false).get()); @@ -809,8 +811,8 @@ Error ProcessFreeBSD::GetWatchpointSupportInfo(uint32_t &num) { return error; } -Error ProcessFreeBSD::GetWatchpointSupportInfo(uint32_t &num, bool &after) { - Error error = GetWatchpointSupportInfo(num); +Status ProcessFreeBSD::GetWatchpointSupportInfo(uint32_t &num, bool &after) { + Status error = GetWatchpointSupportInfo(num); // Watchpoints trigger and halt the inferior after // the corresponding instruction has been executed. after = true; @@ -855,7 +857,7 @@ ByteOrder ProcessFreeBSD::GetByteOrder() const { return m_byte_order; } -size_t ProcessFreeBSD::PutSTDIN(const char *buf, size_t len, Error &error) { +size_t ProcessFreeBSD::PutSTDIN(const char *buf, size_t len, Status &error) { ssize_t status; if ((status = write(m_monitor->GetTerminalFD(), buf, len)) < 0) { error.SetErrorToErrno(); @@ -943,7 +945,7 @@ static size_t ReadMemoryCallback(EmulateInstruction *instruction, void *baton, lldb::addr_t addr, void *dst, size_t length) { EmulatorBaton *emulator_baton = static_cast<EmulatorBaton *>(baton); - Error error; + Status error; size_t bytes_read = emulator_baton->m_process->DoReadMemory(addr, dst, length, error); if (!error.Success()) @@ -998,9 +1000,9 @@ bool ProcessFreeBSD::SingleStepBreakpointHit( return false; } -Error ProcessFreeBSD::SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, - lldb::addr_t addr) { - Error error; +Status ProcessFreeBSD::SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, + lldb::addr_t addr) { + Status error; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); if (log) { @@ -1010,8 +1012,8 @@ Error ProcessFreeBSD::SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, // Validate the address. if (addr == LLDB_INVALID_ADDRESS) - return Error("ProcessFreeBSD::%s invalid load address specified.", - __FUNCTION__); + return Status("ProcessFreeBSD::%s invalid load address specified.", + __FUNCTION__); Breakpoint *const sw_step_break = m_process->GetTarget().CreateBreakpoint(addr, true, false).get(); @@ -1023,7 +1025,7 @@ Error ProcessFreeBSD::SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, __FUNCTION__, addr); m_threads_stepping_with_breakpoint.insert({tid, sw_step_break->GetID()}); - return Error(); + return Status(); } bool ProcessFreeBSD::IsSoftwareStepBreakpoint(lldb::tid_t tid) { @@ -1063,18 +1065,18 @@ bool ProcessFreeBSD::SupportHardwareSingleStepping() const { return true; } -Error ProcessFreeBSD::SetupSoftwareSingleStepping(lldb::tid_t tid) { +Status ProcessFreeBSD::SetupSoftwareSingleStepping(lldb::tid_t tid) { std::unique_ptr<EmulateInstruction> emulator_ap( EmulateInstruction::FindPlugin(GetTarget().GetArchitecture(), eInstructionTypePCModifying, nullptr)); if (emulator_ap == nullptr) - return Error("Instruction emulator not found!"); + return Status("Instruction emulator not found!"); FreeBSDThread *thread = static_cast<FreeBSDThread *>( m_thread_list.FindThreadByID(tid, false).get()); if (thread == NULL) - return Error("Thread not found not found!"); + return Status("Thread not found not found!"); lldb::RegisterContextSP register_context_sp = thread->GetRegisterContext(); @@ -1086,7 +1088,7 @@ Error ProcessFreeBSD::SetupSoftwareSingleStepping(lldb::tid_t tid) { emulator_ap->SetWriteRegCallback(&WriteRegisterCallback); if (!emulator_ap->ReadInstruction()) - return Error("Read instruction failed!"); + return Status("Read instruction failed!"); bool emulation_result = emulator_ap->EvaluateInstruction(eEmulateInstructionOptionAutoAdvancePC); @@ -1111,9 +1113,9 @@ Error ProcessFreeBSD::SetupSoftwareSingleStepping(lldb::tid_t tid) { // The instruction emulation failed after it modified the PC. It is an // unknown error where we can't continue because the next instruction is // modifying the PC but we don't know how. - return Error("Instruction emulation failed unexpectedly"); + return Status("Instruction emulation failed unexpectedly"); } SetSoftwareSingleStepBreakpoint(tid, next_pc); - return Error(); + return Status(); } diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h index 063eb6f6812..7ed2a56cd54 100644 --- a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h +++ b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h @@ -47,7 +47,7 @@ public: ~ProcessFreeBSD(); - virtual lldb_private::Error WillResume() override; + virtual lldb_private::Status WillResume() override; //------------------------------------------------------------------ // PluginInterface protocol @@ -65,27 +65,27 @@ public: bool CanDebug(lldb::TargetSP target_sp, bool plugin_specified_by_name) override; - lldb_private::Error WillLaunch(lldb_private::Module *module) override; + lldb_private::Status WillLaunch(lldb_private::Module *module) override; - lldb_private::Error DoAttachToProcessWithID( + lldb_private::Status DoAttachToProcessWithID( lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info) override; - lldb_private::Error + lldb_private::Status DoLaunch(lldb_private::Module *exe_module, lldb_private::ProcessLaunchInfo &launch_info) override; void DidLaunch() override; - lldb_private::Error DoResume() override; + lldb_private::Status DoResume() override; - lldb_private::Error DoHalt(bool &caused_stop) override; + lldb_private::Status DoHalt(bool &caused_stop) override; - lldb_private::Error DoDetach(bool keep_stopped) override; + lldb_private::Status DoDetach(bool keep_stopped) override; - lldb_private::Error DoSignal(int signal) override; + lldb_private::Status DoSignal(int signal) override; - lldb_private::Error DoDestroy() override; + lldb_private::Status DoDestroy() override; void DoDidExec() override; @@ -94,35 +94,35 @@ public: bool IsAlive() override; size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; size_t DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions, - lldb_private::Error &error) override; + lldb_private::Status &error) override; - lldb_private::Error DoDeallocateMemory(lldb::addr_t ptr) override; + lldb_private::Status DoDeallocateMemory(lldb::addr_t ptr) override; virtual size_t GetSoftwareBreakpointTrapOpcode(lldb_private::BreakpointSite *bp_site); - lldb_private::Error + lldb_private::Status EnableBreakpointSite(lldb_private::BreakpointSite *bp_site) override; - lldb_private::Error + lldb_private::Status DisableBreakpointSite(lldb_private::BreakpointSite *bp_site) override; - lldb_private::Error EnableWatchpoint(lldb_private::Watchpoint *wp, - bool notify = true) override; - - lldb_private::Error DisableWatchpoint(lldb_private::Watchpoint *wp, + lldb_private::Status EnableWatchpoint(lldb_private::Watchpoint *wp, bool notify = true) override; - lldb_private::Error GetWatchpointSupportInfo(uint32_t &num) override; + lldb_private::Status DisableWatchpoint(lldb_private::Watchpoint *wp, + bool notify = true) override; + + lldb_private::Status GetWatchpointSupportInfo(uint32_t &num) override; - lldb_private::Error GetWatchpointSupportInfo(uint32_t &num, - bool &after) override; + lldb_private::Status GetWatchpointSupportInfo(uint32_t &num, + bool &after) override; virtual uint32_t UpdateThreadListIfNeeded(); @@ -134,7 +134,7 @@ public: lldb::addr_t GetImageInfoAddress() override; size_t PutSTDIN(const char *buf, size_t len, - lldb_private::Error &error) override; + lldb_private::Status &error) override; const lldb::DataBufferSP GetAuxvData() override; @@ -169,10 +169,10 @@ public: void *baton, lldb_private::StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id); - lldb_private::Error SetupSoftwareSingleStepping(lldb::tid_t tid); + lldb_private::Status SetupSoftwareSingleStepping(lldb::tid_t tid); - lldb_private::Error SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, - lldb::addr_t addr); + lldb_private::Status SetSoftwareSingleStepBreakpoint(lldb::tid_t tid, + lldb::addr_t addr); bool IsSoftwareStepBreakpoint(lldb::tid_t tid); diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp index 68ab4165116..1667490f134 100644 --- a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp @@ -29,7 +29,7 @@ #include "lldb/Target/RegisterContext.h" #include "lldb/Target/Thread.h" #include "lldb/Target/UnixSignals.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "FreeBSDThread.h" #include "Plugins/Process/POSIX/CrashReason.h" @@ -154,7 +154,7 @@ PtraceWrapper((req), (pid), (addr), (data)) // functions without needed to go thru the thread funnel. static size_t DoReadMemory(lldb::pid_t pid, lldb::addr_t vm_addr, void *buf, - size_t size, Error &error) { + size_t size, Status &error) { struct ptrace_io_desc pi_desc; pi_desc.piod_op = PIOD_READ_D; @@ -168,7 +168,7 @@ static size_t DoReadMemory(lldb::pid_t pid, lldb::addr_t vm_addr, void *buf, } static size_t DoWriteMemory(lldb::pid_t pid, lldb::addr_t vm_addr, - const void *buf, size_t size, Error &error) { + const void *buf, size_t size, Status &error) { struct ptrace_io_desc pi_desc; pi_desc.piod_op = PIOD_WRITE_D; @@ -183,7 +183,7 @@ static size_t DoWriteMemory(lldb::pid_t pid, lldb::addr_t vm_addr, // Simple helper function to ensure flags are enabled on the given file // descriptor. -static bool EnsureFDFlags(int fd, int flags, Error &error) { +static bool EnsureFDFlags(int fd, int flags, Status &error) { int status; if ((status = fcntl(fd, F_GETFL)) == -1) { @@ -221,7 +221,7 @@ public: /// @brief Implements ProcessMonitor::ReadMemory. class ReadOperation : public Operation { public: - ReadOperation(lldb::addr_t addr, void *buff, size_t size, Error &error, + ReadOperation(lldb::addr_t addr, void *buff, size_t size, Status &error, size_t &result) : m_addr(addr), m_buff(buff), m_size(size), m_error(error), m_result(result) {} @@ -232,7 +232,7 @@ private: lldb::addr_t m_addr; void *m_buff; size_t m_size; - Error &m_error; + Status &m_error; size_t &m_result; }; @@ -247,8 +247,8 @@ void ReadOperation::Execute(ProcessMonitor *monitor) { /// @brief Implements ProcessMonitor::WriteMemory. class WriteOperation : public Operation { public: - WriteOperation(lldb::addr_t addr, const void *buff, size_t size, Error &error, - size_t &result) + WriteOperation(lldb::addr_t addr, const void *buff, size_t size, + Status &error, size_t &result) : m_addr(addr), m_buff(buff), m_size(size), m_error(error), m_result(result) {} @@ -258,7 +258,7 @@ private: lldb::addr_t m_addr; const void *m_buff; size_t m_size; - Error &m_error; + Status &m_error; size_t &m_result; }; @@ -672,12 +672,12 @@ void KillOperation::Execute(ProcessMonitor *monitor) { /// @brief Implements ProcessMonitor::Detach. class DetachOperation : public Operation { public: - DetachOperation(Error &result) : m_error(result) {} + DetachOperation(Status &result) : m_error(result) {} void Execute(ProcessMonitor *monitor); private: - Error &m_error; + Status &m_error; }; void DetachOperation::Execute(ProcessMonitor *monitor) { @@ -731,7 +731,7 @@ ProcessMonitor::ProcessMonitor( const FileSpec &stdout_file_spec, const FileSpec &stderr_file_spec, const FileSpec &working_dir, const lldb_private::ProcessLaunchInfo & /* launch_info */, - lldb_private::Error &error) + lldb_private::Status &error) : m_process(static_cast<ProcessFreeBSD *>(process)), m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) { using namespace std::placeholders; @@ -777,7 +777,7 @@ WAIT_AGAIN: } ProcessMonitor::ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid, - lldb_private::Error &error) + lldb_private::Status &error) : m_process(static_cast<ProcessFreeBSD *>(process)), m_pid(pid), m_terminal_fd(-1), m_operation(0) { using namespace std::placeholders; @@ -824,7 +824,7 @@ ProcessMonitor::~ProcessMonitor() { StopMonitor(); } //------------------------------------------------------------------------------ // Thread setup and tear down. -void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Error &error) { +void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) { static const char *g_thread_name = "lldb.process.freebsd.operation"; if (m_operation_thread.IsJoinable()) @@ -992,7 +992,7 @@ FINISH: } void ProcessMonitor::StartAttachOpThread(AttachArgs *args, - lldb_private::Error &error) { + lldb_private::Status &error) { static const char *g_thread_name = "lldb.process.freebsd.operation"; if (m_operation_thread.IsJoinable()) @@ -1240,7 +1240,7 @@ void ProcessMonitor::DoOperation(Operation *op) { } size_t ProcessMonitor::ReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Error &error) { + Status &error) { size_t result; ReadOperation op(vm_addr, buf, size, error, result); DoOperation(&op); @@ -1248,7 +1248,7 @@ size_t ProcessMonitor::ReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, } size_t ProcessMonitor::WriteMemory(lldb::addr_t vm_addr, const void *buf, - size_t size, lldb_private::Error &error) { + size_t size, lldb_private::Status &error) { size_t result; WriteOperation op(vm_addr, buf, size, error, result); DoOperation(&op); @@ -1389,8 +1389,8 @@ bool ProcessMonitor::GetEventMessage(lldb::tid_t tid, unsigned long *message) { return result; } -lldb_private::Error ProcessMonitor::Detach(lldb::tid_t tid) { - lldb_private::Error error; +lldb_private::Status ProcessMonitor::Detach(lldb::tid_t tid) { + lldb_private::Status error; if (tid != LLDB_INVALID_THREAD_ID) { DetachOperation op(error); DoOperation(&op); diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h index 58629189b7b..0963453a31b 100644 --- a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h +++ b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h @@ -23,7 +23,7 @@ #include "lldb/lldb-types.h" namespace lldb_private { -class Error; +class Status; class Module; class Scalar; } // End lldb_private namespace. @@ -54,10 +54,10 @@ public: const lldb_private::FileSpec &stderr_file_spec, const lldb_private::FileSpec &working_dir, const lldb_private::ProcessLaunchInfo &launch_info, - lldb_private::Error &error); + lldb_private::Status &error); ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid, - lldb_private::Error &error); + lldb_private::Status &error); ~ProcessMonitor(); @@ -86,14 +86,14 @@ public: /// /// This method is provided to implement Process::DoReadMemory. size_t ReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - lldb_private::Error &error); + lldb_private::Status &error); /// Writes @p size bytes from address @p vm_adder in the inferior process /// address space. /// /// This method is provided to implement Process::DoWriteMemory. size_t WriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, - lldb_private::Error &error); + lldb_private::Status &error); /// Reads the contents from the register identified by the given (architecture /// dependent) offset. @@ -178,7 +178,7 @@ public: /// Terminate the traced process. bool Kill(); - lldb_private::Error Detach(lldb::tid_t tid); + lldb_private::Status Detach(lldb::tid_t tid); void StopMonitor(); @@ -210,7 +210,7 @@ private: ProcessMonitor *m_monitor; // The monitor performing the attach. sem_t m_semaphore; // Posted to once operation complete. - lldb_private::Error m_error; // Set if process operation failed. + lldb_private::Status m_error; // Set if process operation failed. }; /// @class LauchArgs @@ -238,7 +238,7 @@ private: const lldb_private::FileSpec m_working_dir; // Working directory or empty. }; - void StartLaunchOpThread(LaunchArgs *args, lldb_private::Error &error); + void StartLaunchOpThread(LaunchArgs *args, lldb_private::Status &error); static void *LaunchOpThread(void *arg); @@ -252,7 +252,7 @@ private: lldb::pid_t m_pid; // pid of the process to be attached. }; - void StartAttachOpThread(AttachArgs *args, lldb_private::Error &error); + void StartAttachOpThread(AttachArgs *args, lldb_private::Status &error); static void *AttachOpThread(void *args); diff --git a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.cpp b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.cpp index 14171d614c9..59d42b9ad72 100644 --- a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.cpp @@ -75,7 +75,7 @@ bool RegisterContextPOSIXProcessMonitor_arm::WriteRegister( // Read the full register. if (ReadRegister(full_reg_info, full_value)) { - Error error; + Status error; ByteOrder byte_order = GetByteOrder(); uint8_t dst[RegisterValue::kMaxRegisterByteSize]; diff --git a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp index 8a8eb0520cc..93ffeb5ea79 100644 --- a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp @@ -77,7 +77,7 @@ bool RegisterContextPOSIXProcessMonitor_arm64::WriteRegister( // Read the full register. if (ReadRegister(full_reg_info, full_value)) { - lldb_private::Error error; + lldb_private::Status error; lldb::ByteOrder byte_order = GetByteOrder(); uint8_t dst[lldb_private::RegisterValue::kMaxRegisterByteSize]; diff --git a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_mips64.cpp b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_mips64.cpp index ab50a5db3f3..b911ee22201 100644 --- a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_mips64.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_mips64.cpp @@ -76,7 +76,7 @@ bool RegisterContextPOSIXProcessMonitor_mips64::WriteRegister( // Read the full register. if (ReadRegister(full_reg_info, full_value)) { - Error error; + Status error; ByteOrder byte_order = GetByteOrder(); uint8_t dst[RegisterValue::kMaxRegisterByteSize]; diff --git a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_powerpc.cpp b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_powerpc.cpp index 70eec945ce8..bc1d4df89fc 100644 --- a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_powerpc.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_powerpc.cpp @@ -88,7 +88,7 @@ bool RegisterContextPOSIXProcessMonitor_powerpc::WriteRegister( // Read the full register. if (ReadRegister(full_reg_info, full_value)) { - Error error; + Status error; ByteOrder byte_order = GetByteOrder(); uint8_t dst[RegisterValue::kMaxRegisterByteSize]; diff --git a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_x86.cpp b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_x86.cpp index 036306058ff..1cd8f1aafa6 100644 --- a/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_x86.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_x86.cpp @@ -130,7 +130,7 @@ bool RegisterContextPOSIXProcessMonitor_x86_64::WriteRegister( // Read the full register. if (ReadRegister(full_reg_info, full_value)) { - Error error; + Status error; ByteOrder byte_order = GetByteOrder(); uint8_t dst[RegisterValue::kMaxRegisterByteSize]; diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp index 914d690ad88..15e7c9b5f69 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -40,8 +40,8 @@ #include "lldb/Target/Process.h" #include "lldb/Target/ProcessLaunchInfo.h" #include "lldb/Target/Target.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/LLDBAssert.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/StringExtractor.h" #include "NativeThreadLinux.h" @@ -193,8 +193,8 @@ static_assert(sizeof(long) >= k_ptrace_word_size, // Simple helper function to ensure flags are enabled on the given file // descriptor. -static Error EnsureFDFlags(int fd, int flags) { - Error error; +static Status EnsureFDFlags(int fd, int flags) { + Status error; int status = fcntl(fd, F_GETFL); if (status == -1) { @@ -214,13 +214,13 @@ static Error EnsureFDFlags(int fd, int flags) { // Public Static Methods // ----------------------------------------------------------------------------- -Error NativeProcessProtocol::Launch( +Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); - Error error; + Status error; // Verify the working directory is valid if one was specified. FileSpec working_dir{launch_info.GetWorkingDirectory()}; @@ -254,7 +254,7 @@ Error NativeProcessProtocol::Launch( return error; } -Error NativeProcessProtocol::Attach( +Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); @@ -262,7 +262,7 @@ Error NativeProcessProtocol::Attach( // Retrieve the architecture for the running process. ArchSpec process_arch; - Error error = ResolveProcessArchitecture(pid, process_arch); + Status error = ResolveProcessArchitecture(pid, process_arch); if (!error.Success()) return error; @@ -292,7 +292,7 @@ NativeProcessLinux::NativeProcessLinux() m_pending_notification_tid(LLDB_INVALID_THREAD_ID) {} void NativeProcessLinux::AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, - Error &error) { + Status &error) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid = {0:x}", pid); @@ -314,9 +314,9 @@ void NativeProcessLinux::AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Attach(pid, error); } -Error NativeProcessLinux::LaunchInferior(MainLoop &mainloop, - ProcessLaunchInfo &launch_info) { - Error error; +Status NativeProcessLinux::LaunchInferior(MainLoop &mainloop, + ProcessLaunchInfo &launch_info) { + Status error; m_sigchld_handle = mainloop.RegisterSignal( SIGCHLD, [this](MainLoopBase &) { SigchldHandler(); }, error); if (!m_sigchld_handle) @@ -402,7 +402,7 @@ Error NativeProcessLinux::LaunchInferior(MainLoop &mainloop, return error; } -::pid_t NativeProcessLinux::Attach(lldb::pid_t pid, Error &error) { +::pid_t NativeProcessLinux::Attach(lldb::pid_t pid, Status &error) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); // Use a map to keep track of the threads which we have attached/need to @@ -484,7 +484,7 @@ Error NativeProcessLinux::LaunchInferior(MainLoop &mainloop, return pid; } -Error NativeProcessLinux::SetDefaultPtraceOpts(lldb::pid_t pid) { +Status NativeProcessLinux::SetDefaultPtraceOpts(lldb::pid_t pid) { long ptrace_opts = 0; // Have the child raise an event on exit. This is used to keep the child in @@ -857,7 +857,7 @@ void NativeProcessLinux::MonitorSIGTRAP(const siginfo_t &info, { // If a watchpoint was hit, report it uint32_t wp_index; - Error error = thread.GetRegisterContext()->GetWatchpointHitIndex( + Status error = thread.GetRegisterContext()->GetWatchpointHitIndex( wp_index, (uintptr_t)info.si_addr); if (error.Fail()) LLDB_LOG(log, @@ -894,7 +894,7 @@ void NativeProcessLinux::MonitorSIGTRAP(const siginfo_t &info, { // If a watchpoint was hit, report it uint32_t wp_index; - Error error = thread.GetRegisterContext()->GetWatchpointHitIndex( + Status error = thread.GetRegisterContext()->GetWatchpointHitIndex( wp_index, LLDB_INVALID_ADDRESS); if (error.Fail()) LLDB_LOG(log, @@ -950,7 +950,7 @@ void NativeProcessLinux::MonitorBreakpoint(NativeThreadLinux &thread) { // Mark the thread as stopped at breakpoint. thread.SetStoppedByBreakpoint(); - Error error = FixupBreakpointPCAsNeeded(thread); + Status error = FixupBreakpointPCAsNeeded(thread); if (error.Fail()) LLDB_LOG(log, "pid = {0} fixup: {1}", thread.GetID(), error); @@ -1032,7 +1032,7 @@ void NativeProcessLinux::MonitorSignal(const siginfo_t &info, } else { // We can end up here if stop was initiated by LLGS but by this time a // thread stop has occurred - maybe initiated by another event. - Error error = ResumeThread(thread, thread.GetState(), 0); + Status error = ResumeThread(thread, thread.GetState(), 0); if (error.Fail()) LLDB_LOG(log, "failed to resume thread {0}: {1}", thread.GetID(), error); @@ -1108,7 +1108,7 @@ static bool ReadRegisterCallback(EmulateInstruction *instruction, void *baton, emulator_baton->m_reg_context->GetRegisterInfo( eRegisterKindDWARF, reg_info->kinds[eRegisterKindDWARF]); - Error error = + Status error = emulator_baton->m_reg_context->ReadRegister(full_reg_info, reg_value); if (error.Success()) return true; @@ -1140,9 +1140,9 @@ static lldb::addr_t ReadFlags(NativeRegisterContext *regsiter_context) { LLDB_INVALID_ADDRESS); } -Error NativeProcessLinux::SetupSoftwareSingleStepping( - NativeThreadLinux &thread) { - Error error; +Status +NativeProcessLinux::SetupSoftwareSingleStepping(NativeThreadLinux &thread) { + Status error; NativeRegisterContextSP register_context_sp = thread.GetRegisterContext(); std::unique_ptr<EmulateInstruction> emulator_ap( @@ -1150,7 +1150,7 @@ Error NativeProcessLinux::SetupSoftwareSingleStepping( nullptr)); if (emulator_ap == nullptr) - return Error("Instruction emulator not found!"); + return Status("Instruction emulator not found!"); EmulatorBaton baton(this, register_context_sp.get()); emulator_ap->SetBaton(&baton); @@ -1160,7 +1160,7 @@ Error NativeProcessLinux::SetupSoftwareSingleStepping( emulator_ap->SetWriteRegCallback(&WriteRegisterCallback); if (!emulator_ap->ReadInstruction()) - return Error("Read instruction failed!"); + return Status("Read instruction failed!"); bool emulation_result = emulator_ap->EvaluateInstruction(eEmulateInstructionOptionAutoAdvancePC); @@ -1198,7 +1198,7 @@ Error NativeProcessLinux::SetupSoftwareSingleStepping( // The instruction emulation failed after it modified the PC. It is an // unknown error where we can't continue because the next instruction is // modifying the PC but we don't know how. - return Error("Instruction emulation failed unexpectedly."); + return Status("Instruction emulation failed unexpectedly."); } if (m_arch.GetMachine() == llvm::Triple::arm) { @@ -1222,13 +1222,13 @@ Error NativeProcessLinux::SetupSoftwareSingleStepping( // If setting the breakpoint fails because next_pc is out of // the address space, ignore it and let the debugee segfault. if (error.GetError() == EIO || error.GetError() == EFAULT) { - return Error(); + return Status(); } else if (error.Fail()) return error; m_threads_stepping_with_breakpoint.insert({thread.GetID(), next_pc}); - return Error(); + return Status(); } bool NativeProcessLinux::SupportHardwareSingleStepping() const { @@ -1241,7 +1241,7 @@ bool NativeProcessLinux::SupportHardwareSingleStepping() const { return true; } -Error NativeProcessLinux::Resume(const ResumeActionList &resume_actions) { +Status NativeProcessLinux::Resume(const ResumeActionList &resume_actions) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid {0}", GetID()); @@ -1257,7 +1257,7 @@ Error NativeProcessLinux::Resume(const ResumeActionList &resume_actions) { continue; if (action->state == eStateStepping) { - Error error = SetupSoftwareSingleStepping( + Status error = SetupSoftwareSingleStepping( static_cast<NativeThreadLinux &>(*thread_sp)); if (error.Fail()) return error; @@ -1295,18 +1295,18 @@ Error NativeProcessLinux::Resume(const ResumeActionList &resume_actions) { llvm_unreachable("Unexpected state"); default: - return Error("NativeProcessLinux::%s (): unexpected state %s specified " - "for pid %" PRIu64 ", tid %" PRIu64, - __FUNCTION__, StateAsCString(action->state), GetID(), - thread_sp->GetID()); + return Status("NativeProcessLinux::%s (): unexpected state %s specified " + "for pid %" PRIu64 ", tid %" PRIu64, + __FUNCTION__, StateAsCString(action->state), GetID(), + thread_sp->GetID()); } } - return Error(); + return Status(); } -Error NativeProcessLinux::Halt() { - Error error; +Status NativeProcessLinux::Halt() { + Status error; if (kill(GetID(), SIGSTOP) != 0) error.SetErrorToErrno(); @@ -1314,8 +1314,8 @@ Error NativeProcessLinux::Halt() { return error; } -Error NativeProcessLinux::Detach() { - Error error; +Status NativeProcessLinux::Detach() { + Status error; // Stop monitoring the inferior. m_sigchld_handle.reset(); @@ -1325,7 +1325,7 @@ Error NativeProcessLinux::Detach() { return error; for (auto thread_sp : m_threads) { - Error e = Detach(thread_sp->GetID()); + Status e = Detach(thread_sp->GetID()); if (e.Fail()) error = e; // Save the error, but still attempt to detach from other threads. @@ -1334,8 +1334,8 @@ Error NativeProcessLinux::Detach() { return error; } -Error NativeProcessLinux::Signal(int signo) { - Error error; +Status NativeProcessLinux::Signal(int signo) { + Status error; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "sending signal {0} ({1}) to pid {1}", signo, @@ -1347,7 +1347,7 @@ Error NativeProcessLinux::Signal(int signo) { return error; } -Error NativeProcessLinux::Interrupt() { +Status NativeProcessLinux::Interrupt() { // Pick a running thread (or if none, a not-dead stopped thread) as // the chosen thread that will be the stop-reason thread. Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); @@ -1375,8 +1375,8 @@ Error NativeProcessLinux::Interrupt() { } if (!running_thread_sp && !stopped_thread_sp) { - Error error("found no running/stepping or live stopped threads as target " - "for interrupt"); + Status error("found no running/stepping or live stopped threads as target " + "for interrupt"); LLDB_LOG(log, "skipping due to error: {0}", error); return error; @@ -1391,14 +1391,14 @@ Error NativeProcessLinux::Interrupt() { StopRunningThreads(deferred_signal_thread_sp->GetID()); - return Error(); + return Status(); } -Error NativeProcessLinux::Kill() { +Status NativeProcessLinux::Kill() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid {0}", GetID()); - Error error; + Status error; switch (m_state) { case StateType::eStateInvalid: @@ -1430,7 +1430,7 @@ Error NativeProcessLinux::Kill() { return error; } -static Error +static Status ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, MemoryRegionInfo &memory_region_info) { memory_region_info.Clear(); @@ -1447,7 +1447,7 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, // Parse out hyphen separating start and end address from range. if (!line_extractor.GetBytesLeft() || (line_extractor.GetChar() != '-')) - return Error( + return Status( "malformed /proc/{pid}/maps entry, missing dash between address range"); // Parse out the ending address @@ -1455,7 +1455,8 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, // Parse out the space after the address. if (!line_extractor.GetBytesLeft() || (line_extractor.GetChar() != ' ')) - return Error("malformed /proc/{pid}/maps entry, missing space after range"); + return Status( + "malformed /proc/{pid}/maps entry, missing space after range"); // Save the range. memory_region_info.GetRange().SetRangeBase(start_address); @@ -1467,8 +1468,8 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, // Parse out each permission entry. if (line_extractor.GetBytesLeft() < 4) - return Error("malformed /proc/{pid}/maps entry, missing some portion of " - "permissions"); + return Status("malformed /proc/{pid}/maps entry, missing some portion of " + "permissions"); // Handle read permission. const char read_perm_char = line_extractor.GetChar(); @@ -1477,7 +1478,7 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, else if (read_perm_char == '-') memory_region_info.SetReadable(MemoryRegionInfo::OptionalBool::eNo); else - return Error("unexpected /proc/{pid}/maps read permission char"); + return Status("unexpected /proc/{pid}/maps read permission char"); // Handle write permission. const char write_perm_char = line_extractor.GetChar(); @@ -1486,7 +1487,7 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, else if (write_perm_char == '-') memory_region_info.SetWritable(MemoryRegionInfo::OptionalBool::eNo); else - return Error("unexpected /proc/{pid}/maps write permission char"); + return Status("unexpected /proc/{pid}/maps write permission char"); // Handle execute permission. const char exec_perm_char = line_extractor.GetChar(); @@ -1495,7 +1496,7 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, else if (exec_perm_char == '-') memory_region_info.SetExecutable(MemoryRegionInfo::OptionalBool::eNo); else - return Error("unexpected /proc/{pid}/maps exec permission char"); + return Status("unexpected /proc/{pid}/maps exec permission char"); line_extractor.GetChar(); // Read the private bit line_extractor.SkipSpaces(); // Skip the separator @@ -1511,11 +1512,11 @@ ParseMemoryRegionInfoFromProcMapsLine(llvm::StringRef &maps_line, if (name) memory_region_info.SetName(name); - return Error(); + return Status(); } -Error NativeProcessLinux::GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) { +Status NativeProcessLinux::GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) { // FIXME review that the final memory region returned extends to the end of // the virtual address space, // with no perms if it is not mapped. @@ -1526,10 +1527,10 @@ Error NativeProcessLinux::GetMemoryRegionInfo(lldb::addr_t load_addr, if (m_supports_mem_region == LazyBool::eLazyBoolNo) { // We're done. - return Error("unsupported"); + return Status("unsupported"); } - Error error = PopulateMemoryRegionCache(); + Status error = PopulateMemoryRegionCache(); if (error.Fail()) { return error; } @@ -1585,7 +1586,7 @@ Error NativeProcessLinux::GetMemoryRegionInfo(lldb::addr_t load_addr, return error; } -Error NativeProcessLinux::PopulateMemoryRegionCache() { +Status NativeProcessLinux::PopulateMemoryRegionCache() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); // If our cache is empty, pull the latest. There should always be at least @@ -1593,7 +1594,7 @@ Error NativeProcessLinux::PopulateMemoryRegionCache() { if (!m_mem_region_cache.empty()) { LLDB_LOG(log, "reusing {0} cached memory region entries", m_mem_region_cache.size()); - return Error(); + return Status(); } auto BufferOrError = getProcFile(GetID(), "maps"); @@ -1606,7 +1607,8 @@ Error NativeProcessLinux::PopulateMemoryRegionCache() { StringRef Line; std::tie(Line, Rest) = Rest.split('\n'); MemoryRegionInfo info; - const Error parse_error = ParseMemoryRegionInfoFromProcMapsLine(Line, info); + const Status parse_error = + ParseMemoryRegionInfoFromProcMapsLine(Line, info); if (parse_error.Fail()) { LLDB_LOG(log, "failed to parse proc maps line '{0}': {1}", Line, parse_error); @@ -1625,7 +1627,7 @@ Error NativeProcessLinux::PopulateMemoryRegionCache() { LLDB_LOG(log, "failed to find any procfs maps entries, assuming no support " "for memory region metadata retrieval"); - return Error("not supported"); + return Status("not supported"); } LLDB_LOG(log, "read {0} memory region entries from /proc/{1}/maps", @@ -1633,7 +1635,7 @@ Error NativeProcessLinux::PopulateMemoryRegionCache() { // We support memory retrieval, remember that. m_supports_mem_region = LazyBool::eLazyBoolYes; - return Error(); + return Status(); } void NativeProcessLinux::DoStopIDBumped(uint32_t newBumpId) { @@ -1644,13 +1646,13 @@ void NativeProcessLinux::DoStopIDBumped(uint32_t newBumpId) { m_mem_region_cache.clear(); } -Error NativeProcessLinux::AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) { +Status NativeProcessLinux::AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) { // FIXME implementing this requires the equivalent of // InferiorCallPOSIX::InferiorCallMmap, which depends on // functional ThreadPlans working with Native*Protocol. #if 1 - return Error("not implemented yet"); + return Status("not implemented yet"); #else addr = LLDB_INVALID_ADDRESS; @@ -1668,20 +1670,20 @@ Error NativeProcessLinux::AllocateMemory(size_t size, uint32_t permissions, if (InferiorCallMmap(this, addr, 0, size, prot, eMmapFlagsAnon | eMmapFlagsPrivate, -1, 0)) { m_addr_to_mmap_size[addr] = size; - return Error(); + return Status(); } else { addr = LLDB_INVALID_ADDRESS; - return Error("unable to allocate %" PRIu64 - " bytes of memory with permissions %s", - size, GetPermissionsAsCString(permissions)); + return Status("unable to allocate %" PRIu64 + " bytes of memory with permissions %s", + size, GetPermissionsAsCString(permissions)); } #endif } -Error NativeProcessLinux::DeallocateMemory(lldb::addr_t addr) { +Status NativeProcessLinux::DeallocateMemory(lldb::addr_t addr) { // FIXME see comments in AllocateMemory - required lower-level // bits not in place yet (ThreadPlans) - return Error("not implemented"); + return Status("not implemented"); } lldb::addr_t NativeProcessLinux::GetSharedLibraryInfoAddress() { @@ -1702,7 +1704,7 @@ bool NativeProcessLinux::GetArchitecture(ArchSpec &arch) const { return true; } -Error NativeProcessLinux::GetSoftwareBreakpointPCOffset( +Status NativeProcessLinux::GetSoftwareBreakpointPCOffset( uint32_t &actual_opcode_size) { // FIXME put this behind a breakpoint protocol class that can be // set per architecture. Need ARM, MIPS support here. @@ -1713,11 +1715,11 @@ Error NativeProcessLinux::GetSoftwareBreakpointPCOffset( case llvm::Triple::x86: case llvm::Triple::x86_64: actual_opcode_size = static_cast<uint32_t>(sizeof(g_i386_opcode)); - return Error(); + return Status(); case llvm::Triple::systemz: actual_opcode_size = static_cast<uint32_t>(sizeof(g_s390x_opcode)); - return Error(); + return Status(); case llvm::Triple::arm: case llvm::Triple::aarch64: @@ -1727,30 +1729,30 @@ Error NativeProcessLinux::GetSoftwareBreakpointPCOffset( case llvm::Triple::mipsel: // On these architectures the PC don't get updated for breakpoint hits actual_opcode_size = 0; - return Error(); + return Status(); default: assert(false && "CPU type not supported!"); - return Error("CPU type not supported"); + return Status("CPU type not supported"); } } -Error NativeProcessLinux::SetBreakpoint(lldb::addr_t addr, uint32_t size, - bool hardware) { +Status NativeProcessLinux::SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) { if (hardware) return SetHardwareBreakpoint(addr, size); else return SetSoftwareBreakpoint(addr, size); } -Error NativeProcessLinux::RemoveBreakpoint(lldb::addr_t addr, bool hardware) { +Status NativeProcessLinux::RemoveBreakpoint(lldb::addr_t addr, bool hardware) { if (hardware) return RemoveHardwareBreakpoint(addr); else return NativeProcessProtocol::RemoveBreakpoint(addr); } -Error NativeProcessLinux::GetSoftwareBreakpointTrapOpcode( +Status NativeProcessLinux::GetSoftwareBreakpointTrapOpcode( size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) { // FIXME put this behind a breakpoint protocol class that can be set per @@ -1769,49 +1771,49 @@ Error NativeProcessLinux::GetSoftwareBreakpointTrapOpcode( case llvm::Triple::aarch64: trap_opcode_bytes = g_aarch64_opcode; actual_opcode_size = sizeof(g_aarch64_opcode); - return Error(); + return Status(); case llvm::Triple::arm: switch (trap_opcode_size_hint) { case 2: trap_opcode_bytes = g_thumb_breakpoint_opcode; actual_opcode_size = sizeof(g_thumb_breakpoint_opcode); - return Error(); + return Status(); case 4: trap_opcode_bytes = g_arm_breakpoint_opcode; actual_opcode_size = sizeof(g_arm_breakpoint_opcode); - return Error(); + return Status(); default: assert(false && "Unrecognised trap opcode size hint!"); - return Error("Unrecognised trap opcode size hint!"); + return Status("Unrecognised trap opcode size hint!"); } case llvm::Triple::x86: case llvm::Triple::x86_64: trap_opcode_bytes = g_i386_opcode; actual_opcode_size = sizeof(g_i386_opcode); - return Error(); + return Status(); case llvm::Triple::mips: case llvm::Triple::mips64: trap_opcode_bytes = g_mips64_opcode; actual_opcode_size = sizeof(g_mips64_opcode); - return Error(); + return Status(); case llvm::Triple::mipsel: case llvm::Triple::mips64el: trap_opcode_bytes = g_mips64el_opcode; actual_opcode_size = sizeof(g_mips64el_opcode); - return Error(); + return Status(); case llvm::Triple::systemz: trap_opcode_bytes = g_s390x_opcode; actual_opcode_size = sizeof(g_s390x_opcode); - return Error(); + return Status(); default: assert(false && "CPU type not supported!"); - return Error("CPU type not supported"); + return Status("CPU type not supported"); } } @@ -1964,8 +1966,8 @@ NativeProcessLinux::GetCrashReasonForSIGBUS(const siginfo_t *info) } #endif -Error NativeProcessLinux::ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) { +Status NativeProcessLinux::ReadMemory(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) { if (ProcessVmReadvSupported()) { // The process_vm_readv path is about 50 times faster than ptrace api. We // want to use @@ -1989,7 +1991,7 @@ Error NativeProcessLinux::ReadMemory(lldb::addr_t addr, void *buf, size_t size, size, addr, success ? "Success" : strerror(errno)); if (success) - return Error(); + return Status(); // else the call failed for some reason, let's retry the read using ptrace // api. } @@ -2002,7 +2004,7 @@ Error NativeProcessLinux::ReadMemory(lldb::addr_t addr, void *buf, size_t size, LLDB_LOG(log, "addr = {0}, buf = {1}, size = {2}", addr, buf, size); for (bytes_read = 0; bytes_read < size; bytes_read += remainder) { - Error error = NativeProcessLinux::PtraceWrapper( + Status error = NativeProcessLinux::PtraceWrapper( PTRACE_PEEKDATA, GetID(), (void *)addr, nullptr, 0, &data); if (error.Fail()) return error; @@ -2017,23 +2019,23 @@ Error NativeProcessLinux::ReadMemory(lldb::addr_t addr, void *buf, size_t size, addr += k_ptrace_word_size; dst += k_ptrace_word_size; } - return Error(); + return Status(); } -Error NativeProcessLinux::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, - size_t size, - size_t &bytes_read) { - Error error = ReadMemory(addr, buf, size, bytes_read); +Status NativeProcessLinux::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, + size_t size, + size_t &bytes_read) { + Status error = ReadMemory(addr, buf, size, bytes_read); if (error.Fail()) return error; return m_breakpoint_list.RemoveTrapsFromBuffer(addr, buf, size); } -Error NativeProcessLinux::WriteMemory(lldb::addr_t addr, const void *buf, - size_t size, size_t &bytes_written) { +Status NativeProcessLinux::WriteMemory(lldb::addr_t addr, const void *buf, + size_t size, size_t &bytes_written) { const unsigned char *src = static_cast<const unsigned char *>(buf); size_t remainder; - Error error; + Status error; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_MEMORY)); LLDB_LOG(log, "addr = {0}, buf = {1}, size = {2}", addr, buf, size); @@ -2075,18 +2077,18 @@ Error NativeProcessLinux::WriteMemory(lldb::addr_t addr, const void *buf, return error; } -Error NativeProcessLinux::GetSignalInfo(lldb::tid_t tid, void *siginfo) { +Status NativeProcessLinux::GetSignalInfo(lldb::tid_t tid, void *siginfo) { return PtraceWrapper(PTRACE_GETSIGINFO, tid, nullptr, siginfo); } -Error NativeProcessLinux::GetEventMessage(lldb::tid_t tid, - unsigned long *message) { +Status NativeProcessLinux::GetEventMessage(lldb::tid_t tid, + unsigned long *message) { return PtraceWrapper(PTRACE_GETEVENTMSG, tid, nullptr, message); } -Error NativeProcessLinux::Detach(lldb::tid_t tid) { +Status NativeProcessLinux::Detach(lldb::tid_t tid) { if (tid == LLDB_INVALID_THREAD_ID) - return Error(); + return Status(); return PtraceWrapper(PTRACE_DETACH, tid); } @@ -2137,10 +2139,11 @@ NativeThreadLinuxSP NativeProcessLinux::AddThread(lldb::tid_t thread_id) { return thread_sp; } -Error NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { +Status +NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); - Error error; + Status error; // Find out the size of a breakpoint (might depend on where we are in the // code). @@ -2179,7 +2182,7 @@ Error NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { "pid {0} no lldb breakpoint found at current pc with " "adjustment: {1}", GetID(), breakpoint_addr); - return Error(); + return Status(); } // If the breakpoint is not a software breakpoint, nothing to do. @@ -2188,7 +2191,7 @@ Error NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { log, "pid {0} breakpoint found at {1:x}, not software, nothing to adjust", GetID(), breakpoint_addr); - return Error(); + return Status(); } // @@ -2202,7 +2205,7 @@ Error NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { "pid {0} breakpoint found at {1:x}, it is software, but the " "size is zero, nothing to do (unexpected)", GetID(), breakpoint_addr); - return Error(); + return Status(); } // Change the program counter. @@ -2219,9 +2222,9 @@ Error NativeProcessLinux::FixupBreakpointPCAsNeeded(NativeThreadLinux &thread) { return error; } -Error NativeProcessLinux::GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) { - Error error = PopulateMemoryRegionCache(); +Status NativeProcessLinux::GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) { + Status error = PopulateMemoryRegionCache(); if (error.Fail()) return error; @@ -2231,17 +2234,17 @@ Error NativeProcessLinux::GetLoadedModuleFileSpec(const char *module_path, for (const auto &it : m_mem_region_cache) { if (it.second.GetFilename() == module_file_spec.GetFilename()) { file_spec = it.second; - return Error(); + return Status(); } } - return Error("Module file (%s) not found in /proc/%" PRIu64 "/maps file!", - module_file_spec.GetFilename().AsCString(), GetID()); + return Status("Module file (%s) not found in /proc/%" PRIu64 "/maps file!", + module_file_spec.GetFilename().AsCString(), GetID()); } -Error NativeProcessLinux::GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) { +Status NativeProcessLinux::GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) { load_addr = LLDB_INVALID_ADDRESS; - Error error = PopulateMemoryRegionCache(); + Status error = PopulateMemoryRegionCache(); if (error.Fail()) return error; @@ -2249,10 +2252,10 @@ Error NativeProcessLinux::GetFileLoadAddress(const llvm::StringRef &file_name, for (const auto &it : m_mem_region_cache) { if (it.second == file) { load_addr = it.first.GetRange().GetRangeBase(); - return Error(); + return Status(); } } - return Error("No load address found for specified file."); + return Status("No load address found for specified file."); } NativeThreadLinuxSP NativeProcessLinux::GetThreadByID(lldb::tid_t tid) { @@ -2260,8 +2263,8 @@ NativeThreadLinuxSP NativeProcessLinux::GetThreadByID(lldb::tid_t tid) { NativeProcessProtocol::GetThreadByID(tid)); } -Error NativeProcessLinux::ResumeThread(NativeThreadLinux &thread, - lldb::StateType state, int signo) { +Status NativeProcessLinux::ResumeThread(NativeThreadLinux &thread, + lldb::StateType state, int signo) { Log *const log = ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD); LLDB_LOG(log, "tid: {0}", thread.GetID()); @@ -2336,7 +2339,7 @@ void NativeProcessLinux::SignalIfAllThreadsStopped() { // Clear any temporary breakpoints we used to implement software single // stepping. for (const auto &thread_info : m_threads_stepping_with_breakpoint) { - Error error = RemoveBreakpoint(thread_info.second); + Status error = RemoveBreakpoint(thread_info.second); if (error.Fail()) LLDB_LOG(log, "pid = {0} remove stepping breakpoint: {1}", thread_info.first, error); @@ -2376,7 +2379,7 @@ void NativeProcessLinux::SigchldHandler() { if (errno == EINTR) continue; - Error error(errno, eErrorTypePOSIX); + Status error(errno, eErrorTypePOSIX); LLDB_LOG(log, "waitpid (-1, &status, _) failed: {0}", error); break; } @@ -2414,10 +2417,10 @@ void NativeProcessLinux::SigchldHandler() { // Wrapper for ptrace to catch errors and log calls. // Note that ptrace sets errno on error because -1 can be a valid result (i.e. // for PTRACE_PEEK*) -Error NativeProcessLinux::PtraceWrapper(int req, lldb::pid_t pid, void *addr, - void *data, size_t data_size, - long *result) { - Error error; +Status NativeProcessLinux::PtraceWrapper(int req, lldb::pid_t pid, void *addr, + void *data, size_t data_size, + long *result) { + Status error; long int ret; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h index e4809d082b5..98fc88baab6 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h @@ -26,7 +26,7 @@ #include "lldb/Host/common/NativeProcessProtocol.h" namespace lldb_private { -class Error; +class Status; class Scalar; namespace process_linux { @@ -38,11 +38,11 @@ namespace process_linux { /// /// Changes in the inferior process state are broadcasted. class NativeProcessLinux : public NativeProcessProtocol { - friend Error NativeProcessProtocol::Launch( + friend Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); - friend Error NativeProcessProtocol::Attach( + friend Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); @@ -50,34 +50,34 @@ public: // --------------------------------------------------------------------- // NativeProcessProtocol Interface // --------------------------------------------------------------------- - Error Resume(const ResumeActionList &resume_actions) override; + Status Resume(const ResumeActionList &resume_actions) override; - Error Halt() override; + Status Halt() override; - Error Detach() override; + Status Detach() override; - Error Signal(int signo) override; + Status Signal(int signo) override; - Error Interrupt() override; + Status Interrupt() override; - Error Kill() override; + Status Kill() override; - Error GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) override; + Status GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) override; - Error ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemory(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error WriteMemory(lldb::addr_t addr, const void *buf, size_t size, - size_t &bytes_written) override; + Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, + size_t &bytes_written) override; - Error AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) override; + Status AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) override; - Error DeallocateMemory(lldb::addr_t addr) override; + Status DeallocateMemory(lldb::addr_t addr) override; lldb::addr_t GetSharedLibraryInfoAddress() override; @@ -85,17 +85,18 @@ public: bool GetArchitecture(ArchSpec &arch) const override; - Error SetBreakpoint(lldb::addr_t addr, uint32_t size, bool hardware) override; + Status SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) override; - Error RemoveBreakpoint(lldb::addr_t addr, bool hardware = false) override; + Status RemoveBreakpoint(lldb::addr_t addr, bool hardware = false) override; void DoStopIDBumped(uint32_t newBumpId) override; - Error GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) override; + Status GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) override; - Error GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) override; + Status GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) override; NativeThreadLinuxSP GetThreadByID(lldb::tid_t id); @@ -107,9 +108,9 @@ public: // --------------------------------------------------------------------- // Interface used by NativeRegisterContext-derived classes. // --------------------------------------------------------------------- - static Error PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, - void *data = nullptr, size_t data_size = 0, - long *result = nullptr); + static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, + void *data = nullptr, size_t data_size = 0, + long *result = nullptr); bool SupportHardwareSingleStepping() const; @@ -117,7 +118,7 @@ protected: // --------------------------------------------------------------------- // NativeProcessProtocol protected interface // --------------------------------------------------------------------- - Error + Status GetSoftwareBreakpointTrapOpcode(size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) override; @@ -140,15 +141,15 @@ private: // --------------------------------------------------------------------- NativeProcessLinux(); - Error LaunchInferior(MainLoop &mainloop, ProcessLaunchInfo &launch_info); + Status LaunchInferior(MainLoop &mainloop, ProcessLaunchInfo &launch_info); /// Attaches to an existing process. Forms the /// implementation of Process::DoAttach - void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Error &error); + void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Status &error); - ::pid_t Attach(lldb::pid_t pid, Error &error); + ::pid_t Attach(lldb::pid_t pid, Status &error); - static Error SetDefaultPtraceOpts(const lldb::pid_t); + static Status SetDefaultPtraceOpts(const lldb::pid_t); static void *MonitorThread(void *baton); @@ -167,7 +168,7 @@ private: void MonitorSignal(const siginfo_t &info, NativeThreadLinux &thread, bool exited); - Error SetupSoftwareSingleStepping(NativeThreadLinux &thread); + Status SetupSoftwareSingleStepping(NativeThreadLinux &thread); #if 0 static ::ProcessMessage::CrashReason @@ -189,22 +190,22 @@ private: NativeThreadLinuxSP AddThread(lldb::tid_t thread_id); - Error GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); + Status GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); - Error FixupBreakpointPCAsNeeded(NativeThreadLinux &thread); + Status FixupBreakpointPCAsNeeded(NativeThreadLinux &thread); /// Writes a siginfo_t structure corresponding to the given thread ID to the /// memory region pointed to by @p siginfo. - Error GetSignalInfo(lldb::tid_t tid, void *siginfo); + Status GetSignalInfo(lldb::tid_t tid, void *siginfo); /// Writes the raw event message code (vis-a-vis PTRACE_GETEVENTMSG) /// corresponding to the given thread ID to the memory pointed to by @p /// message. - Error GetEventMessage(lldb::tid_t tid, unsigned long *message); + Status GetEventMessage(lldb::tid_t tid, unsigned long *message); void NotifyThreadDeath(lldb::tid_t tid); - Error Detach(lldb::tid_t tid); + Status Detach(lldb::tid_t tid); // This method is requests a stop on all threads which are still running. It // sets up a @@ -219,14 +220,14 @@ private: // Resume the given thread, optionally passing it the given signal. The type // of resume // operation (continue, single-step) depends on the state parameter. - Error ResumeThread(NativeThreadLinux &thread, lldb::StateType state, - int signo); + Status ResumeThread(NativeThreadLinux &thread, lldb::StateType state, + int signo); void ThreadWasCreated(NativeThreadLinux &thread); void SigchldHandler(); - Error PopulateMemoryRegionCache(); + Status PopulateMemoryRegionCache(); }; } // namespace process_linux diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.cpp index be256e97221..43253f38801 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.cpp @@ -41,18 +41,19 @@ lldb::ByteOrder NativeRegisterContextLinux::GetByteOrder() const { return byte_order; } -Error NativeRegisterContextLinux::ReadRegisterRaw(uint32_t reg_index, - RegisterValue ®_value) { +Status NativeRegisterContextLinux::ReadRegisterRaw(uint32_t reg_index, + RegisterValue ®_value) { const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(reg_index); if (!reg_info) - return Error("register %" PRIu32 " not found", reg_index); + return Status("register %" PRIu32 " not found", reg_index); return DoReadRegisterValue(reg_info->byte_offset, reg_info->name, reg_info->byte_size, reg_value); } -Error NativeRegisterContextLinux::WriteRegisterRaw( - uint32_t reg_index, const RegisterValue ®_value) { +Status +NativeRegisterContextLinux::WriteRegisterRaw(uint32_t reg_index, + const RegisterValue ®_value) { uint32_t reg_to_write = reg_index; RegisterValue value_to_write = reg_value; @@ -60,7 +61,7 @@ Error NativeRegisterContextLinux::WriteRegisterRaw( const RegisterInfo *reg_info = GetRegisterInfoAtIndex(reg_index); if (reg_info->invalidate_regs && (reg_info->invalidate_regs[0] != LLDB_INVALID_REGNUM)) { - Error error; + Status error; RegisterValue full_value; uint32_t full_reg = reg_info->invalidate_regs[0]; @@ -99,71 +100,71 @@ Error NativeRegisterContextLinux::WriteRegisterRaw( assert(register_to_write_info_p && "register to write does not have valid RegisterInfo"); if (!register_to_write_info_p) - return Error("NativeRegisterContextLinux::%s failed to get RegisterInfo " - "for write register index %" PRIu32, - __FUNCTION__, reg_to_write); + return Status("NativeRegisterContextLinux::%s failed to get RegisterInfo " + "for write register index %" PRIu32, + __FUNCTION__, reg_to_write); return DoWriteRegisterValue(reg_info->byte_offset, reg_info->name, reg_value); } -Error NativeRegisterContextLinux::ReadGPR() { +Status NativeRegisterContextLinux::ReadGPR() { void *buf = GetGPRBuffer(); if (!buf) - return Error("GPR buffer is NULL"); + return Status("GPR buffer is NULL"); size_t buf_size = GetGPRSize(); return DoReadGPR(buf, buf_size); } -Error NativeRegisterContextLinux::WriteGPR() { +Status NativeRegisterContextLinux::WriteGPR() { void *buf = GetGPRBuffer(); if (!buf) - return Error("GPR buffer is NULL"); + return Status("GPR buffer is NULL"); size_t buf_size = GetGPRSize(); return DoWriteGPR(buf, buf_size); } -Error NativeRegisterContextLinux::ReadFPR() { +Status NativeRegisterContextLinux::ReadFPR() { void *buf = GetFPRBuffer(); if (!buf) - return Error("FPR buffer is NULL"); + return Status("FPR buffer is NULL"); size_t buf_size = GetFPRSize(); return DoReadFPR(buf, buf_size); } -Error NativeRegisterContextLinux::WriteFPR() { +Status NativeRegisterContextLinux::WriteFPR() { void *buf = GetFPRBuffer(); if (!buf) - return Error("FPR buffer is NULL"); + return Status("FPR buffer is NULL"); size_t buf_size = GetFPRSize(); return DoWriteFPR(buf, buf_size); } -Error NativeRegisterContextLinux::ReadRegisterSet(void *buf, size_t buf_size, - unsigned int regset) { +Status NativeRegisterContextLinux::ReadRegisterSet(void *buf, size_t buf_size, + unsigned int regset) { return NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, m_thread.GetID(), static_cast<void *>(®set), buf, buf_size); } -Error NativeRegisterContextLinux::WriteRegisterSet(void *buf, size_t buf_size, - unsigned int regset) { +Status NativeRegisterContextLinux::WriteRegisterSet(void *buf, size_t buf_size, + unsigned int regset) { return NativeProcessLinux::PtraceWrapper(PTRACE_SETREGSET, m_thread.GetID(), static_cast<void *>(®set), buf, buf_size); } -Error NativeRegisterContextLinux::DoReadRegisterValue(uint32_t offset, - const char *reg_name, - uint32_t size, - RegisterValue &value) { +Status NativeRegisterContextLinux::DoReadRegisterValue(uint32_t offset, + const char *reg_name, + uint32_t size, + RegisterValue &value) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_REGISTERS)); long data; - Error error = NativeProcessLinux::PtraceWrapper( + Status error = NativeProcessLinux::PtraceWrapper( PTRACE_PEEKUSER, m_thread.GetID(), reinterpret_cast<void *>(offset), nullptr, 0, &data); @@ -175,7 +176,7 @@ Error NativeRegisterContextLinux::DoReadRegisterValue(uint32_t offset, return error; } -Error NativeRegisterContextLinux::DoWriteRegisterValue( +Status NativeRegisterContextLinux::DoWriteRegisterValue( uint32_t offset, const char *reg_name, const RegisterValue &value) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_REGISTERS)); @@ -186,22 +187,22 @@ Error NativeRegisterContextLinux::DoWriteRegisterValue( PTRACE_POKEUSER, m_thread.GetID(), reinterpret_cast<void *>(offset), buf); } -Error NativeRegisterContextLinux::DoReadGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux::DoReadGPR(void *buf, size_t buf_size) { return NativeProcessLinux::PtraceWrapper(PTRACE_GETREGS, m_thread.GetID(), nullptr, buf, buf_size); } -Error NativeRegisterContextLinux::DoWriteGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux::DoWriteGPR(void *buf, size_t buf_size) { return NativeProcessLinux::PtraceWrapper(PTRACE_SETREGS, m_thread.GetID(), nullptr, buf, buf_size); } -Error NativeRegisterContextLinux::DoReadFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux::DoReadFPR(void *buf, size_t buf_size) { return NativeProcessLinux::PtraceWrapper(PTRACE_GETFPREGS, m_thread.GetID(), nullptr, buf, buf_size); } -Error NativeRegisterContextLinux::DoWriteFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux::DoWriteFPR(void *buf, size_t buf_size) { return NativeProcessLinux::PtraceWrapper(PTRACE_SETFPREGS, m_thread.GetID(), nullptr, buf, buf_size); } diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.h index 4dfc5365f35..26074a6ce0e 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux.h @@ -39,24 +39,24 @@ public: protected: lldb::ByteOrder GetByteOrder() const; - virtual Error ReadRegisterRaw(uint32_t reg_index, RegisterValue ®_value); + virtual Status ReadRegisterRaw(uint32_t reg_index, RegisterValue ®_value); - virtual Error WriteRegisterRaw(uint32_t reg_index, - const RegisterValue ®_value); + virtual Status WriteRegisterRaw(uint32_t reg_index, + const RegisterValue ®_value); - virtual Error ReadRegisterSet(void *buf, size_t buf_size, - unsigned int regset); - - virtual Error WriteRegisterSet(void *buf, size_t buf_size, + virtual Status ReadRegisterSet(void *buf, size_t buf_size, unsigned int regset); - virtual Error ReadGPR(); + virtual Status WriteRegisterSet(void *buf, size_t buf_size, + unsigned int regset); + + virtual Status ReadGPR(); - virtual Error WriteGPR(); + virtual Status WriteGPR(); - virtual Error ReadFPR(); + virtual Status ReadFPR(); - virtual Error WriteFPR(); + virtual Status WriteFPR(); virtual void *GetGPRBuffer() { return nullptr; } @@ -71,19 +71,19 @@ protected: // The Do*** functions are executed on the privileged thread and can perform // ptrace // operations directly. - virtual Error DoReadRegisterValue(uint32_t offset, const char *reg_name, - uint32_t size, RegisterValue &value); + virtual Status DoReadRegisterValue(uint32_t offset, const char *reg_name, + uint32_t size, RegisterValue &value); - virtual Error DoWriteRegisterValue(uint32_t offset, const char *reg_name, - const RegisterValue &value); + virtual Status DoWriteRegisterValue(uint32_t offset, const char *reg_name, + const RegisterValue &value); - virtual Error DoReadGPR(void *buf, size_t buf_size); + virtual Status DoReadGPR(void *buf, size_t buf_size); - virtual Error DoWriteGPR(void *buf, size_t buf_size); + virtual Status DoWriteGPR(void *buf, size_t buf_size); - virtual Error DoReadFPR(void *buf, size_t buf_size); + virtual Status DoReadFPR(void *buf, size_t buf_size); - virtual Error DoWriteFPR(void *buf, size_t buf_size); + virtual Status DoWriteFPR(void *buf, size_t buf_size); }; } // namespace process_linux diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp index 2dd23ad75a0..22b7d10869f 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp @@ -13,8 +13,8 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Linux/Procfs.h" #include "Plugins/Process/POSIX/ProcessPOSIXLog.h" @@ -157,9 +157,10 @@ NativeRegisterContextLinux_arm::GetRegisterSet(uint32_t set_index) const { return nullptr; } -Error NativeRegisterContextLinux_arm::ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) { - Error error; +Status +NativeRegisterContextLinux_arm::ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) { + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -226,16 +227,17 @@ Error NativeRegisterContextLinux_arm::ReadRegister(const RegisterInfo *reg_info, return error; } -Error NativeRegisterContextLinux_arm::WriteRegister( - const RegisterInfo *reg_info, const RegisterValue ®_value) { +Status +NativeRegisterContextLinux_arm::WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) { if (!reg_info) - return Error("reg_info NULL"); + return Status("reg_info NULL"); const uint32_t reg_index = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg_index == LLDB_INVALID_REGNUM) - return Error("no lldb regnum for %s", reg_info && reg_info->name - ? reg_info->name - : "<unknown register>"); + return Status("no lldb regnum for %s", reg_info && reg_info->name + ? reg_info->name + : "<unknown register>"); if (IsGPR(reg_index)) return WriteRegisterRaw(reg_index, reg_value); @@ -257,29 +259,29 @@ Error NativeRegisterContextLinux_arm::WriteRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled register data size %" PRIu32, - reg_info->byte_size); + return Status("unhandled register data size %" PRIu32, + reg_info->byte_size); } - Error error = WriteFPR(); + Status error = WriteFPR(); if (error.Fail()) return error; - return Error(); + return Status(); } - return Error("failed - register wasn't recognized to be a GPR or an FPR, " - "write strategy unknown"); + return Status("failed - register wasn't recognized to be a GPR or an FPR, " + "write strategy unknown"); } -Error NativeRegisterContextLinux_arm::ReadAllRegisterValues( +Status NativeRegisterContextLinux_arm::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) - return Error("failed to allocate DataBufferHeap instance of size %" PRIu64, - (uint64_t)REG_CONTEXT_SIZE); + return Status("failed to allocate DataBufferHeap instance of size %" PRIu64, + (uint64_t)REG_CONTEXT_SIZE); error = ReadGPR(); if (error.Fail()) @@ -304,9 +306,9 @@ Error NativeRegisterContextLinux_arm::ReadAllRegisterValues( return error; } -Error NativeRegisterContextLinux_arm::WriteAllRegisterValues( +Status NativeRegisterContextLinux_arm::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -361,7 +363,7 @@ uint32_t NativeRegisterContextLinux_arm::NumSupportedHardwareBreakpoints() { if (log) log->Printf("NativeRegisterContextLinux_arm::%s()", __FUNCTION__); - Error error; + Status error; // Read hardware breakpoint and watchpoint information. error = ReadHardwareDebugInfo(); @@ -380,7 +382,7 @@ NativeRegisterContextLinux_arm::SetHardwareBreakpoint(lldb::addr_t addr, LLDB_LOG(log, "addr: {0:x}, size: {1:x}", addr, size); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return LLDB_INVALID_INDEX32; @@ -438,7 +440,7 @@ bool NativeRegisterContextLinux_arm::ClearHardwareBreakpoint(uint32_t hw_idx) { LLDB_LOG(log, "hw_idx: {0}", hw_idx); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return false; @@ -466,7 +468,7 @@ bool NativeRegisterContextLinux_arm::ClearHardwareBreakpoint(uint32_t hw_idx) { return true; } -Error NativeRegisterContextLinux_arm::GetHardwareBreakHitIndex( +Status NativeRegisterContextLinux_arm::GetHardwareBreakHitIndex( uint32_t &bp_index, lldb::addr_t trap_addr) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); @@ -480,21 +482,21 @@ Error NativeRegisterContextLinux_arm::GetHardwareBreakHitIndex( if ((m_hbr_regs[bp_index].control & 0x1) && (trap_addr == break_addr)) { m_hbr_regs[bp_index].hit_addr = trap_addr; - return Error(); + return Status(); } } bp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextLinux_arm::ClearAllHardwareBreakpoints() { +Status NativeRegisterContextLinux_arm::ClearAllHardwareBreakpoints() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); if (log) log->Printf("NativeRegisterContextLinux_arm::%s()", __FUNCTION__); - Error error; + Status error; // Read hardware breakpoint and watchpoint information. error = ReadHardwareDebugInfo(); @@ -527,14 +529,14 @@ Error NativeRegisterContextLinux_arm::ClearAllHardwareBreakpoints() { } } - return Error(); + return Status(); } uint32_t NativeRegisterContextLinux_arm::NumSupportedHardwareWatchpoints() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS)); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return 0; @@ -550,7 +552,7 @@ uint32_t NativeRegisterContextLinux_arm::SetHardwareWatchpoint( watch_flags); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return LLDB_INVALID_INDEX32; @@ -654,7 +656,7 @@ bool NativeRegisterContextLinux_arm::ClearHardwareWatchpoint( LLDB_LOG(log, "wp_index: {0}", wp_index); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return false; @@ -683,9 +685,9 @@ bool NativeRegisterContextLinux_arm::ClearHardwareWatchpoint( return true; } -Error NativeRegisterContextLinux_arm::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextLinux_arm::ClearAllHardwareWatchpoints() { // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return error; @@ -715,7 +717,7 @@ Error NativeRegisterContextLinux_arm::ClearAllHardwareWatchpoints() { } } - return Error(); + return Status(); } uint32_t NativeRegisterContextLinux_arm::GetWatchpointSize(uint32_t wp_index) { @@ -745,8 +747,9 @@ bool NativeRegisterContextLinux_arm::WatchpointIsEnabled(uint32_t wp_index) { return false; } -Error NativeRegisterContextLinux_arm::GetWatchpointHitIndex( - uint32_t &wp_index, lldb::addr_t trap_addr) { +Status +NativeRegisterContextLinux_arm::GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS)); LLDB_LOG(log, "wp_index: {0}, trap_addr: {1:x}", wp_index, trap_addr); @@ -760,12 +763,12 @@ Error NativeRegisterContextLinux_arm::GetWatchpointHitIndex( if (WatchpointIsEnabled(wp_index) && trap_addr >= watch_addr && trap_addr < watch_addr + watch_size) { m_hwp_regs[wp_index].hit_addr = trap_addr; - return Error(); + return Status(); } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } lldb::addr_t @@ -796,11 +799,11 @@ NativeRegisterContextLinux_arm::GetWatchpointHitAddress(uint32_t wp_index) { return LLDB_INVALID_ADDRESS; } -Error NativeRegisterContextLinux_arm::ReadHardwareDebugInfo() { - Error error; +Status NativeRegisterContextLinux_arm::ReadHardwareDebugInfo() { + Status error; if (!m_refresh_hwdebug_info) { - return Error(); + return Status(); } unsigned int cap_val; @@ -819,9 +822,9 @@ Error NativeRegisterContextLinux_arm::ReadHardwareDebugInfo() { return error; } -Error NativeRegisterContextLinux_arm::WriteHardwareDebugRegs(int hwbType, - int hwb_index) { - Error error; +Status NativeRegisterContextLinux_arm::WriteHardwareDebugRegs(int hwbType, + int hwb_index) { + Status error; lldb::addr_t *addr_buf; uint32_t *ctrl_buf; @@ -869,7 +872,7 @@ uint32_t NativeRegisterContextLinux_arm::CalculateFprOffset( GetRegisterInfoAtIndex(m_reg_info.first_fpr)->byte_offset; } -Error NativeRegisterContextLinux_arm::DoReadRegisterValue( +Status NativeRegisterContextLinux_arm::DoReadRegisterValue( uint32_t offset, const char *reg_name, uint32_t size, RegisterValue &value) { // PTRACE_PEEKUSER don't work in the aarch64 linux kernel used on android @@ -881,17 +884,17 @@ Error NativeRegisterContextLinux_arm::DoReadRegisterValue( // comparision to processing time in lldb-server. assert(offset % 4 == 0 && "Try to write a register with unaligned offset"); if (offset + sizeof(uint32_t) > sizeof(m_gpr_arm)) - return Error("Register isn't fit into the size of the GPR area"); + return Status("Register isn't fit into the size of the GPR area"); - Error error = DoReadGPR(m_gpr_arm, sizeof(m_gpr_arm)); + Status error = DoReadGPR(m_gpr_arm, sizeof(m_gpr_arm)); if (error.Fail()) return error; value.SetUInt32(m_gpr_arm[offset / sizeof(uint32_t)]); - return Error(); + return Status(); } -Error NativeRegisterContextLinux_arm::DoWriteRegisterValue( +Status NativeRegisterContextLinux_arm::DoWriteRegisterValue( uint32_t offset, const char *reg_name, const RegisterValue &value) { // PTRACE_POKEUSER don't work in the aarch64 linux kernel used on android // devices (always return @@ -903,9 +906,9 @@ Error NativeRegisterContextLinux_arm::DoWriteRegisterValue( // lldb-server. assert(offset % 4 == 0 && "Try to write a register with unaligned offset"); if (offset + sizeof(uint32_t) > sizeof(m_gpr_arm)) - return Error("Register isn't fit into the size of the GPR area"); + return Status("Register isn't fit into the size of the GPR area"); - Error error = DoReadGPR(m_gpr_arm, sizeof(m_gpr_arm)); + Status error = DoReadGPR(m_gpr_arm, sizeof(m_gpr_arm)); if (error.Fail()) return error; @@ -927,7 +930,7 @@ Error NativeRegisterContextLinux_arm::DoWriteRegisterValue( return DoWriteGPR(m_gpr_arm, sizeof(m_gpr_arm)); } -Error NativeRegisterContextLinux_arm::DoReadGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm::DoReadGPR(void *buf, size_t buf_size) { #ifdef __arm__ return NativeRegisterContextLinux::DoReadGPR(buf, buf_size); #else // __aarch64__ @@ -939,7 +942,7 @@ Error NativeRegisterContextLinux_arm::DoReadGPR(void *buf, size_t buf_size) { #endif // __arm__ } -Error NativeRegisterContextLinux_arm::DoWriteGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm::DoWriteGPR(void *buf, size_t buf_size) { #ifdef __arm__ return NativeRegisterContextLinux::DoWriteGPR(buf, buf_size); #else // __aarch64__ @@ -951,7 +954,7 @@ Error NativeRegisterContextLinux_arm::DoWriteGPR(void *buf, size_t buf_size) { #endif // __arm__ } -Error NativeRegisterContextLinux_arm::DoReadFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm::DoReadFPR(void *buf, size_t buf_size) { #ifdef __arm__ return NativeProcessLinux::PtraceWrapper(PTRACE_GETVFPREGS, m_thread.GetID(), nullptr, buf, buf_size); @@ -964,7 +967,7 @@ Error NativeRegisterContextLinux_arm::DoReadFPR(void *buf, size_t buf_size) { #endif // __arm__ } -Error NativeRegisterContextLinux_arm::DoWriteFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm::DoWriteFPR(void *buf, size_t buf_size) { #ifdef __arm__ return NativeProcessLinux::PtraceWrapper(PTRACE_SETVFPREGS, m_thread.GetID(), nullptr, buf, buf_size); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h index 824ac88ad9e..ec99c05e164 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h @@ -32,15 +32,15 @@ public: uint32_t GetUserRegisterCount() const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; //------------------------------------------------------------------ // Hardware breakpoints/watchpoint mangement functions @@ -52,10 +52,10 @@ public: bool ClearHardwareBreakpoint(uint32_t hw_idx) override; - Error ClearAllHardwareBreakpoints() override; + Status ClearAllHardwareBreakpoints() override; - Error GetHardwareBreakHitIndex(uint32_t &bp_index, - lldb::addr_t trap_addr) override; + Status GetHardwareBreakHitIndex(uint32_t &bp_index, + lldb::addr_t trap_addr) override; uint32_t NumSupportedHardwareWatchpoints() override; @@ -64,10 +64,10 @@ public: bool ClearHardwareWatchpoint(uint32_t hw_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; lldb::addr_t GetWatchpointHitAddress(uint32_t wp_index) override; @@ -81,19 +81,19 @@ public: enum DREGType { eDREGTypeWATCH = 0, eDREGTypeBREAK }; protected: - Error DoReadRegisterValue(uint32_t offset, const char *reg_name, - uint32_t size, RegisterValue &value) override; + Status DoReadRegisterValue(uint32_t offset, const char *reg_name, + uint32_t size, RegisterValue &value) override; - Error DoWriteRegisterValue(uint32_t offset, const char *reg_name, - const RegisterValue &value) override; + Status DoWriteRegisterValue(uint32_t offset, const char *reg_name, + const RegisterValue &value) override; - Error DoReadGPR(void *buf, size_t buf_size) override; + Status DoReadGPR(void *buf, size_t buf_size) override; - Error DoWriteGPR(void *buf, size_t buf_size) override; + Status DoWriteGPR(void *buf, size_t buf_size) override; - Error DoReadFPR(void *buf, size_t buf_size) override; + Status DoReadFPR(void *buf, size_t buf_size) override; - Error DoWriteFPR(void *buf, size_t buf_size) override; + Status DoWriteFPR(void *buf, size_t buf_size) override; void *GetGPRBuffer() override { return &m_gpr_arm; } @@ -155,9 +155,9 @@ private: bool IsFPR(unsigned reg) const; - Error ReadHardwareDebugInfo(); + Status ReadHardwareDebugInfo(); - Error WriteHardwareDebugRegs(int hwbType, int hwb_index); + Status WriteHardwareDebugRegs(int hwbType, int hwb_index); uint32_t CalculateFprOffset(const RegisterInfo *reg_info) const; }; diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index f3715147fa3..c3b58f16256 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -19,8 +19,8 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/common/NativeProcessProtocol.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Linux/NativeProcessLinux.h" #include "Plugins/Process/Linux/Procfs.h" @@ -180,9 +180,10 @@ uint32_t NativeRegisterContextLinux_arm64::GetUserRegisterCount() const { return count; } -Error NativeRegisterContextLinux_arm64::ReadRegister( - const RegisterInfo *reg_info, RegisterValue ®_value) { - Error error; +Status +NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) { + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -232,16 +233,16 @@ Error NativeRegisterContextLinux_arm64::ReadRegister( return error; } -Error NativeRegisterContextLinux_arm64::WriteRegister( +Status NativeRegisterContextLinux_arm64::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { if (!reg_info) - return Error("reg_info NULL"); + return Status("reg_info NULL"); const uint32_t reg_index = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg_index == LLDB_INVALID_REGNUM) - return Error("no lldb regnum for %s", reg_info && reg_info->name - ? reg_info->name - : "<unknown register>"); + return Status("no lldb regnum for %s", reg_info && reg_info->name + ? reg_info->name + : "<unknown register>"); if (IsGPR(reg_index)) return WriteRegisterRaw(reg_index, reg_value); @@ -263,29 +264,29 @@ Error NativeRegisterContextLinux_arm64::WriteRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled register data size %" PRIu32, - reg_info->byte_size); + return Status("unhandled register data size %" PRIu32, + reg_info->byte_size); } - Error error = WriteFPR(); + Status error = WriteFPR(); if (error.Fail()) return error; - return Error(); + return Status(); } - return Error("failed - register wasn't recognized to be a GPR or an FPR, " - "write strategy unknown"); + return Status("failed - register wasn't recognized to be a GPR or an FPR, " + "write strategy unknown"); } -Error NativeRegisterContextLinux_arm64::ReadAllRegisterValues( +Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) - return Error("failed to allocate DataBufferHeap instance of size %" PRIu64, - REG_CONTEXT_SIZE); + return Status("failed to allocate DataBufferHeap instance of size %" PRIu64, + REG_CONTEXT_SIZE); error = ReadGPR(); if (error.Fail()) @@ -310,9 +311,9 @@ Error NativeRegisterContextLinux_arm64::ReadAllRegisterValues( return error; } -Error NativeRegisterContextLinux_arm64::WriteAllRegisterValues( +Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -367,7 +368,7 @@ uint32_t NativeRegisterContextLinux_arm64::NumSupportedHardwareBreakpoints() { if (log) log->Printf("NativeRegisterContextLinux_arm64::%s()", __FUNCTION__); - Error error; + Status error; // Read hardware breakpoint and watchpoint information. error = ReadHardwareDebugInfo(); @@ -385,7 +386,7 @@ NativeRegisterContextLinux_arm64::SetHardwareBreakpoint(lldb::addr_t addr, LLDB_LOG(log, "addr: {0:x}, size: {1:x}", addr, size); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return LLDB_INVALID_INDEX32; @@ -443,7 +444,7 @@ bool NativeRegisterContextLinux_arm64::ClearHardwareBreakpoint( LLDB_LOG(log, "hw_idx: {0}", hw_idx); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return false; @@ -471,7 +472,7 @@ bool NativeRegisterContextLinux_arm64::ClearHardwareBreakpoint( return true; } -Error NativeRegisterContextLinux_arm64::GetHardwareBreakHitIndex( +Status NativeRegisterContextLinux_arm64::GetHardwareBreakHitIndex( uint32_t &bp_index, lldb::addr_t trap_addr) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); @@ -485,21 +486,21 @@ Error NativeRegisterContextLinux_arm64::GetHardwareBreakHitIndex( if ((m_hbr_regs[bp_index].control & 0x1) && (trap_addr == break_addr)) { m_hbr_regs[bp_index].hit_addr = trap_addr; - return Error(); + return Status(); } } bp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextLinux_arm64::ClearAllHardwareBreakpoints() { +Status NativeRegisterContextLinux_arm64::ClearAllHardwareBreakpoints() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); if (log) log->Printf("NativeRegisterContextLinux_arm64::%s()", __FUNCTION__); - Error error; + Status error; // Read hardware breakpoint and watchpoint information. error = ReadHardwareDebugInfo(); @@ -532,14 +533,14 @@ Error NativeRegisterContextLinux_arm64::ClearAllHardwareBreakpoints() { } } - return Error(); + return Status(); } uint32_t NativeRegisterContextLinux_arm64::NumSupportedHardwareWatchpoints() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS)); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return 0; @@ -555,7 +556,7 @@ uint32_t NativeRegisterContextLinux_arm64::SetHardwareWatchpoint( watch_flags); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return LLDB_INVALID_INDEX32; @@ -642,7 +643,7 @@ bool NativeRegisterContextLinux_arm64::ClearHardwareWatchpoint( LLDB_LOG(log, "wp_index: {0}", wp_index); // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return false; @@ -671,9 +672,9 @@ bool NativeRegisterContextLinux_arm64::ClearHardwareWatchpoint( return true; } -Error NativeRegisterContextLinux_arm64::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextLinux_arm64::ClearAllHardwareWatchpoints() { // Read hardware breakpoint and watchpoint information. - Error error = ReadHardwareDebugInfo(); + Status error = ReadHardwareDebugInfo(); if (error.Fail()) return error; @@ -703,7 +704,7 @@ Error NativeRegisterContextLinux_arm64::ClearAllHardwareWatchpoints() { } } - return Error(); + return Status(); } uint32_t @@ -734,7 +735,7 @@ bool NativeRegisterContextLinux_arm64::WatchpointIsEnabled(uint32_t wp_index) { return false; } -Error NativeRegisterContextLinux_arm64::GetWatchpointHitIndex( +Status NativeRegisterContextLinux_arm64::GetWatchpointHitIndex( uint32_t &wp_index, lldb::addr_t trap_addr) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS)); LLDB_LOG(log, "wp_index: {0}, trap_addr: {1:x}", wp_index, trap_addr); @@ -749,12 +750,12 @@ Error NativeRegisterContextLinux_arm64::GetWatchpointHitIndex( if (WatchpointIsEnabled(wp_index) && trap_addr >= watch_addr && trap_addr < watch_addr + watch_size) { m_hwp_regs[wp_index].hit_addr = trap_addr; - return Error(); + return Status(); } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } lldb::addr_t @@ -785,9 +786,9 @@ NativeRegisterContextLinux_arm64::GetWatchpointHitAddress(uint32_t wp_index) { return LLDB_INVALID_ADDRESS; } -Error NativeRegisterContextLinux_arm64::ReadHardwareDebugInfo() { +Status NativeRegisterContextLinux_arm64::ReadHardwareDebugInfo() { if (!m_refresh_hwdebug_info) { - return Error(); + return Status(); } ::pid_t tid = m_thread.GetID(); @@ -795,7 +796,7 @@ Error NativeRegisterContextLinux_arm64::ReadHardwareDebugInfo() { int regset = NT_ARM_HW_WATCH; struct iovec ioVec; struct user_hwdebug_state dreg_state; - Error error; + Status error; ioVec.iov_base = &dreg_state; ioVec.iov_len = sizeof(dreg_state); @@ -820,10 +821,10 @@ Error NativeRegisterContextLinux_arm64::ReadHardwareDebugInfo() { return error; } -Error NativeRegisterContextLinux_arm64::WriteHardwareDebugRegs(int hwbType) { +Status NativeRegisterContextLinux_arm64::WriteHardwareDebugRegs(int hwbType) { struct iovec ioVec; struct user_hwdebug_state dreg_state; - Error error; + Status error; memset(&dreg_state, 0, sizeof(dreg_state)); ioVec.iov_base = &dreg_state; @@ -852,10 +853,10 @@ Error NativeRegisterContextLinux_arm64::WriteHardwareDebugRegs(int hwbType) { &hwbType, &ioVec, ioVec.iov_len); } -Error NativeRegisterContextLinux_arm64::DoReadRegisterValue( +Status NativeRegisterContextLinux_arm64::DoReadRegisterValue( uint32_t offset, const char *reg_name, uint32_t size, RegisterValue &value) { - Error error; + Status error; if (offset > sizeof(struct user_pt_regs)) { uintptr_t offset = offset - sizeof(struct user_pt_regs); if (offset > sizeof(struct user_fpsimd_state)) { @@ -899,9 +900,9 @@ Error NativeRegisterContextLinux_arm64::DoReadRegisterValue( return error; } -Error NativeRegisterContextLinux_arm64::DoWriteRegisterValue( +Status NativeRegisterContextLinux_arm64::DoWriteRegisterValue( uint32_t offset, const char *reg_name, const RegisterValue &value) { - Error error; + Status error; ::pid_t tid = m_thread.GetID(); if (offset > sizeof(struct user_pt_regs)) { uintptr_t offset = offset - sizeof(struct user_pt_regs); @@ -943,10 +944,10 @@ Error NativeRegisterContextLinux_arm64::DoWriteRegisterValue( return error; } -Error NativeRegisterContextLinux_arm64::DoReadGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm64::DoReadGPR(void *buf, size_t buf_size) { int regset = NT_PRSTATUS; struct iovec ioVec; - Error error; + Status error; ioVec.iov_base = buf; ioVec.iov_len = buf_size; @@ -954,10 +955,11 @@ Error NativeRegisterContextLinux_arm64::DoReadGPR(void *buf, size_t buf_size) { ®set, &ioVec, buf_size); } -Error NativeRegisterContextLinux_arm64::DoWriteGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm64::DoWriteGPR(void *buf, + size_t buf_size) { int regset = NT_PRSTATUS; struct iovec ioVec; - Error error; + Status error; ioVec.iov_base = buf; ioVec.iov_len = buf_size; @@ -965,10 +967,10 @@ Error NativeRegisterContextLinux_arm64::DoWriteGPR(void *buf, size_t buf_size) { ®set, &ioVec, buf_size); } -Error NativeRegisterContextLinux_arm64::DoReadFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm64::DoReadFPR(void *buf, size_t buf_size) { int regset = NT_FPREGSET; struct iovec ioVec; - Error error; + Status error; ioVec.iov_base = buf; ioVec.iov_len = buf_size; @@ -976,10 +978,11 @@ Error NativeRegisterContextLinux_arm64::DoReadFPR(void *buf, size_t buf_size) { ®set, &ioVec, buf_size); } -Error NativeRegisterContextLinux_arm64::DoWriteFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_arm64::DoWriteFPR(void *buf, + size_t buf_size) { int regset = NT_FPREGSET; struct iovec ioVec; - Error error; + Status error; ioVec.iov_base = buf; ioVec.iov_len = buf_size; diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 4ffbd97ee33..9877dec37c4 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -32,15 +32,15 @@ public: const RegisterSet *GetRegisterSet(uint32_t set_index) const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; //------------------------------------------------------------------ // Hardware breakpoints/watchpoint mangement functions @@ -52,10 +52,10 @@ public: bool ClearHardwareBreakpoint(uint32_t hw_idx) override; - Error ClearAllHardwareBreakpoints() override; + Status ClearAllHardwareBreakpoints() override; - Error GetHardwareBreakHitIndex(uint32_t &bp_index, - lldb::addr_t trap_addr) override; + Status GetHardwareBreakHitIndex(uint32_t &bp_index, + lldb::addr_t trap_addr) override; uint32_t NumSupportedHardwareWatchpoints() override; @@ -64,10 +64,10 @@ public: bool ClearHardwareWatchpoint(uint32_t hw_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; lldb::addr_t GetWatchpointHitAddress(uint32_t wp_index) override; @@ -81,19 +81,19 @@ public: enum DREGType { eDREGTypeWATCH = 0, eDREGTypeBREAK }; protected: - Error DoReadRegisterValue(uint32_t offset, const char *reg_name, - uint32_t size, RegisterValue &value) override; + Status DoReadRegisterValue(uint32_t offset, const char *reg_name, + uint32_t size, RegisterValue &value) override; - Error DoWriteRegisterValue(uint32_t offset, const char *reg_name, - const RegisterValue &value) override; + Status DoWriteRegisterValue(uint32_t offset, const char *reg_name, + const RegisterValue &value) override; - Error DoReadGPR(void *buf, size_t buf_size) override; + Status DoReadGPR(void *buf, size_t buf_size) override; - Error DoWriteGPR(void *buf, size_t buf_size) override; + Status DoWriteGPR(void *buf, size_t buf_size) override; - Error DoReadFPR(void *buf, size_t buf_size) override; + Status DoReadFPR(void *buf, size_t buf_size) override; - Error DoWriteFPR(void *buf, size_t buf_size) override; + Status DoWriteFPR(void *buf, size_t buf_size) override; void *GetGPRBuffer() override { return &m_gpr_arm64; } @@ -155,9 +155,9 @@ private: bool IsFPR(unsigned reg) const; - Error ReadHardwareDebugInfo(); + Status ReadHardwareDebugInfo(); - Error WriteHardwareDebugRegs(int hwbType); + Status WriteHardwareDebugRegs(int hwbType); uint32_t CalculateFprOffset(const RegisterInfo *reg_info) const; }; diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp index 7c5c4247717..dee2c064a34 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp @@ -25,9 +25,9 @@ #include "lldb/Host/Host.h" #include "lldb/Host/HostInfo.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-enumerations.h" #include "lldb/lldb-private-enumerations.h" #define NT_MIPS_MSA 0x600 @@ -178,7 +178,7 @@ uint32_t NativeRegisterContextLinux_mips64::GetRegisterSetCount() const { lldb::addr_t NativeRegisterContextLinux_mips64::GetPCfromBreakpointLocation( lldb::addr_t fail_value) { - Error error; + Status error; RegisterValue pc_value; lldb::addr_t pc = fail_value; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); @@ -244,10 +244,10 @@ NativeRegisterContextLinux_mips64::GetRegisterSet(uint32_t set_index) const { } } -lldb_private::Error +lldb_private::Status NativeRegisterContextLinux_mips64::ReadRegister(const RegisterInfo *reg_info, RegisterValue ®_value) { - Error error; + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -315,18 +315,18 @@ NativeRegisterContextLinux_mips64::ReadRegister(const RegisterInfo *reg_info, return error; } -lldb_private::Error NativeRegisterContextLinux_mips64::WriteRegister( +lldb_private::Status NativeRegisterContextLinux_mips64::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { - Error error; + Status error; assert(reg_info && "reg_info is null"); const uint32_t reg_index = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg_index == LLDB_INVALID_REGNUM) - return Error("no lldb regnum for %s", reg_info && reg_info->name - ? reg_info->name - : "<unknown register>"); + return Status("no lldb regnum for %s", reg_info && reg_info->name + ? reg_info->name + : "<unknown register>"); if (IsMSA(reg_index) && !IsMSAAvailable()) { error.SetErrorString("MSA not available on this processor"); @@ -383,9 +383,9 @@ lldb_private::Error NativeRegisterContextLinux_mips64::WriteRegister( return error; } -Error NativeRegisterContextLinux_mips64::ReadAllRegisterValues( +Status NativeRegisterContextLinux_mips64::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) { @@ -426,9 +426,9 @@ Error NativeRegisterContextLinux_mips64::ReadAllRegisterValues( return error; } -Error NativeRegisterContextLinux_mips64::WriteAllRegisterValues( +Status NativeRegisterContextLinux_mips64::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -481,8 +481,8 @@ Error NativeRegisterContextLinux_mips64::WriteAllRegisterValues( return error; } -Error NativeRegisterContextLinux_mips64::ReadCP1() { - Error error; +Status NativeRegisterContextLinux_mips64::ReadCP1() { + Status error; uint8_t *src = nullptr; uint8_t *dst = nullptr; @@ -529,8 +529,8 @@ NativeRegisterContextLinux_mips64::ReturnFPOffset(uint8_t reg_index, return fp_buffer_ptr; } -Error NativeRegisterContextLinux_mips64::WriteCP1() { - Error error; +Status NativeRegisterContextLinux_mips64::WriteCP1() { + Status error; uint8_t *src = nullptr; uint8_t *dst = nullptr; @@ -740,7 +740,7 @@ bool NativeRegisterContextLinux_mips64::IsMSAAvailable() { MSA_linux_mips msa_buf; unsigned int regset = NT_MIPS_MSA; - Error error = NativeProcessLinux::PtraceWrapper( + Status error = NativeProcessLinux::PtraceWrapper( PTRACE_GETREGSET, Host::GetCurrentProcessID(), static_cast<void *>(®set), &msa_buf, sizeof(MSA_linux_mips)); @@ -751,14 +751,14 @@ bool NativeRegisterContextLinux_mips64::IsMSAAvailable() { return false; } -Error NativeRegisterContextLinux_mips64::IsWatchpointHit(uint32_t wp_index, - bool &is_hit) { +Status NativeRegisterContextLinux_mips64::IsWatchpointHit(uint32_t wp_index, + bool &is_hit) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); // reading the current state of watch regs struct pt_watch_regs watch_readback; - Error error = DoReadWatchPointRegisterValue( + Status error = DoReadWatchPointRegisterValue( m_thread.GetID(), static_cast<void *>(&watch_readback)); if (GetWatchHi(&watch_readback, wp_index) & (IRW)) { @@ -775,12 +775,12 @@ Error NativeRegisterContextLinux_mips64::IsWatchpointHit(uint32_t wp_index, return error; } -Error NativeRegisterContextLinux_mips64::GetWatchpointHitIndex( +Status NativeRegisterContextLinux_mips64::GetWatchpointHitIndex( uint32_t &wp_index, lldb::addr_t trap_addr) { uint32_t num_hw_wps = NumSupportedHardwareWatchpoints(); for (wp_index = 0; wp_index < num_hw_wps; ++wp_index) { bool is_hit; - Error error = IsWatchpointHit(wp_index, is_hit); + Status error = IsWatchpointHit(wp_index, is_hit); if (error.Fail()) { wp_index = LLDB_INVALID_INDEX32; } else if (is_hit) { @@ -788,15 +788,15 @@ Error NativeRegisterContextLinux_mips64::GetWatchpointHitIndex( } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextLinux_mips64::IsWatchpointVacant(uint32_t wp_index, - bool &is_vacant) { +Status NativeRegisterContextLinux_mips64::IsWatchpointVacant(uint32_t wp_index, + bool &is_vacant) { is_vacant = false; - return Error("MIPS TODO: " - "NativeRegisterContextLinux_mips64::IsWatchpointVacant not " - "implemented"); + return Status("MIPS TODO: " + "NativeRegisterContextLinux_mips64::IsWatchpointVacant not " + "implemented"); } bool NativeRegisterContextLinux_mips64::ClearHardwareWatchpoint( @@ -821,8 +821,8 @@ bool NativeRegisterContextLinux_mips64::ClearHardwareWatchpoint( default_watch_regs.mips64.watch_masks[wp_index]; } - Error error = DoWriteWatchPointRegisterValue(m_thread.GetID(), - static_cast<void *>(®s)); + Status error = DoWriteWatchPointRegisterValue(m_thread.GetID(), + static_cast<void *>(®s)); if (!error.Fail()) { hw_addr_map[wp_index] = LLDB_INVALID_ADDRESS; return true; @@ -830,14 +830,14 @@ bool NativeRegisterContextLinux_mips64::ClearHardwareWatchpoint( return false; } -Error NativeRegisterContextLinux_mips64::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextLinux_mips64::ClearAllHardwareWatchpoints() { return DoWriteWatchPointRegisterValue( m_thread.GetID(), static_cast<void *>(&default_watch_regs)); } -Error NativeRegisterContextLinux_mips64::SetHardwareWatchpointWithIndex( +Status NativeRegisterContextLinux_mips64::SetHardwareWatchpointWithIndex( lldb::addr_t addr, size_t size, uint32_t watch_flags, uint32_t wp_index) { - Error error; + Status error; error.SetErrorString("MIPS TODO: " "NativeRegisterContextLinux_mips64::" "SetHardwareWatchpointWithIndex not implemented"); @@ -910,7 +910,7 @@ static bool ReadRegisterCallback(EmulateInstruction *instruction, void *baton, emulator_baton->m_reg_context->GetRegisterInfo( lldb::eRegisterKindDWARF, reg_info->kinds[lldb::eRegisterKindDWARF]); - Error error = + Status error = emulator_baton->m_reg_context->ReadRegister(full_reg_info, reg_value); if (error.Success()) return true; @@ -991,12 +991,13 @@ uint32_t NativeRegisterContextLinux_mips64::NumSupportedHardwareWatchpoints() { return num_valid; } -Error NativeRegisterContextLinux_mips64::ReadRegisterRaw(uint32_t reg_index, - RegisterValue &value) { +Status +NativeRegisterContextLinux_mips64::ReadRegisterRaw(uint32_t reg_index, + RegisterValue &value) { const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(reg_index); if (!reg_info) - return Error("register %" PRIu32 " not found", reg_index); + return Status("register %" PRIu32 " not found", reg_index); uint32_t offset = reg_info->kinds[lldb::eRegisterKindProcessPlugin]; @@ -1008,12 +1009,12 @@ Error NativeRegisterContextLinux_mips64::ReadRegisterRaw(uint32_t reg_index, value); } -Error NativeRegisterContextLinux_mips64::WriteRegisterRaw( +Status NativeRegisterContextLinux_mips64::WriteRegisterRaw( uint32_t reg_index, const RegisterValue &value) { const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(reg_index); if (!reg_info) - return Error("register %" PRIu32 " not found", reg_index); + return Status("register %" PRIu32 " not found", reg_index); if (reg_info->invalidate_regs) lldbassert(false && "reg_info->invalidate_regs is unhandled"); @@ -1022,14 +1023,14 @@ Error NativeRegisterContextLinux_mips64::WriteRegisterRaw( return DoWriteRegisterValue(offset, reg_info->name, value); } -Error NativeRegisterContextLinux_mips64::Read_SR_Config(uint32_t offset, - const char *reg_name, - uint32_t size, - RegisterValue &value) { +Status NativeRegisterContextLinux_mips64::Read_SR_Config(uint32_t offset, + const char *reg_name, + uint32_t size, + RegisterValue &value) { GPR_linux_mips regs; ::memset(®s, 0, sizeof(GPR_linux_mips)); - Error error = NativeProcessLinux::PtraceWrapper( + Status error = NativeProcessLinux::PtraceWrapper( PTRACE_GETREGS, m_thread.GetID(), NULL, ®s, sizeof regs); if (error.Success()) { lldb_private::ArchSpec arch; @@ -1043,13 +1044,13 @@ Error NativeRegisterContextLinux_mips64::Read_SR_Config(uint32_t offset, return error; } -Error NativeRegisterContextLinux_mips64::DoReadWatchPointRegisterValue( +Status NativeRegisterContextLinux_mips64::DoReadWatchPointRegisterValue( lldb::tid_t tid, void *watch_readback) { return NativeProcessLinux::PtraceWrapper(PTRACE_GET_WATCH_REGS, m_thread.GetID(), watch_readback); } -Error NativeRegisterContextLinux_mips64::DoWriteWatchPointRegisterValue( +Status NativeRegisterContextLinux_mips64::DoWriteWatchPointRegisterValue( lldb::tid_t tid, void *watch_reg_value) { return NativeProcessLinux::PtraceWrapper(PTRACE_SET_WATCH_REGS, m_thread.GetID(), watch_reg_value); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h index 1b25609205d..3e14da5a272 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h @@ -38,35 +38,36 @@ public: const RegisterSet *GetRegisterSet(uint32_t set_index) const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; - Error ReadCP1(); + Status ReadCP1(); - Error WriteCP1(); + Status WriteCP1(); uint8_t *ReturnFPOffset(uint8_t reg_index, uint32_t byte_offset); - Error IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; + Status IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; - Error IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; + Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; bool ClearHardwareWatchpoint(uint32_t wp_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; - Error SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, - uint32_t watch_flags, uint32_t wp_index); + Status SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, + uint32_t watch_flags, + uint32_t wp_index); uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags) override; @@ -78,17 +79,17 @@ public: static bool IsMSAAvailable(); protected: - Error Read_SR_Config(uint32_t offset, const char *reg_name, uint32_t size, - RegisterValue &value); + Status Read_SR_Config(uint32_t offset, const char *reg_name, uint32_t size, + RegisterValue &value); - Error ReadRegisterRaw(uint32_t reg_index, RegisterValue &value) override; + Status ReadRegisterRaw(uint32_t reg_index, RegisterValue &value) override; - Error WriteRegisterRaw(uint32_t reg_index, - const RegisterValue &value) override; + Status WriteRegisterRaw(uint32_t reg_index, + const RegisterValue &value) override; - Error DoReadWatchPointRegisterValue(lldb::tid_t tid, void *watch_readback); + Status DoReadWatchPointRegisterValue(lldb::tid_t tid, void *watch_readback); - Error DoWriteWatchPointRegisterValue(lldb::tid_t tid, void *watch_readback); + Status DoWriteWatchPointRegisterValue(lldb::tid_t tid, void *watch_readback); bool IsFR0(); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.cpp index 3e782d39f72..c2a696e08bf 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.cpp @@ -14,8 +14,8 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/HostInfo.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Utility/RegisterContextLinux_s390x.h" @@ -192,20 +192,21 @@ bool NativeRegisterContextLinux_s390x::IsFPR(uint32_t reg_index) const { reg_index <= m_reg_info.last_fpr); } -Error NativeRegisterContextLinux_s390x::ReadRegister( - const RegisterInfo *reg_info, RegisterValue ®_value) { +Status +NativeRegisterContextLinux_s390x::ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) { if (!reg_info) - return Error("reg_info NULL"); + return Status("reg_info NULL"); const uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg == LLDB_INVALID_REGNUM) - return Error("register \"%s\" is an internal-only lldb register, cannot " - "read directly", - reg_info->name); + return Status("register \"%s\" is an internal-only lldb register, cannot " + "read directly", + reg_info->name); if (IsGPR(reg)) { s390_regs regs; - Error error = DoReadGPR(®s, sizeof(regs)); + Status error = DoReadGPR(®s, sizeof(regs)); if (error.Fail()) return error; @@ -220,14 +221,14 @@ Error NativeRegisterContextLinux_s390x::ReadRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled byte size: %" PRIu32, reg_info->byte_size); + return Status("unhandled byte size: %" PRIu32, reg_info->byte_size); } - return Error(); + return Status(); } if (IsFPR(reg)) { s390_fp_regs fp_regs; - Error error = DoReadFPR(&fp_regs, sizeof(fp_regs)); + Status error = DoReadFPR(&fp_regs, sizeof(fp_regs)); if (error.Fail()) return error; @@ -243,48 +244,48 @@ Error NativeRegisterContextLinux_s390x::ReadRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled byte size: %" PRIu32, reg_info->byte_size); + return Status("unhandled byte size: %" PRIu32, reg_info->byte_size); } - return Error(); + return Status(); } if (reg == lldb_last_break_s390x) { uint64_t last_break; - Error error = DoReadRegisterSet(NT_S390_LAST_BREAK, &last_break, 8); + Status error = DoReadRegisterSet(NT_S390_LAST_BREAK, &last_break, 8); if (error.Fail()) return error; reg_value.SetUInt64(last_break); - return Error(); + return Status(); } if (reg == lldb_system_call_s390x) { uint32_t system_call; - Error error = DoReadRegisterSet(NT_S390_SYSTEM_CALL, &system_call, 4); + Status error = DoReadRegisterSet(NT_S390_SYSTEM_CALL, &system_call, 4); if (error.Fail()) return error; reg_value.SetUInt32(system_call); - return Error(); + return Status(); } - return Error("failed - register wasn't recognized"); + return Status("failed - register wasn't recognized"); } -Error NativeRegisterContextLinux_s390x::WriteRegister( +Status NativeRegisterContextLinux_s390x::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { if (!reg_info) - return Error("reg_info NULL"); + return Status("reg_info NULL"); const uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg == LLDB_INVALID_REGNUM) - return Error("register \"%s\" is an internal-only lldb register, cannot " - "write directly", - reg_info->name); + return Status("register \"%s\" is an internal-only lldb register, cannot " + "write directly", + reg_info->name); if (IsGPR(reg)) { s390_regs regs; - Error error = DoReadGPR(®s, sizeof(regs)); + Status error = DoReadGPR(®s, sizeof(regs)); if (error.Fail()) return error; @@ -299,14 +300,14 @@ Error NativeRegisterContextLinux_s390x::WriteRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled byte size: %" PRIu32, reg_info->byte_size); + return Status("unhandled byte size: %" PRIu32, reg_info->byte_size); } return DoWriteGPR(®s, sizeof(regs)); } if (IsFPR(reg)) { s390_fp_regs fp_regs; - Error error = DoReadFPR(&fp_regs, sizeof(fp_regs)); + Status error = DoReadFPR(&fp_regs, sizeof(fp_regs)); if (error.Fail()) return error; @@ -322,13 +323,13 @@ Error NativeRegisterContextLinux_s390x::WriteRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled byte size: %" PRIu32, reg_info->byte_size); + return Status("unhandled byte size: %" PRIu32, reg_info->byte_size); } return DoWriteFPR(&fp_regs, sizeof(fp_regs)); } if (reg == lldb_last_break_s390x) { - return Error("The last break address is read-only"); + return Status("The last break address is read-only"); } if (reg == lldb_system_call_s390x) { @@ -336,12 +337,12 @@ Error NativeRegisterContextLinux_s390x::WriteRegister( return DoWriteRegisterSet(NT_S390_SYSTEM_CALL, &system_call, 4); } - return Error("failed - register wasn't recognized"); + return Status("failed - register wasn't recognized"); } -Error NativeRegisterContextLinux_s390x::ReadAllRegisterValues( +Status NativeRegisterContextLinux_s390x::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) { @@ -383,9 +384,9 @@ Error NativeRegisterContextLinux_s390x::ReadAllRegisterValues( return error; } -Error NativeRegisterContextLinux_s390x::WriteAllRegisterValues( +Status NativeRegisterContextLinux_s390x::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -428,19 +429,20 @@ Error NativeRegisterContextLinux_s390x::WriteAllRegisterValues( return error; } -Error NativeRegisterContextLinux_s390x::DoReadRegisterValue( +Status NativeRegisterContextLinux_s390x::DoReadRegisterValue( uint32_t offset, const char *reg_name, uint32_t size, RegisterValue &value) { - return Error("DoReadRegisterValue unsupported"); + return Status("DoReadRegisterValue unsupported"); } -Error NativeRegisterContextLinux_s390x::DoWriteRegisterValue( +Status NativeRegisterContextLinux_s390x::DoWriteRegisterValue( uint32_t offset, const char *reg_name, const RegisterValue &value) { - return Error("DoWriteRegisterValue unsupported"); + return Status("DoWriteRegisterValue unsupported"); } -Error NativeRegisterContextLinux_s390x::PeekUserArea(uint32_t offset, void *buf, - size_t buf_size) { +Status NativeRegisterContextLinux_s390x::PeekUserArea(uint32_t offset, + void *buf, + size_t buf_size) { ptrace_area parea; parea.len = buf_size; parea.process_addr = (addr_t)buf; @@ -450,9 +452,9 @@ Error NativeRegisterContextLinux_s390x::PeekUserArea(uint32_t offset, void *buf, m_thread.GetID(), &parea); } -Error NativeRegisterContextLinux_s390x::PokeUserArea(uint32_t offset, - const void *buf, - size_t buf_size) { +Status NativeRegisterContextLinux_s390x::PokeUserArea(uint32_t offset, + const void *buf, + size_t buf_size) { ptrace_area parea; parea.len = buf_size; parea.process_addr = (addr_t)buf; @@ -462,29 +464,31 @@ Error NativeRegisterContextLinux_s390x::PokeUserArea(uint32_t offset, m_thread.GetID(), &parea); } -Error NativeRegisterContextLinux_s390x::DoReadGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoReadGPR(void *buf, size_t buf_size) { assert(buf_size == sizeof(s390_regs)); return PeekUserArea(offsetof(user_regs_struct, psw), buf, buf_size); } -Error NativeRegisterContextLinux_s390x::DoWriteGPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoWriteGPR(void *buf, + size_t buf_size) { assert(buf_size == sizeof(s390_regs)); return PokeUserArea(offsetof(user_regs_struct, psw), buf, buf_size); } -Error NativeRegisterContextLinux_s390x::DoReadFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoReadFPR(void *buf, size_t buf_size) { assert(buf_size == sizeof(s390_fp_regs)); return PeekUserArea(offsetof(user_regs_struct, fp_regs), buf, buf_size); } -Error NativeRegisterContextLinux_s390x::DoWriteFPR(void *buf, size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoWriteFPR(void *buf, + size_t buf_size) { assert(buf_size == sizeof(s390_fp_regs)); return PokeUserArea(offsetof(user_regs_struct, fp_regs), buf, buf_size); } -Error NativeRegisterContextLinux_s390x::DoReadRegisterSet(uint32_t regset, - void *buf, - size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoReadRegisterSet(uint32_t regset, + void *buf, + size_t buf_size) { struct iovec iov; iov.iov_base = buf; iov.iov_len = buf_size; @@ -492,9 +496,9 @@ Error NativeRegisterContextLinux_s390x::DoReadRegisterSet(uint32_t regset, return ReadRegisterSet(&iov, buf_size, regset); } -Error NativeRegisterContextLinux_s390x::DoWriteRegisterSet(uint32_t regset, - const void *buf, - size_t buf_size) { +Status NativeRegisterContextLinux_s390x::DoWriteRegisterSet(uint32_t regset, + const void *buf, + size_t buf_size) { struct iovec iov; iov.iov_base = const_cast<void *>(buf); iov.iov_len = buf_size; @@ -502,20 +506,20 @@ Error NativeRegisterContextLinux_s390x::DoWriteRegisterSet(uint32_t regset, return WriteRegisterSet(&iov, buf_size, regset); } -Error NativeRegisterContextLinux_s390x::IsWatchpointHit(uint32_t wp_index, - bool &is_hit) { +Status NativeRegisterContextLinux_s390x::IsWatchpointHit(uint32_t wp_index, + bool &is_hit) { per_lowcore_bits per_lowcore; if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); if (m_watchpoint_addr == LLDB_INVALID_ADDRESS) { is_hit = false; - return Error(); + return Status(); } - Error error = PeekUserArea(offsetof(user_regs_struct, per_info.lowcore), - &per_lowcore, sizeof(per_lowcore)); + Status error = PeekUserArea(offsetof(user_regs_struct, per_info.lowcore), + &per_lowcore, sizeof(per_lowcore)); if (error.Fail()) { is_hit = false; return error; @@ -531,15 +535,15 @@ Error NativeRegisterContextLinux_s390x::IsWatchpointHit(uint32_t wp_index, sizeof(per_lowcore)); } - return Error(); + return Status(); } -Error NativeRegisterContextLinux_s390x::GetWatchpointHitIndex( +Status NativeRegisterContextLinux_s390x::GetWatchpointHitIndex( uint32_t &wp_index, lldb::addr_t trap_addr) { uint32_t num_hw_wps = NumSupportedHardwareWatchpoints(); for (wp_index = 0; wp_index < num_hw_wps; ++wp_index) { bool is_hit; - Error error = IsWatchpointHit(wp_index, is_hit); + Status error = IsWatchpointHit(wp_index, is_hit); if (error.Fail()) { wp_index = LLDB_INVALID_INDEX32; return error; @@ -548,17 +552,17 @@ Error NativeRegisterContextLinux_s390x::GetWatchpointHitIndex( } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextLinux_s390x::IsWatchpointVacant(uint32_t wp_index, - bool &is_vacant) { +Status NativeRegisterContextLinux_s390x::IsWatchpointVacant(uint32_t wp_index, + bool &is_vacant) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); is_vacant = m_watchpoint_addr == LLDB_INVALID_ADDRESS; - return Error(); + return Status(); } bool NativeRegisterContextLinux_s390x::ClearHardwareWatchpoint( @@ -568,8 +572,8 @@ bool NativeRegisterContextLinux_s390x::ClearHardwareWatchpoint( if (wp_index >= NumSupportedHardwareWatchpoints()) return false; - Error error = PeekUserArea(offsetof(user_regs_struct, per_info), &per_info, - sizeof(per_info)); + Status error = PeekUserArea(offsetof(user_regs_struct, per_info), &per_info, + sizeof(per_info)); if (error.Fail()) return false; @@ -587,10 +591,10 @@ bool NativeRegisterContextLinux_s390x::ClearHardwareWatchpoint( return true; } -Error NativeRegisterContextLinux_s390x::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextLinux_s390x::ClearAllHardwareWatchpoints() { if (ClearHardwareWatchpoint(0)) - return Error(); - return Error("Clearing all hardware watchpoints failed."); + return Status(); + return Status("Clearing all hardware watchpoints failed."); } uint32_t NativeRegisterContextLinux_s390x::SetHardwareWatchpoint( @@ -603,8 +607,8 @@ uint32_t NativeRegisterContextLinux_s390x::SetHardwareWatchpoint( if (m_watchpoint_addr != LLDB_INVALID_ADDRESS) return LLDB_INVALID_INDEX32; - Error error = PeekUserArea(offsetof(user_regs_struct, per_info), &per_info, - sizeof(per_info)); + Status error = PeekUserArea(offsetof(user_regs_struct, per_info), &per_info, + sizeof(per_info)); if (error.Fail()) return LLDB_INVALID_INDEX32; diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.h index 4bd737767fa..3ffbaeeb0bb 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.h @@ -33,26 +33,26 @@ public: uint32_t GetUserRegisterCount() const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; - Error IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; + Status IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; - Error IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; + Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; bool ClearHardwareWatchpoint(uint32_t wp_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags) override; @@ -62,19 +62,19 @@ public: uint32_t NumSupportedHardwareWatchpoints() override; protected: - Error DoReadRegisterValue(uint32_t offset, const char *reg_name, - uint32_t size, RegisterValue &value) override; + Status DoReadRegisterValue(uint32_t offset, const char *reg_name, + uint32_t size, RegisterValue &value) override; - Error DoWriteRegisterValue(uint32_t offset, const char *reg_name, - const RegisterValue &value) override; + Status DoWriteRegisterValue(uint32_t offset, const char *reg_name, + const RegisterValue &value) override; - Error DoReadGPR(void *buf, size_t buf_size) override; + Status DoReadGPR(void *buf, size_t buf_size) override; - Error DoWriteGPR(void *buf, size_t buf_size) override; + Status DoWriteGPR(void *buf, size_t buf_size) override; - Error DoReadFPR(void *buf, size_t buf_size) override; + Status DoReadFPR(void *buf, size_t buf_size) override; - Error DoWriteFPR(void *buf, size_t buf_size) override; + Status DoWriteFPR(void *buf, size_t buf_size) override; private: // Info about register ranges. @@ -99,13 +99,13 @@ private: bool IsFPR(uint32_t reg_index) const; - Error PeekUserArea(uint32_t offset, void *buf, size_t buf_size); + Status PeekUserArea(uint32_t offset, void *buf, size_t buf_size); - Error PokeUserArea(uint32_t offset, const void *buf, size_t buf_size); + Status PokeUserArea(uint32_t offset, const void *buf, size_t buf_size); - Error DoReadRegisterSet(uint32_t regset, void *buf, size_t buf_size); + Status DoReadRegisterSet(uint32_t regset, void *buf, size_t buf_size); - Error DoWriteRegisterSet(uint32_t regset, const void *buf, size_t buf_size); + Status DoWriteRegisterSet(uint32_t regset, const void *buf, size_t buf_size); }; } // namespace process_linux diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp index dd35705a8ae..59dc9e9f7d4 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp @@ -14,8 +14,8 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/HostInfo.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Utility/RegisterContextLinux_i386.h" #include "Plugins/Process/Utility/RegisterContextLinux_x86_64.h" @@ -385,9 +385,10 @@ NativeRegisterContextLinux_x86_64::GetRegisterSet(uint32_t set_index) const { return nullptr; } -Error NativeRegisterContextLinux_x86_64::ReadRegister( - const RegisterInfo *reg_info, RegisterValue ®_value) { - Error error; +Status +NativeRegisterContextLinux_x86_64::ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) { + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -529,15 +530,15 @@ Error NativeRegisterContextLinux_x86_64::ReadRegister( return error; } -Error NativeRegisterContextLinux_x86_64::WriteRegister( +Status NativeRegisterContextLinux_x86_64::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { assert(reg_info && "reg_info is null"); const uint32_t reg_index = reg_info->kinds[lldb::eRegisterKindLLDB]; if (reg_index == LLDB_INVALID_REGNUM) - return Error("no lldb regnum for %s", reg_info && reg_info->name - ? reg_info->name - : "<unknown register>"); + return Status("no lldb regnum for %s", reg_info && reg_info->name + ? reg_info->name + : "<unknown register>"); if (IsGPR(reg_index)) return WriteRegisterRaw(reg_index, reg_value); @@ -566,7 +567,7 @@ Error NativeRegisterContextLinux_x86_64::WriteRegister( ::memcpy(m_ymm_set.ymm[reg_index - m_reg_info.first_ymm].bytes, reg_value.GetBytes(), reg_value.GetByteSize()); if (!CopyYMMtoXSTATE(reg_index, GetByteOrder())) - return Error("CopyYMMtoXSTATE() failed"); + return Status("CopyYMMtoXSTATE() failed"); } if (reg_index >= m_reg_info.first_mpxr && @@ -574,7 +575,7 @@ Error NativeRegisterContextLinux_x86_64::WriteRegister( ::memcpy(m_mpx_set.mpxr[reg_index - m_reg_info.first_mpxr].bytes, reg_value.GetBytes(), reg_value.GetByteSize()); if (!CopyMPXtoXSTATE(reg_index)) - return Error("CopyMPXtoXSTATE() failed"); + return Status("CopyMPXtoXSTATE() failed"); } if (reg_index >= m_reg_info.first_mpxc && @@ -582,7 +583,7 @@ Error NativeRegisterContextLinux_x86_64::WriteRegister( ::memcpy(m_mpx_set.mpxc[reg_index - m_reg_info.first_mpxc].bytes, reg_value.GetBytes(), reg_value.GetByteSize()); if (!CopyMPXtoXSTATE(reg_index)) - return Error("CopyMPXtoXSTATE() failed"); + return Status("CopyMPXtoXSTATE() failed"); } } else { // Get pointer to m_fpr.xstate.fxsave variable and set the data to it. @@ -616,33 +617,33 @@ Error NativeRegisterContextLinux_x86_64::WriteRegister( break; default: assert(false && "Unhandled data size."); - return Error("unhandled register data size %" PRIu32, - reg_info->byte_size); + return Status("unhandled register data size %" PRIu32, + reg_info->byte_size); } } - Error error = WriteFPR(); + Status error = WriteFPR(); if (error.Fail()) return error; if (IsAVX(reg_index)) { if (!CopyYMMtoXSTATE(reg_index, GetByteOrder())) - return Error("CopyYMMtoXSTATE() failed"); + return Status("CopyYMMtoXSTATE() failed"); } if (IsMPX(reg_index)) { if (!CopyMPXtoXSTATE(reg_index)) - return Error("CopyMPXtoXSTATE() failed"); + return Status("CopyMPXtoXSTATE() failed"); } - return Error(); + return Status(); } - return Error("failed - register wasn't recognized to be a GPR or an FPR, " - "write strategy unknown"); + return Status("failed - register wasn't recognized to be a GPR or an FPR, " + "write strategy unknown"); } -Error NativeRegisterContextLinux_x86_64::ReadAllRegisterValues( +Status NativeRegisterContextLinux_x86_64::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) { @@ -728,9 +729,9 @@ Error NativeRegisterContextLinux_x86_64::ReadAllRegisterValues( return error; } -Error NativeRegisterContextLinux_x86_64::WriteAllRegisterValues( +Status NativeRegisterContextLinux_x86_64::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -857,7 +858,7 @@ bool NativeRegisterContextLinux_x86_64::IsFPR(uint32_t reg_index) const { reg_index <= m_reg_info.last_fpr); } -Error NativeRegisterContextLinux_x86_64::WriteFPR() { +Status NativeRegisterContextLinux_x86_64::WriteFPR() { switch (m_xstate_type) { case XStateType::FXSAVE: return WriteRegisterSet( @@ -867,7 +868,7 @@ Error NativeRegisterContextLinux_x86_64::WriteFPR() { return WriteRegisterSet(&m_iovec, sizeof(m_fpr.xstate.xsave), NT_X86_XSTATE); default: - return Error("Unrecognized FPR type."); + return Status("Unrecognized FPR type."); } } @@ -954,8 +955,8 @@ size_t NativeRegisterContextLinux_x86_64::GetFPRSize() { } } -Error NativeRegisterContextLinux_x86_64::ReadFPR() { - Error error; +Status NativeRegisterContextLinux_x86_64::ReadFPR() { + Status error; // Probe XSAVE and if it is not supported fall back to FXSAVE. if (m_xstate_type != XStateType::FXSAVE) { @@ -973,7 +974,7 @@ Error NativeRegisterContextLinux_x86_64::ReadFPR() { m_xstate_type = XStateType::FXSAVE; return error; } - return Error("Unrecognized FPR type."); + return Status("Unrecognized FPR type."); } bool NativeRegisterContextLinux_x86_64::IsMPX(uint32_t reg_index) const { @@ -1013,13 +1014,13 @@ bool NativeRegisterContextLinux_x86_64::CopyMPXtoXSTATE(uint32_t reg) { return true; } -Error NativeRegisterContextLinux_x86_64::IsWatchpointHit(uint32_t wp_index, - bool &is_hit) { +Status NativeRegisterContextLinux_x86_64::IsWatchpointHit(uint32_t wp_index, + bool &is_hit) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); RegisterValue reg_value; - Error error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); + Status error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); if (error.Fail()) { is_hit = false; return error; @@ -1032,12 +1033,12 @@ Error NativeRegisterContextLinux_x86_64::IsWatchpointHit(uint32_t wp_index, return error; } -Error NativeRegisterContextLinux_x86_64::GetWatchpointHitIndex( +Status NativeRegisterContextLinux_x86_64::GetWatchpointHitIndex( uint32_t &wp_index, lldb::addr_t trap_addr) { uint32_t num_hw_wps = NumSupportedHardwareWatchpoints(); for (wp_index = 0; wp_index < num_hw_wps; ++wp_index) { bool is_hit; - Error error = IsWatchpointHit(wp_index, is_hit); + Status error = IsWatchpointHit(wp_index, is_hit); if (error.Fail()) { wp_index = LLDB_INVALID_INDEX32; return error; @@ -1046,16 +1047,16 @@ Error NativeRegisterContextLinux_x86_64::GetWatchpointHitIndex( } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextLinux_x86_64::IsWatchpointVacant(uint32_t wp_index, - bool &is_vacant) { +Status NativeRegisterContextLinux_x86_64::IsWatchpointVacant(uint32_t wp_index, + bool &is_vacant) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); RegisterValue reg_value; - Error error = ReadRegisterRaw(m_reg_info.first_dr + 7, reg_value); + Status error = ReadRegisterRaw(m_reg_info.first_dr + 7, reg_value); if (error.Fail()) { is_vacant = false; return error; @@ -1068,11 +1069,11 @@ Error NativeRegisterContextLinux_x86_64::IsWatchpointVacant(uint32_t wp_index, return error; } -Error NativeRegisterContextLinux_x86_64::SetHardwareWatchpointWithIndex( +Status NativeRegisterContextLinux_x86_64::SetHardwareWatchpointWithIndex( lldb::addr_t addr, size_t size, uint32_t watch_flags, uint32_t wp_index) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); // Read only watchpoints aren't supported on x86_64. Fall back to read/write // waitchpoints instead. @@ -1082,17 +1083,17 @@ Error NativeRegisterContextLinux_x86_64::SetHardwareWatchpointWithIndex( watch_flags = 0x3; if (watch_flags != 0x1 && watch_flags != 0x3) - return Error("Invalid read/write bits for watchpoint"); + return Status("Invalid read/write bits for watchpoint"); if (size != 1 && size != 2 && size != 4 && size != 8) - return Error("Invalid size for watchpoint"); + return Status("Invalid size for watchpoint"); bool is_vacant; - Error error = IsWatchpointVacant(wp_index, is_vacant); + Status error = IsWatchpointVacant(wp_index, is_vacant); if (error.Fail()) return error; if (!is_vacant) - return Error("Watchpoint index not vacant"); + return Status("Watchpoint index not vacant"); RegisterValue reg_value; error = ReadRegisterRaw(m_reg_info.first_dr + 7, reg_value); @@ -1140,7 +1141,7 @@ bool NativeRegisterContextLinux_x86_64::ClearHardwareWatchpoint( // for watchpoints 0, 1, 2, or 3, respectively, // clear bits 0, 1, 2, or 3 of the debug status register (DR6) - Error error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); + Status error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); if (error.Fail()) return false; uint64_t bit_mask = 1 << wp_index; @@ -1161,11 +1162,11 @@ bool NativeRegisterContextLinux_x86_64::ClearHardwareWatchpoint( .Success(); } -Error NativeRegisterContextLinux_x86_64::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextLinux_x86_64::ClearAllHardwareWatchpoints() { RegisterValue reg_value; // clear bits {0-4} of the debug status register (DR6) - Error error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); + Status error = ReadRegisterRaw(m_reg_info.first_dr + 6, reg_value); if (error.Fail()) return error; uint64_t bit_mask = 0xF; @@ -1189,7 +1190,7 @@ uint32_t NativeRegisterContextLinux_x86_64::SetHardwareWatchpoint( const uint32_t num_hw_watchpoints = NumSupportedHardwareWatchpoints(); for (uint32_t wp_index = 0; wp_index < num_hw_watchpoints; ++wp_index) { bool is_vacant; - Error error = IsWatchpointVacant(wp_index, is_vacant); + Status error = IsWatchpointVacant(wp_index, is_vacant); if (is_vacant) { error = SetHardwareWatchpointWithIndex(addr, size, watch_flags, wp_index); if (error.Success()) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h index cc05ec06b29..abb0dba4d91 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h @@ -33,29 +33,30 @@ public: uint32_t GetUserRegisterCount() const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; - Error IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; + Status IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; - Error IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; + Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; bool ClearHardwareWatchpoint(uint32_t wp_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; - Error SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, - uint32_t watch_flags, uint32_t wp_index); + Status SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, + uint32_t watch_flags, + uint32_t wp_index); uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags) override; @@ -71,9 +72,9 @@ protected: size_t GetFPRSize() override; - Error ReadFPR() override; + Status ReadFPR() override; - Error WriteFPR() override; + Status WriteFPR() override; private: // Private member types. diff --git a/lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp index 04b6fe6d71e..b1d13668f32 100644 --- a/lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp @@ -160,39 +160,40 @@ NativeRegisterContextSP NativeThreadLinux::GetRegisterContext() { return m_reg_context_sp; } -Error NativeThreadLinux::SetWatchpoint(lldb::addr_t addr, size_t size, - uint32_t watch_flags, bool hardware) { +Status NativeThreadLinux::SetWatchpoint(lldb::addr_t addr, size_t size, + uint32_t watch_flags, bool hardware) { if (!hardware) - return Error("not implemented"); + return Status("not implemented"); if (m_state == eStateLaunching) - return Error(); - Error error = RemoveWatchpoint(addr); + return Status(); + Status error = RemoveWatchpoint(addr); if (error.Fail()) return error; NativeRegisterContextSP reg_ctx = GetRegisterContext(); uint32_t wp_index = reg_ctx->SetHardwareWatchpoint(addr, size, watch_flags); if (wp_index == LLDB_INVALID_INDEX32) - return Error("Setting hardware watchpoint failed."); + return Status("Setting hardware watchpoint failed."); m_watchpoint_index_map.insert({addr, wp_index}); - return Error(); + return Status(); } -Error NativeThreadLinux::RemoveWatchpoint(lldb::addr_t addr) { +Status NativeThreadLinux::RemoveWatchpoint(lldb::addr_t addr) { auto wp = m_watchpoint_index_map.find(addr); if (wp == m_watchpoint_index_map.end()) - return Error(); + return Status(); uint32_t wp_index = wp->second; m_watchpoint_index_map.erase(wp); if (GetRegisterContext()->ClearHardwareWatchpoint(wp_index)) - return Error(); - return Error("Clearing hardware watchpoint failed."); + return Status(); + return Status("Clearing hardware watchpoint failed."); } -Error NativeThreadLinux::SetHardwareBreakpoint(lldb::addr_t addr, size_t size) { +Status NativeThreadLinux::SetHardwareBreakpoint(lldb::addr_t addr, + size_t size) { if (m_state == eStateLaunching) - return Error(); + return Status(); - Error error = RemoveHardwareBreakpoint(addr); + Status error = RemoveHardwareBreakpoint(addr); if (error.Fail()) return error; @@ -200,27 +201,27 @@ Error NativeThreadLinux::SetHardwareBreakpoint(lldb::addr_t addr, size_t size) { uint32_t bp_index = reg_ctx->SetHardwareBreakpoint(addr, size); if (bp_index == LLDB_INVALID_INDEX32) - return Error("Setting hardware breakpoint failed."); + return Status("Setting hardware breakpoint failed."); m_hw_break_index_map.insert({addr, bp_index}); - return Error(); + return Status(); } -Error NativeThreadLinux::RemoveHardwareBreakpoint(lldb::addr_t addr) { +Status NativeThreadLinux::RemoveHardwareBreakpoint(lldb::addr_t addr) { auto bp = m_hw_break_index_map.find(addr); if (bp == m_hw_break_index_map.end()) - return Error(); + return Status(); uint32_t bp_index = bp->second; if (GetRegisterContext()->ClearHardwareBreakpoint(bp_index)) { m_hw_break_index_map.erase(bp); - return Error(); + return Status(); } - return Error("Clearing hardware breakpoint failed."); + return Status("Clearing hardware breakpoint failed."); } -Error NativeThreadLinux::Resume(uint32_t signo) { +Status NativeThreadLinux::Resume(uint32_t signo) { const StateType new_state = StateType::eStateRunning; MaybeLogStateChange(new_state); m_state = new_state; @@ -262,7 +263,7 @@ Error NativeThreadLinux::Resume(uint32_t signo) { reinterpret_cast<void *>(data)); } -Error NativeThreadLinux::SingleStep(uint32_t signo) { +Status NativeThreadLinux::SingleStep(uint32_t signo) { const StateType new_state = StateType::eStateStepping; MaybeLogStateChange(new_state); m_state = new_state; @@ -422,7 +423,7 @@ void NativeThreadLinux::SetExited() { m_stop_info.reason = StopReason::eStopReasonThreadExiting; } -Error NativeThreadLinux::RequestStop() { +Status NativeThreadLinux::RequestStop() { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_THREAD)); NativeProcessLinux &process = GetProcess(); @@ -435,7 +436,7 @@ Error NativeThreadLinux::RequestStop() { ", tid: %" PRIu64 ")", __FUNCTION__, pid, tid); - Error err; + Status err; errno = 0; if (::tgkill(pid, tid, SIGSTOP) != 0) { err.SetErrorToErrno(); diff --git a/lldb/source/Plugins/Process/Linux/NativeThreadLinux.h b/lldb/source/Plugins/Process/Linux/NativeThreadLinux.h index 42697497c0a..b9126b3752a 100644 --- a/lldb/source/Plugins/Process/Linux/NativeThreadLinux.h +++ b/lldb/source/Plugins/Process/Linux/NativeThreadLinux.h @@ -41,14 +41,14 @@ public: NativeRegisterContextSP GetRegisterContext() override; - Error SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, - bool hardware) override; + Status SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, + bool hardware) override; - Error RemoveWatchpoint(lldb::addr_t addr) override; + Status RemoveWatchpoint(lldb::addr_t addr) override; - Error SetHardwareBreakpoint(lldb::addr_t addr, size_t size) override; + Status SetHardwareBreakpoint(lldb::addr_t addr, size_t size) override; - Error RemoveHardwareBreakpoint(lldb::addr_t addr) override; + Status RemoveHardwareBreakpoint(lldb::addr_t addr) override; private: // --------------------------------------------------------------------- @@ -57,11 +57,11 @@ private: /// Resumes the thread. If @p signo is anything but /// LLDB_INVALID_SIGNAL_NUMBER, deliver that signal to the thread. - Error Resume(uint32_t signo); + Status Resume(uint32_t signo); /// Single steps the thread. If @p signo is anything but /// LLDB_INVALID_SIGNAL_NUMBER, deliver that signal to the thread. - Error SingleStep(uint32_t signo); + Status SingleStep(uint32_t signo); void SetStoppedBySignal(uint32_t signo, const siginfo_t *info = nullptr); @@ -86,7 +86,7 @@ private: void SetExited(); - Error RequestStop(); + Status RequestStop(); // --------------------------------------------------------------------- // Private interface diff --git a/lldb/source/Plugins/Process/Linux/SingleStepCheck.cpp b/lldb/source/Plugins/Process/Linux/SingleStepCheck.cpp index 4e979bd4553..f0059f15cc1 100644 --- a/lldb/source/Plugins/Process/Linux/SingleStepCheck.cpp +++ b/lldb/source/Plugins/Process/Linux/SingleStepCheck.cpp @@ -20,7 +20,7 @@ #include "Plugins/Process/POSIX/ProcessPOSIXLog.h" #include "lldb/Host/linux/Ptrace.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" using namespace lldb; using namespace lldb_private; @@ -77,7 +77,7 @@ bool WorkaroundNeeded() { if (sched_getaffinity(child_pid, sizeof available_cpus, &available_cpus) == -1) { LLDB_LOG(log, "failed to get available cpus: {0}", - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); return false; } @@ -85,7 +85,7 @@ bool WorkaroundNeeded() { ::pid_t wpid = waitpid(child_pid, &status, __WALL); if (wpid != child_pid || !WIFSTOPPED(status)) { LLDB_LOG(log, "waitpid() failed (status = {0:x}): {1}", status, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); return false; } @@ -99,12 +99,12 @@ bool WorkaroundNeeded() { CPU_SET(cpu, &cpus); if (sched_setaffinity(child_pid, sizeof cpus, &cpus) == -1) { LLDB_LOG(log, "failed to switch to cpu {0}: {1}", cpu, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); continue; } int status; - Error error = + Status error = NativeProcessLinux::PtraceWrapper(PTRACE_SINGLESTEP, child_pid); if (error.Fail()) { LLDB_LOG(log, "single step failed: {0}", error); @@ -114,7 +114,7 @@ bool WorkaroundNeeded() { wpid = waitpid(child_pid, &status, __WALL); if (wpid != child_pid || !WIFSTOPPED(status)) { LLDB_LOG(log, "waitpid() failed (status = {0:x}): {1}", status, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); break; } if (WSTOPSIG(status) != SIGTRAP) { @@ -152,7 +152,7 @@ std::unique_ptr<SingleStepWorkaround> SingleStepWorkaround::Get(::pid_t tid) { if (sched_getaffinity(tid, sizeof original_set, &original_set) != 0) { // This should really not fail. But, just in case... LLDB_LOG(log, "Unable to get cpu affinity for thread {0}: {1}", tid, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); return nullptr; } @@ -164,7 +164,7 @@ std::unique_ptr<SingleStepWorkaround> SingleStepWorkaround::Get(::pid_t tid) { // to run on cpu 0. If that happens, only thing we can do is it log it and // continue... LLDB_LOG(log, "Unable to set cpu affinity for thread {0}: {1}", tid, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); } LLDB_LOG(log, "workaround for thread {0} prepared", tid); @@ -176,7 +176,7 @@ SingleStepWorkaround::~SingleStepWorkaround() { LLDB_LOG(log, "Removing workaround"); if (sched_setaffinity(m_tid, sizeof m_original_set, &m_original_set) != 0) { LLDB_LOG(log, "Unable to reset cpu affinity for thread {0}: {1}", m_tid, - Error(errno, eErrorTypePOSIX)); + Status(errno, eErrorTypePOSIX)); } } #endif diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp index da0ed9aa0c6..46d522531a5 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp @@ -199,7 +199,7 @@ CommunicationKDP::WaitForPacketWithTimeoutMicroSeconds(DataExtractor &packet, size_t CommunicationKDP::WaitForPacketWithTimeoutMicroSecondsNoLock( DataExtractor &packet, uint32_t timeout_usec) { uint8_t buffer[8192]; - Error error; + Status error; Log *log(ProcessKDPLog::GetLogIfAllCategoriesSet(KDP_LOG_PACKETS)); @@ -602,7 +602,7 @@ bool CommunicationKDP::SendRequestDisconnect() { uint32_t CommunicationKDP::SendRequestReadMemory(lldb::addr_t addr, void *dst, uint32_t dst_len, - Error &error) { + Status &error) { PacketStreamType request_packet(Stream::eBinary, m_addr_byte_size, m_byte_order); bool use_64 = (GetVersion() >= 11); @@ -641,7 +641,7 @@ uint32_t CommunicationKDP::SendRequestReadMemory(lldb::addr_t addr, void *dst, uint32_t CommunicationKDP::SendRequestWriteMemory(lldb::addr_t addr, const void *src, uint32_t src_len, - Error &error) { + Status &error) { PacketStreamType request_packet(Stream::eBinary, m_addr_byte_size, m_byte_order); bool use_64 = (GetVersion() >= 11); @@ -675,7 +675,7 @@ bool CommunicationKDP::SendRawRequest( uint8_t command_byte, const void *src, // Raw packet payload bytes uint32_t src_len, // Raw packet payload length - DataExtractor &reply_packet, Error &error) { + DataExtractor &reply_packet, Status &error) { PacketStreamType request_packet(Stream::eBinary, m_addr_byte_size, m_byte_order); // Size is header + address size + uint32_t length @@ -1224,7 +1224,7 @@ void CommunicationKDP::DumpPacket(Stream &s, const DataExtractor &packet) { uint32_t CommunicationKDP::SendRequestReadRegisters(uint32_t cpu, uint32_t flavor, void *dst, uint32_t dst_len, - Error &error) { + Status &error) { PacketStreamType request_packet(Stream::eBinary, m_addr_byte_size, m_byte_order); const CommandType command = KDP_READREGS; @@ -1267,7 +1267,7 @@ uint32_t CommunicationKDP::SendRequestWriteRegisters(uint32_t cpu, uint32_t flavor, const void *src, uint32_t src_len, - Error &error) { + Status &error) { PacketStreamType request_packet(Stream::eBinary, m_addr_byte_size, m_byte_order); const CommandType command = KDP_WRITEREGS; diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h b/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h index eed3daa4647..afac6601a56 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h @@ -128,22 +128,24 @@ public: bool SendRequestDisconnect(); uint32_t SendRequestReadMemory(lldb::addr_t addr, void *dst, - uint32_t dst_size, lldb_private::Error &error); + uint32_t dst_size, + lldb_private::Status &error); uint32_t SendRequestWriteMemory(lldb::addr_t addr, const void *src, - uint32_t src_len, lldb_private::Error &error); + uint32_t src_len, + lldb_private::Status &error); bool SendRawRequest(uint8_t command_byte, const void *src, uint32_t src_len, lldb_private::DataExtractor &reply, - lldb_private::Error &error); + lldb_private::Status &error); uint32_t SendRequestReadRegisters(uint32_t cpu, uint32_t flavor, void *dst, uint32_t dst_size, - lldb_private::Error &error); + lldb_private::Status &error); uint32_t SendRequestWriteRegisters(uint32_t cpu, uint32_t flavor, const void *src, uint32_t src_size, - lldb_private::Error &error); + lldb_private::Status &error); const char *GetKernelVersion(); diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp index 6b2e675afae..f01f1ace583 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp @@ -188,22 +188,22 @@ lldb_private::ConstString ProcessKDP::GetPluginName() { uint32_t ProcessKDP::GetPluginVersion() { return 1; } -Error ProcessKDP::WillLaunch(Module *module) { - Error error; +Status ProcessKDP::WillLaunch(Module *module) { + Status error; error.SetErrorString("launching not supported in kdp-remote plug-in"); return error; } -Error ProcessKDP::WillAttachToProcessWithID(lldb::pid_t pid) { - Error error; +Status ProcessKDP::WillAttachToProcessWithID(lldb::pid_t pid) { + Status error; error.SetErrorString( "attaching to a by process ID not supported in kdp-remote plug-in"); return error; } -Error ProcessKDP::WillAttachToProcessWithName(const char *process_name, - bool wait_for_launch) { - Error error; +Status ProcessKDP::WillAttachToProcessWithName(const char *process_name, + bool wait_for_launch) { + Status error; error.SetErrorString( "attaching to a by process name not supported in kdp-remote plug-in"); return error; @@ -223,8 +223,8 @@ bool ProcessKDP::GetHostArchitecture(ArchSpec &arch) { return false; } -Error ProcessKDP::DoConnectRemote(Stream *strm, llvm::StringRef remote_url) { - Error error; +Status ProcessKDP::DoConnectRemote(Stream *strm, llvm::StringRef remote_url) { + Status error; // Don't let any JIT happen when doing KDP as we can't allocate // memory and we don't want to be mucking with threads that might @@ -374,23 +374,26 @@ Error ProcessKDP::DoConnectRemote(Stream *strm, llvm::StringRef remote_url) { //---------------------------------------------------------------------- // Process Control //---------------------------------------------------------------------- -Error ProcessKDP::DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) { - Error error; +Status ProcessKDP::DoLaunch(Module *exe_module, + ProcessLaunchInfo &launch_info) { + Status error; error.SetErrorString("launching not supported in kdp-remote plug-in"); return error; } -Error ProcessKDP::DoAttachToProcessWithID( - lldb::pid_t attach_pid, const ProcessAttachInfo &attach_info) { - Error error; +Status +ProcessKDP::DoAttachToProcessWithID(lldb::pid_t attach_pid, + const ProcessAttachInfo &attach_info) { + Status error; error.SetErrorString( "attach to process by ID is not suppported in kdp remote debugging"); return error; } -Error ProcessKDP::DoAttachToProcessWithName( - const char *process_name, const ProcessAttachInfo &attach_info) { - Error error; +Status +ProcessKDP::DoAttachToProcessWithName(const char *process_name, + const ProcessAttachInfo &attach_info) { + Status error; error.SetErrorString( "attach to process by name is not suppported in kdp remote debugging"); return error; @@ -417,10 +420,10 @@ lldb_private::DynamicLoader *ProcessKDP::GetDynamicLoader() { return m_dyld_ap.get(); } -Error ProcessKDP::WillResume() { return Error(); } +Status ProcessKDP::WillResume() { return Status(); } -Error ProcessKDP::DoResume() { - Error error; +Status ProcessKDP::DoResume() { + Status error; Log *log(ProcessKDPLog::GetLogIfAllCategoriesSet(KDP_LOG_PROCESS)); // Only start the async thread if we try to do any process control if (!m_async_thread.IsJoinable()) @@ -537,8 +540,8 @@ void ProcessKDP::RefreshStateAfterStop() { m_thread_list.RefreshStateAfterStop(); } -Error ProcessKDP::DoHalt(bool &caused_stop) { - Error error; +Status ProcessKDP::DoHalt(bool &caused_stop) { + Status error; if (m_comm.IsRunning()) { if (m_destroy_in_process) { @@ -553,8 +556,8 @@ Error ProcessKDP::DoHalt(bool &caused_stop) { return error; } -Error ProcessKDP::DoDetach(bool keep_stopped) { - Error error; +Status ProcessKDP::DoDetach(bool keep_stopped) { + Status error; Log *log(ProcessKDPLog::GetLogIfAllCategoriesSet(KDP_LOG_PROCESS)); if (log) log->Printf("ProcessKDP::DoDetach(keep_stopped = %i)", keep_stopped); @@ -588,7 +591,7 @@ Error ProcessKDP::DoDetach(bool keep_stopped) { return error; } -Error ProcessKDP::DoDestroy() { +Status ProcessKDP::DoDestroy() { // For KDP there really is no difference between destroy and detach bool keep_stopped = false; return DoDetach(keep_stopped); @@ -606,7 +609,7 @@ bool ProcessKDP::IsAlive() { // Process Memory //------------------------------------------------------------------ size_t ProcessKDP::DoReadMemory(addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { uint8_t *data_buffer = (uint8_t *)buf; if (m_comm.IsConnected()) { const size_t max_read_size = 512; @@ -634,7 +637,7 @@ size_t ProcessKDP::DoReadMemory(addr_t addr, void *buf, size_t size, } size_t ProcessKDP::DoWriteMemory(addr_t addr, const void *buf, size_t size, - Error &error) { + Status &error) { if (m_comm.IsConnected()) return m_comm.SendRequestWriteMemory(addr, buf, size, error); error.SetErrorString("not connected"); @@ -642,22 +645,22 @@ size_t ProcessKDP::DoWriteMemory(addr_t addr, const void *buf, size_t size, } lldb::addr_t ProcessKDP::DoAllocateMemory(size_t size, uint32_t permissions, - Error &error) { + Status &error) { error.SetErrorString( "memory allocation not suppported in kdp remote debugging"); return LLDB_INVALID_ADDRESS; } -Error ProcessKDP::DoDeallocateMemory(lldb::addr_t addr) { - Error error; +Status ProcessKDP::DoDeallocateMemory(lldb::addr_t addr) { + Status error; error.SetErrorString( "memory deallocation not suppported in kdp remote debugging"); return error; } -Error ProcessKDP::EnableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessKDP::EnableBreakpointSite(BreakpointSite *bp_site) { if (m_comm.LocalBreakpointsAreSupported()) { - Error error; + Status error; if (!bp_site->IsEnabled()) { if (m_comm.SendRequestBreakpoint(true, bp_site->GetLoadAddress())) { bp_site->SetEnabled(true); @@ -671,9 +674,9 @@ Error ProcessKDP::EnableBreakpointSite(BreakpointSite *bp_site) { return EnableSoftwareBreakpoint(bp_site); } -Error ProcessKDP::DisableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessKDP::DisableBreakpointSite(BreakpointSite *bp_site) { if (m_comm.LocalBreakpointsAreSupported()) { - Error error; + Status error; if (bp_site->IsEnabled()) { BreakpointSite::Type bp_type = bp_site->GetType(); if (bp_type == BreakpointSite::eExternal) { @@ -695,15 +698,15 @@ Error ProcessKDP::DisableBreakpointSite(BreakpointSite *bp_site) { return DisableSoftwareBreakpoint(bp_site); } -Error ProcessKDP::EnableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessKDP::EnableWatchpoint(Watchpoint *wp, bool notify) { + Status error; error.SetErrorString( "watchpoints are not suppported in kdp remote debugging"); return error; } -Error ProcessKDP::DisableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessKDP::DisableWatchpoint(Watchpoint *wp, bool notify) { + Status error; error.SetErrorString( "watchpoints are not suppported in kdp remote debugging"); return error; @@ -711,8 +714,8 @@ Error ProcessKDP::DisableWatchpoint(Watchpoint *wp, bool notify) { void ProcessKDP::Clear() { m_thread_list.Clear(); } -Error ProcessKDP::DoSignal(int signo) { - Error error; +Status ProcessKDP::DoSignal(int signo) { + Status error; error.SetErrorString( "sending signals is not suppported in kdp remote debugging"); return error; @@ -950,7 +953,7 @@ public: return false; } } - Error error; + Status error; DataExtractor reply; process->GetCommunication().SendRawRequest( command_byte, diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h index 8f1033b9fd3..52b9441e0e7 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h @@ -24,7 +24,7 @@ #include "lldb/Target/Process.h" #include "lldb/Target/Thread.h" #include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/StreamString.h" #include "lldb/Utility/StringList.h" @@ -68,26 +68,26 @@ public: //------------------------------------------------------------------ // Creating a new process, or attaching to an existing one //------------------------------------------------------------------ - lldb_private::Error WillLaunch(lldb_private::Module *module) override; + lldb_private::Status WillLaunch(lldb_private::Module *module) override; - lldb_private::Error + lldb_private::Status DoLaunch(lldb_private::Module *exe_module, lldb_private::ProcessLaunchInfo &launch_info) override; - lldb_private::Error WillAttachToProcessWithID(lldb::pid_t pid) override; + lldb_private::Status WillAttachToProcessWithID(lldb::pid_t pid) override; - lldb_private::Error + lldb_private::Status WillAttachToProcessWithName(const char *process_name, bool wait_for_launch) override; - lldb_private::Error DoConnectRemote(lldb_private::Stream *strm, - llvm::StringRef remote_url) override; + lldb_private::Status DoConnectRemote(lldb_private::Stream *strm, + llvm::StringRef remote_url) override; - lldb_private::Error DoAttachToProcessWithID( + lldb_private::Status DoAttachToProcessWithID( lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info) override; - lldb_private::Error DoAttachToProcessWithName( + lldb_private::Status DoAttachToProcessWithName( const char *process_name, const lldb_private::ProcessAttachInfo &attach_info) override; @@ -107,17 +107,17 @@ public: //------------------------------------------------------------------ // Process Control //------------------------------------------------------------------ - lldb_private::Error WillResume() override; + lldb_private::Status WillResume() override; - lldb_private::Error DoResume() override; + lldb_private::Status DoResume() override; - lldb_private::Error DoHalt(bool &caused_stop) override; + lldb_private::Status DoHalt(bool &caused_stop) override; - lldb_private::Error DoDetach(bool keep_stopped) override; + lldb_private::Status DoDetach(bool keep_stopped) override; - lldb_private::Error DoSignal(int signal) override; + lldb_private::Status DoSignal(int signal) override; - lldb_private::Error DoDestroy() override; + lldb_private::Status DoDestroy() override; void RefreshStateAfterStop() override; @@ -130,34 +130,34 @@ public: // Process Memory //------------------------------------------------------------------ size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; size_t DoWriteMemory(lldb::addr_t addr, const void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions, - lldb_private::Error &error) override; + lldb_private::Status &error) override; - lldb_private::Error DoDeallocateMemory(lldb::addr_t ptr) override; + lldb_private::Status DoDeallocateMemory(lldb::addr_t ptr) override; //---------------------------------------------------------------------- // Process Breakpoints //---------------------------------------------------------------------- - lldb_private::Error + lldb_private::Status EnableBreakpointSite(lldb_private::BreakpointSite *bp_site) override; - lldb_private::Error + lldb_private::Status DisableBreakpointSite(lldb_private::BreakpointSite *bp_site) override; //---------------------------------------------------------------------- // Process Watchpoints //---------------------------------------------------------------------- - lldb_private::Error EnableWatchpoint(lldb_private::Watchpoint *wp, - bool notify = true) override; - - lldb_private::Error DisableWatchpoint(lldb_private::Watchpoint *wp, + lldb_private::Status EnableWatchpoint(lldb_private::Watchpoint *wp, bool notify = true) override; + lldb_private::Status DisableWatchpoint(lldb_private::Watchpoint *wp, + bool notify = true) override; + CommunicationKDP &GetCommunication() { return m_comm; } protected: diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm.cpp index 06c33dba857..159a046b617 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm.cpp @@ -29,7 +29,7 @@ RegisterContextKDP_arm::~RegisterContextKDP_arm() {} int RegisterContextKDP_arm::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -44,7 +44,7 @@ int RegisterContextKDP_arm::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { int RegisterContextKDP_arm::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -59,7 +59,7 @@ int RegisterContextKDP_arm::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { int RegisterContextKDP_arm::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -74,7 +74,7 @@ int RegisterContextKDP_arm::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { int RegisterContextKDP_arm::DoReadDBG(lldb::tid_t tid, int flavor, DBG &dbg) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, DBGRegSet, &dbg, sizeof(dbg), @@ -90,7 +90,7 @@ int RegisterContextKDP_arm::DoWriteGPR(lldb::tid_t tid, int flavor, const GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -106,7 +106,7 @@ int RegisterContextKDP_arm::DoWriteFPU(lldb::tid_t tid, int flavor, const FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -122,7 +122,7 @@ int RegisterContextKDP_arm::DoWriteEXC(lldb::tid_t tid, int flavor, const EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -138,7 +138,7 @@ int RegisterContextKDP_arm::DoWriteDBG(lldb::tid_t tid, int flavor, const DBG &dbg) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, DBGRegSet, &dbg, sizeof(dbg), diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm64.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm64.cpp index 6a2733e6275..44534a25256 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm64.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm64.cpp @@ -30,7 +30,7 @@ RegisterContextKDP_arm64::~RegisterContextKDP_arm64() {} int RegisterContextKDP_arm64::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -45,7 +45,7 @@ int RegisterContextKDP_arm64::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { int RegisterContextKDP_arm64::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -60,7 +60,7 @@ int RegisterContextKDP_arm64::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { int RegisterContextKDP_arm64::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -75,7 +75,7 @@ int RegisterContextKDP_arm64::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { int RegisterContextKDP_arm64::DoReadDBG(lldb::tid_t tid, int flavor, DBG &dbg) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, DBGRegSet, &dbg, sizeof(dbg), @@ -91,7 +91,7 @@ int RegisterContextKDP_arm64::DoWriteGPR(lldb::tid_t tid, int flavor, const GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -107,7 +107,7 @@ int RegisterContextKDP_arm64::DoWriteFPU(lldb::tid_t tid, int flavor, const FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -123,7 +123,7 @@ int RegisterContextKDP_arm64::DoWriteEXC(lldb::tid_t tid, int flavor, const EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -139,7 +139,7 @@ int RegisterContextKDP_arm64::DoWriteDBG(lldb::tid_t tid, int flavor, const DBG &dbg) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, DBGRegSet, &dbg, sizeof(dbg), diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_i386.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_i386.cpp index 4a130c18d07..e48232ad8dd 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_i386.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_i386.cpp @@ -28,7 +28,7 @@ RegisterContextKDP_i386::~RegisterContextKDP_i386() {} int RegisterContextKDP_i386::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -43,7 +43,7 @@ int RegisterContextKDP_i386::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { int RegisterContextKDP_i386::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -58,7 +58,7 @@ int RegisterContextKDP_i386::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { int RegisterContextKDP_i386::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -74,7 +74,7 @@ int RegisterContextKDP_i386::DoWriteGPR(lldb::tid_t tid, int flavor, const GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -90,7 +90,7 @@ int RegisterContextKDP_i386::DoWriteFPU(lldb::tid_t tid, int flavor, const FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -106,7 +106,7 @@ int RegisterContextKDP_i386::DoWriteEXC(lldb::tid_t tid, int flavor, const EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc), diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_x86_64.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_x86_64.cpp index ad10d3f6be5..50e11f38192 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_x86_64.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_x86_64.cpp @@ -29,7 +29,7 @@ int RegisterContextKDP_x86_64::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -45,7 +45,7 @@ int RegisterContextKDP_x86_64::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -61,7 +61,7 @@ int RegisterContextKDP_x86_64::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc), @@ -77,7 +77,7 @@ int RegisterContextKDP_x86_64::DoWriteGPR(lldb::tid_t tid, int flavor, const GPR &gpr) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr), @@ -93,7 +93,7 @@ int RegisterContextKDP_x86_64::DoWriteFPU(lldb::tid_t tid, int flavor, const FPU &fpu) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu), @@ -109,7 +109,7 @@ int RegisterContextKDP_x86_64::DoWriteEXC(lldb::tid_t tid, int flavor, const EXC &exc) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (static_cast<ProcessKDP *>(process_sp.get()) ->GetCommunication() .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc), diff --git a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp index 347c12943bd..80751147b4f 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp +++ b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp @@ -68,8 +68,8 @@ static int convert_pid_status_to_return_code(int status) { // Simple helper function to ensure flags are enabled on the given file // descriptor. -static Error EnsureFDFlags(int fd, int flags) { - Error error; +static Status EnsureFDFlags(int fd, int flags) { + Status error; int status = fcntl(fd, F_GETFL); if (status == -1) { @@ -89,13 +89,13 @@ static Error EnsureFDFlags(int fd, int flags) { // Public Static Methods // ----------------------------------------------------------------------------- -Error NativeProcessProtocol::Launch( +Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); - Error error; + Status error; // Verify the working directory is valid if one was specified. FileSpec working_dir{launch_info.GetWorkingDirectory()}; @@ -129,7 +129,7 @@ Error NativeProcessProtocol::Launch( return error; } -Error NativeProcessProtocol::Attach( +Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &native_process_sp) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); @@ -137,7 +137,7 @@ Error NativeProcessProtocol::Attach( // Retrieve the architecture for the running process. ArchSpec process_arch; - Error error = ResolveProcessArchitecture(pid, process_arch); + Status error = ResolveProcessArchitecture(pid, process_arch); if (!error.Success()) return error; @@ -245,7 +245,7 @@ void NativeProcessNetBSD::MonitorSIGTRAP(lldb::pid_t pid) { SetState(StateType::eStateStopped, true); break; case TRAP_EXEC: { - Error error = ReinitializeThreads(); + Status error = ReinitializeThreads(); if (error.Fail()) { SetState(StateType::eStateInvalid); return; @@ -262,7 +262,7 @@ void NativeProcessNetBSD::MonitorSIGTRAP(lldb::pid_t pid) { case TRAP_DBREG: { // If a watchpoint was hit, report it uint32_t wp_index; - Error error = + Status error = static_pointer_cast<NativeThreadNetBSD>(m_threads[info.psi_lwpid]) ->GetRegisterContext() ->GetWatchpointHitIndex(wp_index, @@ -318,10 +318,10 @@ void NativeProcessNetBSD::MonitorSignal(lldb::pid_t pid, int signal) { SetState(StateType::eStateStopped, true); } -Error NativeProcessNetBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, - int data, int *result) { +Status NativeProcessNetBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, + int data, int *result) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); - Error error; + Status error; int ret; errno = 0; @@ -341,7 +341,7 @@ Error NativeProcessNetBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, return error; } -Error NativeProcessNetBSD::GetSoftwareBreakpointPCOffset( +Status NativeProcessNetBSD::GetSoftwareBreakpointPCOffset( uint32_t &actual_opcode_size) { // FIXME put this behind a breakpoint protocol class that can be // set per architecture. Need ARM, MIPS support here. @@ -349,17 +349,17 @@ Error NativeProcessNetBSD::GetSoftwareBreakpointPCOffset( switch (m_arch.GetMachine()) { case llvm::Triple::x86_64: actual_opcode_size = static_cast<uint32_t>(sizeof(g_i386_opcode)); - return Error(); + return Status(); default: assert(false && "CPU type not supported!"); - return Error("CPU type not supported"); + return Status("CPU type not supported"); } } -Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( - NativeThreadNetBSD &thread) { +Status +NativeProcessNetBSD::FixupBreakpointPCAsNeeded(NativeThreadNetBSD &thread) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_BREAKPOINTS)); - Error error; + Status error; // Find out the size of a breakpoint (might depend on where we are in the // code). NativeRegisterContextSP context_sp = thread.GetRegisterContext(); @@ -394,7 +394,7 @@ Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( "pid {0} no lldb breakpoint found at current pc with " "adjustment: {1}", GetID(), breakpoint_addr); - return Error(); + return Status(); } // If the breakpoint is not a software breakpoint, nothing to do. if (!breakpoint_sp->IsSoftwareBreakpoint()) { @@ -402,7 +402,7 @@ Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( log, "pid {0} breakpoint found at {1:x}, not software, nothing to adjust", GetID(), breakpoint_addr); - return Error(); + return Status(); } // // We have a software breakpoint and need to adjust the PC. @@ -414,7 +414,7 @@ Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( "pid {0} breakpoint found at {1:x}, it is software, but the " "size is zero, nothing to do (unexpected)", GetID(), breakpoint_addr); - return Error(); + return Status(); } // // We have a software breakpoint and need to adjust the PC. @@ -426,7 +426,7 @@ Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( "pid {0} breakpoint found at {1:x}, it is software, but the " "size is zero, nothing to do (unexpected)", GetID(), breakpoint_addr); - return Error(); + return Status(); } // Change the program counter. LLDB_LOG(log, "pid {0} tid {1}: changing PC from {2:x} to {3:x}", GetID(), @@ -440,7 +440,7 @@ Error NativeProcessNetBSD::FixupBreakpointPCAsNeeded( return error; } -Error NativeProcessNetBSD::Resume(const ResumeActionList &resume_actions) { +Status NativeProcessNetBSD::Resume(const ResumeActionList &resume_actions) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid {0}", GetID()); @@ -451,10 +451,10 @@ Error NativeProcessNetBSD::Resume(const ResumeActionList &resume_actions) { if (action == nullptr) { LLDB_LOG(log, "no action specified for pid {0} tid {1}", GetID(), thread_sp->GetID()); - return Error(); + return Status(); } - Error error; + Status error; switch (action->state) { case eStateRunning: { @@ -486,17 +486,17 @@ Error NativeProcessNetBSD::Resume(const ResumeActionList &resume_actions) { llvm_unreachable("Unexpected state"); default: - return Error("NativeProcessNetBSD::%s (): unexpected state %s specified " - "for pid %" PRIu64 ", tid %" PRIu64, - __FUNCTION__, StateAsCString(action->state), GetID(), - thread_sp->GetID()); + return Status("NativeProcessNetBSD::%s (): unexpected state %s specified " + "for pid %" PRIu64 ", tid %" PRIu64, + __FUNCTION__, StateAsCString(action->state), GetID(), + thread_sp->GetID()); } - return Error(); + return Status(); } -Error NativeProcessNetBSD::Halt() { - Error error; +Status NativeProcessNetBSD::Halt() { + Status error; if (kill(GetID(), SIGSTOP) != 0) error.SetErrorToErrno(); @@ -504,8 +504,8 @@ Error NativeProcessNetBSD::Halt() { return error; } -Error NativeProcessNetBSD::Detach() { - Error error; +Status NativeProcessNetBSD::Detach() { + Status error; // Stop monitoring the inferior. m_sigchld_handle.reset(); @@ -517,8 +517,8 @@ Error NativeProcessNetBSD::Detach() { return PtraceWrapper(PT_DETACH, GetID()); } -Error NativeProcessNetBSD::Signal(int signo) { - Error error; +Status NativeProcessNetBSD::Signal(int signo) { + Status error; if (kill(GetID(), signo)) error.SetErrorToErrno(); @@ -526,11 +526,11 @@ Error NativeProcessNetBSD::Signal(int signo) { return error; } -Error NativeProcessNetBSD::Kill() { +Status NativeProcessNetBSD::Kill() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid {0}", GetID()); - Error error; + Status error; switch (m_state) { case StateType::eStateInvalid: @@ -562,15 +562,15 @@ Error NativeProcessNetBSD::Kill() { return error; } -Error NativeProcessNetBSD::GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) { +Status NativeProcessNetBSD::GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) { if (m_supports_mem_region == LazyBool::eLazyBoolNo) { // We're done. - return Error("unsupported"); + return Status("unsupported"); } - Error error = PopulateMemoryRegionCache(); + Status error = PopulateMemoryRegionCache(); if (error.Fail()) { return error; } @@ -619,14 +619,14 @@ Error NativeProcessNetBSD::GetMemoryRegionInfo(lldb::addr_t load_addr, return error; } -Error NativeProcessNetBSD::PopulateMemoryRegionCache() { +Status NativeProcessNetBSD::PopulateMemoryRegionCache() { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); // If our cache is empty, pull the latest. There should always be at least // one memory region if memory region handling is supported. if (!m_mem_region_cache.empty()) { LLDB_LOG(log, "reusing {0} cached memory region entries", m_mem_region_cache.size()); - return Error(); + return Status(); } struct kinfo_vmentry *vm; @@ -634,7 +634,7 @@ Error NativeProcessNetBSD::PopulateMemoryRegionCache() { vm = kinfo_getvmmap(GetID(), &count); if (vm == NULL) { m_supports_mem_region = LazyBool::eLazyBoolNo; - Error error; + Status error; error.SetErrorString("not supported"); return error; } @@ -674,7 +674,7 @@ Error NativeProcessNetBSD::PopulateMemoryRegionCache() { LLDB_LOG(log, "failed to find any vmmap entries, assuming no support " "for memory region metadata retrieval"); m_supports_mem_region = LazyBool::eLazyBoolNo; - Error error; + Status error; error.SetErrorString("not supported"); return error; } @@ -682,16 +682,16 @@ Error NativeProcessNetBSD::PopulateMemoryRegionCache() { m_mem_region_cache.size(), GetID()); // We support memory retrieval, remember that. m_supports_mem_region = LazyBool::eLazyBoolYes; - return Error(); + return Status(); } -Error NativeProcessNetBSD::AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) { - return Error("Unimplemented"); +Status NativeProcessNetBSD::AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) { + return Status("Unimplemented"); } -Error NativeProcessNetBSD::DeallocateMemory(lldb::addr_t addr) { - return Error("Unimplemented"); +Status NativeProcessNetBSD::DeallocateMemory(lldb::addr_t addr) { + return Status("Unimplemented"); } lldb::addr_t NativeProcessNetBSD::GetSharedLibraryInfoAddress() { @@ -706,15 +706,15 @@ bool NativeProcessNetBSD::GetArchitecture(ArchSpec &arch) const { return true; } -Error NativeProcessNetBSD::SetBreakpoint(lldb::addr_t addr, uint32_t size, - bool hardware) { +Status NativeProcessNetBSD::SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) { if (hardware) - return Error("NativeProcessNetBSD does not support hardware breakpoints"); + return Status("NativeProcessNetBSD does not support hardware breakpoints"); else return SetSoftwareBreakpoint(addr, size); } -Error NativeProcessNetBSD::GetSoftwareBreakpointTrapOpcode( +Status NativeProcessNetBSD::GetSoftwareBreakpointTrapOpcode( size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) { static const uint8_t g_i386_opcode[] = {0xCC}; @@ -724,27 +724,27 @@ Error NativeProcessNetBSD::GetSoftwareBreakpointTrapOpcode( case llvm::Triple::x86_64: trap_opcode_bytes = g_i386_opcode; actual_opcode_size = sizeof(g_i386_opcode); - return Error(); + return Status(); default: assert(false && "CPU type not supported!"); - return Error("CPU type not supported"); + return Status("CPU type not supported"); } } -Error NativeProcessNetBSD::GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) { - return Error("Unimplemented"); +Status NativeProcessNetBSD::GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) { + return Status("Unimplemented"); } -Error NativeProcessNetBSD::GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) { +Status NativeProcessNetBSD::GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) { load_addr = LLDB_INVALID_ADDRESS; - return Error(); + return Status(); } -Error NativeProcessNetBSD::LaunchInferior(MainLoop &mainloop, - ProcessLaunchInfo &launch_info) { - Error error; +Status NativeProcessNetBSD::LaunchInferior(MainLoop &mainloop, + ProcessLaunchInfo &launch_info) { + Status error; m_sigchld_handle = mainloop.RegisterSignal( SIGCHLD, [this](MainLoopBase &) { SigchldHandler(); }, error); if (!m_sigchld_handle) @@ -826,7 +826,7 @@ Error NativeProcessNetBSD::LaunchInferior(MainLoop &mainloop, } void NativeProcessNetBSD::AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, - Error &error) { + Status &error) { Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); LLDB_LOG(log, "pid = {0:x}", pid); @@ -862,7 +862,7 @@ void NativeProcessNetBSD::SigchldHandler() { if (errno == EINTR) return; - Error error(errno, eErrorTypePOSIX); + Status error(errno, eErrorTypePOSIX); LLDB_LOG(log, "waitpid ({0}, &status, _) failed: {1}", GetID(), error); } @@ -915,7 +915,7 @@ NativeThreadNetBSDSP NativeProcessNetBSD::AddThread(lldb::tid_t thread_id) { return thread_sp; } -::pid_t NativeProcessNetBSD::Attach(lldb::pid_t pid, Error &error) { +::pid_t NativeProcessNetBSD::Attach(lldb::pid_t pid, Status &error) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); if (pid <= 1) { @@ -956,8 +956,8 @@ NativeThreadNetBSDSP NativeProcessNetBSD::AddThread(lldb::tid_t thread_id) { return pid; } -Error NativeProcessNetBSD::ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) { +Status NativeProcessNetBSD::ReadMemory(lldb::addr_t addr, void *buf, + size_t size, size_t &bytes_read) { unsigned char *dst = static_cast<unsigned char *>(buf); struct ptrace_io_desc io; @@ -972,7 +972,7 @@ Error NativeProcessNetBSD::ReadMemory(lldb::addr_t addr, void *buf, size_t size, io.piod_offs = (void *)(addr + bytes_read); io.piod_addr = dst + bytes_read; - Error error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); + Status error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); if (error.Fail()) return error; @@ -980,22 +980,22 @@ Error NativeProcessNetBSD::ReadMemory(lldb::addr_t addr, void *buf, size_t size, io.piod_len = size - bytes_read; } while (bytes_read < size); - return Error(); + return Status(); } -Error NativeProcessNetBSD::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, - size_t size, - size_t &bytes_read) { - Error error = ReadMemory(addr, buf, size, bytes_read); +Status NativeProcessNetBSD::ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, + size_t size, + size_t &bytes_read) { + Status error = ReadMemory(addr, buf, size, bytes_read); if (error.Fail()) return error; return m_breakpoint_list.RemoveTrapsFromBuffer(addr, buf, size); } -Error NativeProcessNetBSD::WriteMemory(lldb::addr_t addr, const void *buf, - size_t size, size_t &bytes_written) { +Status NativeProcessNetBSD::WriteMemory(lldb::addr_t addr, const void *buf, + size_t size, size_t &bytes_written) { const unsigned char *src = static_cast<const unsigned char *>(buf); - Error error; + Status error; struct ptrace_io_desc io; Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_MEMORY)); @@ -1009,7 +1009,7 @@ Error NativeProcessNetBSD::WriteMemory(lldb::addr_t addr, const void *buf, io.piod_addr = (void *)(src + bytes_written); io.piod_offs = (void *)(addr + bytes_written); - Error error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); + Status error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); if (error.Fail()) return error; @@ -1039,7 +1039,7 @@ NativeProcessNetBSD::GetAuxvData() const { .piod_addr = (void *)buf.get()->getBufferStart(), .piod_len = auxv_size}; - Error error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); + Status error = NativeProcessNetBSD::PtraceWrapper(PT_IO, GetID(), &io); if (error.Fail()) return std::error_code(error.GetError(), std::generic_category()); @@ -1050,13 +1050,13 @@ NativeProcessNetBSD::GetAuxvData() const { return buf; } -Error NativeProcessNetBSD::ReinitializeThreads() { +Status NativeProcessNetBSD::ReinitializeThreads() { // Clear old threads m_threads.clear(); // Initialize new thread struct ptrace_lwpinfo info = {}; - Error error = PtraceWrapper(PT_LWPINFO, GetID(), &info, sizeof(info)); + Status error = PtraceWrapper(PT_LWPINFO, GetID(), &info, sizeof(info)); if (error.Fail()) { return error; } diff --git a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h index ae946a8e004..e18ba162e52 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h +++ b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h @@ -31,11 +31,11 @@ namespace process_netbsd { /// /// Changes in the inferior process state are broadcasted. class NativeProcessNetBSD : public NativeProcessProtocol { - friend Error NativeProcessProtocol::Launch( + friend Status NativeProcessProtocol::Launch( ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); - friend Error NativeProcessProtocol::Attach( + friend Status NativeProcessProtocol::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop, NativeProcessProtocolSP &process_sp); @@ -43,32 +43,32 @@ public: // --------------------------------------------------------------------- // NativeProcessProtocol Interface // --------------------------------------------------------------------- - Error Resume(const ResumeActionList &resume_actions) override; + Status Resume(const ResumeActionList &resume_actions) override; - Error Halt() override; + Status Halt() override; - Error Detach() override; + Status Detach() override; - Error Signal(int signo) override; + Status Signal(int signo) override; - Error Kill() override; + Status Kill() override; - Error GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) override; + Status GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) override; - Error ReadMemory(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemory(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, - size_t &bytes_read) override; + Status ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, + size_t &bytes_read) override; - Error WriteMemory(lldb::addr_t addr, const void *buf, size_t size, - size_t &bytes_written) override; + Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, + size_t &bytes_written) override; - Error AllocateMemory(size_t size, uint32_t permissions, - lldb::addr_t &addr) override; + Status AllocateMemory(size_t size, uint32_t permissions, + lldb::addr_t &addr) override; - Error DeallocateMemory(lldb::addr_t addr) override; + Status DeallocateMemory(lldb::addr_t addr) override; lldb::addr_t GetSharedLibraryInfoAddress() override; @@ -76,13 +76,14 @@ public: bool GetArchitecture(ArchSpec &arch) const override; - Error SetBreakpoint(lldb::addr_t addr, uint32_t size, bool hardware) override; + Status SetBreakpoint(lldb::addr_t addr, uint32_t size, + bool hardware) override; - Error GetLoadedModuleFileSpec(const char *module_path, - FileSpec &file_spec) override; + Status GetLoadedModuleFileSpec(const char *module_path, + FileSpec &file_spec) override; - Error GetFileLoadAddress(const llvm::StringRef &file_name, - lldb::addr_t &load_addr) override; + Status GetFileLoadAddress(const llvm::StringRef &file_name, + lldb::addr_t &load_addr) override; llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> GetAuxvData() const override; @@ -90,15 +91,15 @@ public: // --------------------------------------------------------------------- // Interface used by NativeRegisterContext-derived classes. // --------------------------------------------------------------------- - static Error PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, - int data = 0, int *result = nullptr); + static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr, + int data = 0, int *result = nullptr); protected: // --------------------------------------------------------------------- // NativeProcessProtocol protected interface // --------------------------------------------------------------------- - Error + Status GetSoftwareBreakpointTrapOpcode(size_t trap_opcode_size_hint, size_t &actual_opcode_size, const uint8_t *&trap_opcode_bytes) override; @@ -116,8 +117,8 @@ private: NativeThreadNetBSDSP AddThread(lldb::tid_t thread_id); - Error LaunchInferior(MainLoop &mainloop, ProcessLaunchInfo &launch_info); - void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Error &error); + Status LaunchInferior(MainLoop &mainloop, ProcessLaunchInfo &launch_info); + void AttachToInferior(MainLoop &mainloop, lldb::pid_t pid, Status &error); void MonitorCallback(lldb::pid_t pid, int signal); void MonitorExited(lldb::pid_t pid, int signal, int status); @@ -125,14 +126,14 @@ private: void MonitorSIGTRAP(lldb::pid_t pid); void MonitorSignal(lldb::pid_t pid, int signal); - Error GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); - Error FixupBreakpointPCAsNeeded(NativeThreadNetBSD &thread); - Error PopulateMemoryRegionCache(); + Status GetSoftwareBreakpointPCOffset(uint32_t &actual_opcode_size); + Status FixupBreakpointPCAsNeeded(NativeThreadNetBSD &thread); + Status PopulateMemoryRegionCache(); void SigchldHandler(); - ::pid_t Attach(lldb::pid_t pid, Error &error); + ::pid_t Attach(lldb::pid_t pid, Status &error); - Error ReinitializeThreads(); + Status ReinitializeThreads(); }; } // namespace process_netbsd diff --git a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.cpp b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.cpp index cd47deac73a..b442fc3462c 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.cpp +++ b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.cpp @@ -25,80 +25,80 @@ NativeRegisterContextNetBSD::NativeRegisterContextNetBSD( : NativeRegisterContextRegisterInfo(native_thread, concrete_frame_idx, reg_info_interface_p) {} -Error NativeRegisterContextNetBSD::ReadGPR() { +Status NativeRegisterContextNetBSD::ReadGPR() { void *buf = GetGPRBuffer(); if (!buf) - return Error("GPR buffer is NULL"); + return Status("GPR buffer is NULL"); return DoReadGPR(buf); } -Error NativeRegisterContextNetBSD::WriteGPR() { +Status NativeRegisterContextNetBSD::WriteGPR() { void *buf = GetGPRBuffer(); if (!buf) - return Error("GPR buffer is NULL"); + return Status("GPR buffer is NULL"); return DoWriteGPR(buf); } -Error NativeRegisterContextNetBSD::ReadFPR() { +Status NativeRegisterContextNetBSD::ReadFPR() { void *buf = GetFPRBuffer(); if (!buf) - return Error("FPR buffer is NULL"); + return Status("FPR buffer is NULL"); return DoReadFPR(buf); } -Error NativeRegisterContextNetBSD::WriteFPR() { +Status NativeRegisterContextNetBSD::WriteFPR() { void *buf = GetFPRBuffer(); if (!buf) - return Error("FPR buffer is NULL"); + return Status("FPR buffer is NULL"); return DoWriteFPR(buf); } -Error NativeRegisterContextNetBSD::ReadDBR() { +Status NativeRegisterContextNetBSD::ReadDBR() { void *buf = GetDBRBuffer(); if (!buf) - return Error("DBR buffer is NULL"); + return Status("DBR buffer is NULL"); return DoReadDBR(buf); } -Error NativeRegisterContextNetBSD::WriteDBR() { +Status NativeRegisterContextNetBSD::WriteDBR() { void *buf = GetDBRBuffer(); if (!buf) - return Error("DBR buffer is NULL"); + return Status("DBR buffer is NULL"); return DoWriteDBR(buf); } -Error NativeRegisterContextNetBSD::DoReadGPR(void *buf) { +Status NativeRegisterContextNetBSD::DoReadGPR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_GETREGS, GetProcessPid(), buf, m_thread.GetID()); } -Error NativeRegisterContextNetBSD::DoWriteGPR(void *buf) { +Status NativeRegisterContextNetBSD::DoWriteGPR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_SETREGS, GetProcessPid(), buf, m_thread.GetID()); } -Error NativeRegisterContextNetBSD::DoReadFPR(void *buf) { +Status NativeRegisterContextNetBSD::DoReadFPR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_GETFPREGS, GetProcessPid(), buf, m_thread.GetID()); } -Error NativeRegisterContextNetBSD::DoWriteFPR(void *buf) { +Status NativeRegisterContextNetBSD::DoWriteFPR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_SETFPREGS, GetProcessPid(), buf, m_thread.GetID()); } -Error NativeRegisterContextNetBSD::DoReadDBR(void *buf) { +Status NativeRegisterContextNetBSD::DoReadDBR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_GETDBREGS, GetProcessPid(), buf, m_thread.GetID()); } -Error NativeRegisterContextNetBSD::DoWriteDBR(void *buf) { +Status NativeRegisterContextNetBSD::DoWriteDBR(void *buf) { return NativeProcessNetBSD::PtraceWrapper(PT_SETDBREGS, GetProcessPid(), buf, m_thread.GetID()); } diff --git a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h index d820baac3af..d96b7aea004 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h +++ b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h @@ -35,14 +35,14 @@ public: uint32_t concrete_frame_idx); protected: - virtual Error ReadGPR(); - virtual Error WriteGPR(); + virtual Status ReadGPR(); + virtual Status WriteGPR(); - virtual Error ReadFPR(); - virtual Error WriteFPR(); + virtual Status ReadFPR(); + virtual Status WriteFPR(); - virtual Error ReadDBR(); - virtual Error WriteDBR(); + virtual Status ReadDBR(); + virtual Status WriteDBR(); virtual void *GetGPRBuffer() { return nullptr; } virtual size_t GetGPRSize() { @@ -55,14 +55,14 @@ protected: virtual void *GetDBRBuffer() { return nullptr; } virtual size_t GetDBRSize() { return 0; } - virtual Error DoReadGPR(void *buf); - virtual Error DoWriteGPR(void *buf); + virtual Status DoReadGPR(void *buf); + virtual Status DoWriteGPR(void *buf); - virtual Error DoReadFPR(void *buf); - virtual Error DoWriteFPR(void *buf); + virtual Status DoReadFPR(void *buf); + virtual Status DoWriteFPR(void *buf); - virtual Error DoReadDBR(void *buf); - virtual Error DoWriteDBR(void *buf); + virtual Status DoReadDBR(void *buf); + virtual Status DoWriteDBR(void *buf); virtual NativeProcessNetBSD &GetProcess(); virtual ::pid_t GetProcessPid(); diff --git a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp index dc37be7b934..9690da0e137 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp +++ b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp @@ -14,8 +14,8 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/HostInfo.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Utility/RegisterContextNetBSD_x86_64.h" @@ -251,9 +251,10 @@ int NativeRegisterContextNetBSD_x86_64::WriteRegisterSet(uint32_t set) { return -1; } -Error NativeRegisterContextNetBSD_x86_64::ReadRegister( - const RegisterInfo *reg_info, RegisterValue ®_value) { - Error error; +Status +NativeRegisterContextNetBSD_x86_64::ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) { + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -446,10 +447,10 @@ Error NativeRegisterContextNetBSD_x86_64::ReadRegister( return error; } -Error NativeRegisterContextNetBSD_x86_64::WriteRegister( +Status NativeRegisterContextNetBSD_x86_64::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { - Error error; + Status error; if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -645,9 +646,9 @@ Error NativeRegisterContextNetBSD_x86_64::WriteRegister( return error; } -Error NativeRegisterContextNetBSD_x86_64::ReadAllRegisterValues( +Status NativeRegisterContextNetBSD_x86_64::ReadAllRegisterValues( lldb::DataBufferSP &data_sp) { - Error error; + Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); if (!data_sp) { @@ -680,9 +681,9 @@ Error NativeRegisterContextNetBSD_x86_64::ReadAllRegisterValues( return error; } -Error NativeRegisterContextNetBSD_x86_64::WriteAllRegisterValues( +Status NativeRegisterContextNetBSD_x86_64::WriteAllRegisterValues( const lldb::DataBufferSP &data_sp) { - Error error; + Status error; if (!data_sp) { error.SetErrorStringWithFormat( @@ -717,14 +718,14 @@ Error NativeRegisterContextNetBSD_x86_64::WriteAllRegisterValues( return error; } -Error NativeRegisterContextNetBSD_x86_64::IsWatchpointHit(uint32_t wp_index, - bool &is_hit) { +Status NativeRegisterContextNetBSD_x86_64::IsWatchpointHit(uint32_t wp_index, + bool &is_hit) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); RegisterValue reg_value; const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(lldb_dr6_x86_64); - Error error = ReadRegister(reg_info, reg_value); + Status error = ReadRegister(reg_info, reg_value); if (error.Fail()) { is_hit = false; return error; @@ -737,12 +738,12 @@ Error NativeRegisterContextNetBSD_x86_64::IsWatchpointHit(uint32_t wp_index, return error; } -Error NativeRegisterContextNetBSD_x86_64::GetWatchpointHitIndex( +Status NativeRegisterContextNetBSD_x86_64::GetWatchpointHitIndex( uint32_t &wp_index, lldb::addr_t trap_addr) { uint32_t num_hw_wps = NumSupportedHardwareWatchpoints(); for (wp_index = 0; wp_index < num_hw_wps; ++wp_index) { bool is_hit; - Error error = IsWatchpointHit(wp_index, is_hit); + Status error = IsWatchpointHit(wp_index, is_hit); if (error.Fail()) { wp_index = LLDB_INVALID_INDEX32; return error; @@ -751,17 +752,17 @@ Error NativeRegisterContextNetBSD_x86_64::GetWatchpointHitIndex( } } wp_index = LLDB_INVALID_INDEX32; - return Error(); + return Status(); } -Error NativeRegisterContextNetBSD_x86_64::IsWatchpointVacant(uint32_t wp_index, - bool &is_vacant) { +Status NativeRegisterContextNetBSD_x86_64::IsWatchpointVacant(uint32_t wp_index, + bool &is_vacant) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); RegisterValue reg_value; const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(lldb_dr7_x86_64); - Error error = ReadRegister(reg_info, reg_value); + Status error = ReadRegister(reg_info, reg_value); if (error.Fail()) { is_vacant = false; return error; @@ -774,11 +775,11 @@ Error NativeRegisterContextNetBSD_x86_64::IsWatchpointVacant(uint32_t wp_index, return error; } -Error NativeRegisterContextNetBSD_x86_64::SetHardwareWatchpointWithIndex( +Status NativeRegisterContextNetBSD_x86_64::SetHardwareWatchpointWithIndex( lldb::addr_t addr, size_t size, uint32_t watch_flags, uint32_t wp_index) { if (wp_index >= NumSupportedHardwareWatchpoints()) - return Error("Watchpoint index out of range"); + return Status("Watchpoint index out of range"); // Read only watchpoints aren't supported on x86_64. Fall back to read/write // waitchpoints instead. @@ -788,17 +789,17 @@ Error NativeRegisterContextNetBSD_x86_64::SetHardwareWatchpointWithIndex( watch_flags = 0x3; if (watch_flags != 0x1 && watch_flags != 0x3) - return Error("Invalid read/write bits for watchpoint"); + return Status("Invalid read/write bits for watchpoint"); if (size != 1 && size != 2 && size != 4 && size != 8) - return Error("Invalid size for watchpoint"); + return Status("Invalid size for watchpoint"); bool is_vacant; - Error error = IsWatchpointVacant(wp_index, is_vacant); + Status error = IsWatchpointVacant(wp_index, is_vacant); if (error.Fail()) return error; if (!is_vacant) - return Error("Watchpoint index not vacant"); + return Status("Watchpoint index not vacant"); RegisterValue reg_value; const RegisterInfo *const reg_info_dr7 = @@ -851,7 +852,7 @@ bool NativeRegisterContextNetBSD_x86_64::ClearHardwareWatchpoint( // clear bits 0, 1, 2, or 3 of the debug status register (DR6) const RegisterInfo *const reg_info_dr6 = GetRegisterInfoAtIndex(lldb_dr6_x86_64); - Error error = ReadRegister(reg_info_dr6, reg_value); + Status error = ReadRegister(reg_info_dr6, reg_value); if (error.Fail()) return false; uint64_t bit_mask = 1 << wp_index; @@ -873,13 +874,13 @@ bool NativeRegisterContextNetBSD_x86_64::ClearHardwareWatchpoint( return WriteRegister(reg_info_dr7, RegisterValue(control_bits)).Success(); } -Error NativeRegisterContextNetBSD_x86_64::ClearAllHardwareWatchpoints() { +Status NativeRegisterContextNetBSD_x86_64::ClearAllHardwareWatchpoints() { RegisterValue reg_value; // clear bits {0-4} of the debug status register (DR6) const RegisterInfo *const reg_info_dr6 = GetRegisterInfoAtIndex(lldb_dr6_x86_64); - Error error = ReadRegister(reg_info_dr6, reg_value); + Status error = ReadRegister(reg_info_dr6, reg_value); if (error.Fail()) return error; uint64_t bit_mask = 0xF; @@ -905,7 +906,7 @@ uint32_t NativeRegisterContextNetBSD_x86_64::SetHardwareWatchpoint( const uint32_t num_hw_watchpoints = NumSupportedHardwareWatchpoints(); for (uint32_t wp_index = 0; wp_index < num_hw_watchpoints; ++wp_index) { bool is_vacant; - Error error = IsWatchpointVacant(wp_index, is_vacant); + Status error = IsWatchpointVacant(wp_index, is_vacant); if (is_vacant) { error = SetHardwareWatchpointWithIndex(addr, size, watch_flags, wp_index); if (error.Success()) diff --git a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.h b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.h index 35b7cf1c2f1..5f5a6a0792e 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.h +++ b/lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.h @@ -36,29 +36,30 @@ public: const RegisterSet *GetRegisterSet(uint32_t set_index) const override; - Error ReadRegister(const RegisterInfo *reg_info, - RegisterValue ®_value) override; + Status ReadRegister(const RegisterInfo *reg_info, + RegisterValue ®_value) override; - Error WriteRegister(const RegisterInfo *reg_info, - const RegisterValue ®_value) override; + Status WriteRegister(const RegisterInfo *reg_info, + const RegisterValue ®_value) override; - Error ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - Error WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; + Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; - Error IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; + Status IsWatchpointHit(uint32_t wp_index, bool &is_hit) override; - Error GetWatchpointHitIndex(uint32_t &wp_index, - lldb::addr_t trap_addr) override; + Status GetWatchpointHitIndex(uint32_t &wp_index, + lldb::addr_t trap_addr) override; - Error IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; + Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override; bool ClearHardwareWatchpoint(uint32_t wp_index) override; - Error ClearAllHardwareWatchpoints() override; + Status ClearAllHardwareWatchpoints() override; - Error SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, - uint32_t watch_flags, uint32_t wp_index); + Status SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, + uint32_t watch_flags, + uint32_t wp_index); uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags) override; diff --git a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp index 9beb65288c2..8a16431b016 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp +++ b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp @@ -160,40 +160,40 @@ NativeRegisterContextSP NativeThreadNetBSD::GetRegisterContext() { return m_reg_context_sp; } -Error NativeThreadNetBSD::SetWatchpoint(lldb::addr_t addr, size_t size, - uint32_t watch_flags, bool hardware) { +Status NativeThreadNetBSD::SetWatchpoint(lldb::addr_t addr, size_t size, + uint32_t watch_flags, bool hardware) { if (!hardware) - return Error("not implemented"); + return Status("not implemented"); if (m_state == eStateLaunching) - return Error(); - Error error = RemoveWatchpoint(addr); + return Status(); + Status error = RemoveWatchpoint(addr); if (error.Fail()) return error; NativeRegisterContextSP reg_ctx = GetRegisterContext(); uint32_t wp_index = reg_ctx->SetHardwareWatchpoint(addr, size, watch_flags); if (wp_index == LLDB_INVALID_INDEX32) - return Error("Setting hardware watchpoint failed."); + return Status("Setting hardware watchpoint failed."); m_watchpoint_index_map.insert({addr, wp_index}); - return Error(); + return Status(); } -Error NativeThreadNetBSD::RemoveWatchpoint(lldb::addr_t addr) { +Status NativeThreadNetBSD::RemoveWatchpoint(lldb::addr_t addr) { auto wp = m_watchpoint_index_map.find(addr); if (wp == m_watchpoint_index_map.end()) - return Error(); + return Status(); uint32_t wp_index = wp->second; m_watchpoint_index_map.erase(wp); if (GetRegisterContext()->ClearHardwareWatchpoint(wp_index)) - return Error(); - return Error("Clearing hardware watchpoint failed."); + return Status(); + return Status("Clearing hardware watchpoint failed."); } -Error NativeThreadNetBSD::SetHardwareBreakpoint(lldb::addr_t addr, - size_t size) { +Status NativeThreadNetBSD::SetHardwareBreakpoint(lldb::addr_t addr, + size_t size) { if (m_state == eStateLaunching) - return Error(); + return Status(); - Error error = RemoveHardwareBreakpoint(addr); + Status error = RemoveHardwareBreakpoint(addr); if (error.Fail()) return error; @@ -201,22 +201,22 @@ Error NativeThreadNetBSD::SetHardwareBreakpoint(lldb::addr_t addr, uint32_t bp_index = reg_ctx->SetHardwareBreakpoint(addr, size); if (bp_index == LLDB_INVALID_INDEX32) - return Error("Setting hardware breakpoint failed."); + return Status("Setting hardware breakpoint failed."); m_hw_break_index_map.insert({addr, bp_index}); - return Error(); + return Status(); } -Error NativeThreadNetBSD::RemoveHardwareBreakpoint(lldb::addr_t addr) { +Status NativeThreadNetBSD::RemoveHardwareBreakpoint(lldb::addr_t addr) { auto bp = m_hw_break_index_map.find(addr); if (bp == m_hw_break_index_map.end()) - return Error(); + return Status(); uint32_t bp_index = bp->second; if (GetRegisterContext()->ClearHardwareBreakpoint(bp_index)) { m_hw_break_index_map.erase(bp); - return Error(); + return Status(); } - return Error("Clearing hardware breakpoint failed."); + return Status("Clearing hardware breakpoint failed."); } diff --git a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.h b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.h index 96d7fd0ce03..dcd360cdd31 100644 --- a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.h +++ b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.h @@ -38,14 +38,14 @@ public: NativeRegisterContextSP GetRegisterContext() override; - Error SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, - bool hardware) override; + Status SetWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags, + bool hardware) override; - Error RemoveWatchpoint(lldb::addr_t addr) override; + Status RemoveWatchpoint(lldb::addr_t addr) override; - Error SetHardwareBreakpoint(lldb::addr_t addr, size_t size) override; + Status SetHardwareBreakpoint(lldb::addr_t addr, size_t size) override; - Error RemoveHardwareBreakpoint(lldb::addr_t addr) override; + Status RemoveHardwareBreakpoint(lldb::addr_t addr) override; private: // --------------------------------------------------------------------- diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp index 485a39e6c9a..312c1887b58 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp +++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp @@ -1055,7 +1055,7 @@ bool RegisterContextLLDB::ReadRegisterValueFromRegisterLocation( case UnwindLLDB::RegisterLocation::eRegisterSavedAtHostMemoryLocation: llvm_unreachable("FIXME debugger inferior function call unwind"); case UnwindLLDB::RegisterLocation::eRegisterSavedAtMemoryLocation: { - Error error(ReadRegisterValueFromMemory( + Status error(ReadRegisterValueFromMemory( reg_info, regloc.location.target_memory_location, reg_info->byte_size, value)); success = error.Success(); @@ -1097,7 +1097,7 @@ bool RegisterContextLLDB::WriteRegisterValueToRegisterLocation( case UnwindLLDB::RegisterLocation::eRegisterSavedAtHostMemoryLocation: llvm_unreachable("FIXME debugger inferior function call unwind"); case UnwindLLDB::RegisterLocation::eRegisterSavedAtMemoryLocation: { - Error error(WriteRegisterValueToMemory( + Status error(WriteRegisterValueToMemory( reg_info, regloc.location.target_memory_location, reg_info->byte_size, value)); success = error.Success(); @@ -1514,7 +1514,7 @@ RegisterContextLLDB::SavedLocationForRegister( unwindplan_regloc.GetDWARFExpressionLength()); dwarfexpr.SetRegisterKind(unwindplan_registerkind); Value result; - Error error; + Status error; if (dwarfexpr.Evaluate(&exe_ctx, nullptr, nullptr, this, 0, nullptr, nullptr, result, &error)) { addr_t val; @@ -1769,7 +1769,7 @@ bool RegisterContextLLDB::ReadCFAValueForRow( GetRegisterInfoAtIndex(cfa_reg.GetAsKind(eRegisterKindLLDB)); RegisterValue reg_value; if (reg_info) { - Error error = ReadRegisterValueFromMemory( + Status error = ReadRegisterValueFromMemory( reg_info, cfa_reg_contents, reg_info->byte_size, reg_value); if (error.Success()) { cfa_value = reg_value.GetAsUInt64(); @@ -1824,7 +1824,7 @@ bool RegisterContextLLDB::ReadCFAValueForRow( row->GetCFAValue().GetDWARFExpressionLength()); dwarfexpr.SetRegisterKind(row_register_kind); Value result; - Error error; + Status error; if (dwarfexpr.Evaluate(&exe_ctx, nullptr, nullptr, this, 0, nullptr, nullptr, result, &error)) { cfa_value = result.GetScalar().ULongLong(); diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextMemory.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextMemory.cpp index eed5eec8fae..8f0dfd2a5b5 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextMemory.cpp +++ b/lldb/source/Plugins/Process/Utility/RegisterContextMemory.cpp @@ -18,7 +18,7 @@ #include "lldb/Target/Process.h" #include "lldb/Target/Thread.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" using namespace lldb; using namespace lldb_private; @@ -101,8 +101,8 @@ bool RegisterContextMemory::WriteRegister(const RegisterInfo *reg_info, if (m_reg_data_addr != LLDB_INVALID_ADDRESS) { const uint32_t reg_num = reg_info->kinds[eRegisterKindLLDB]; addr_t reg_addr = m_reg_data_addr + reg_info->byte_offset; - Error error(WriteRegisterValueToMemory(reg_info, reg_addr, - reg_info->byte_size, reg_value)); + Status error(WriteRegisterValueToMemory(reg_info, reg_addr, + reg_info->byte_size, reg_value)); m_reg_valid[reg_num] = false; return error.Success(); } @@ -113,7 +113,7 @@ bool RegisterContextMemory::ReadAllRegisterValues(DataBufferSP &data_sp) { if (m_reg_data_addr != LLDB_INVALID_ADDRESS) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; if (process_sp->ReadMemory(m_reg_data_addr, data_sp->GetBytes(), data_sp->GetByteSize(), error) == data_sp->GetByteSize()) { @@ -130,7 +130,7 @@ bool RegisterContextMemory::WriteAllRegisterValues( if (m_reg_data_addr != LLDB_INVALID_ADDRESS) { ProcessSP process_sp(CalculateProcess()); if (process_sp) { - Error error; + Status error; SetAllRegisterValid(false); if (process_sp->WriteMemory(m_reg_data_addr, data_sp->GetBytes(), data_sp->GetByteSize(), diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.cpp index 7d990e73b5b..96ad139f736 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.cpp +++ b/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.cpp @@ -10,7 +10,7 @@ #include "lldb/Target/OperatingSystem.h" #include "lldb/Target/Process.h" #include "lldb/Target/Thread.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-private.h" #include "RegisterContextThreadMemory.h" @@ -194,26 +194,26 @@ bool RegisterContextThreadMemory::HardwareSingleStep(bool enable) { return false; } -Error RegisterContextThreadMemory::ReadRegisterValueFromMemory( +Status RegisterContextThreadMemory::ReadRegisterValueFromMemory( const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue ®_value) { UpdateRegisterContext(); if (m_reg_ctx_sp) return m_reg_ctx_sp->ReadRegisterValueFromMemory(reg_info, src_addr, src_len, reg_value); - Error error; + Status error; error.SetErrorString("invalid register context"); return error; } -Error RegisterContextThreadMemory::WriteRegisterValueToMemory( +Status RegisterContextThreadMemory::WriteRegisterValueToMemory( const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue ®_value) { UpdateRegisterContext(); if (m_reg_ctx_sp) return m_reg_ctx_sp->WriteRegisterValueToMemory(reg_info, dst_addr, dst_len, reg_value); - Error error; + Status error; error.SetErrorString("invalid register context"); return error; } diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.h b/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.h index 7e0a2a9f7f1..3b3b0856a4c 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.h +++ b/lldb/source/Plugins/Process/Utility/RegisterContextThreadMemory.h @@ -80,13 +80,13 @@ public: bool HardwareSingleStep(bool enable) override; - Error ReadRegisterValueFromMemory(const lldb_private::RegisterInfo *reg_info, - lldb::addr_t src_addr, uint32_t src_len, - RegisterValue ®_value) override; + Status ReadRegisterValueFromMemory(const lldb_private::RegisterInfo *reg_info, + lldb::addr_t src_addr, uint32_t src_len, + RegisterValue ®_value) override; - Error WriteRegisterValueToMemory(const lldb_private::RegisterInfo *reg_info, - lldb::addr_t dst_addr, uint32_t dst_len, - const RegisterValue ®_value) override; + Status WriteRegisterValueToMemory(const lldb_private::RegisterInfo *reg_info, + lldb::addr_t dst_addr, uint32_t dst_len, + const RegisterValue ®_value) override; protected: void UpdateRegisterContext(); diff --git a/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp b/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp index e2691be603e..f907735d8f5 100644 --- a/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp +++ b/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp @@ -105,7 +105,7 @@ size_t UnwindMacOSXFrameBackchain::GetStackFrameData_i386( m_cursors.push_back(cursor); const size_t k_frame_size = sizeof(frame); - Error error; + Status error; while (frame.fp != 0 && frame.pc != 0 && ((frame.fp & 7) == 0)) { // Read both the FP and PC (8 bytes) if (process->ReadMemory(frame.fp, &frame.fp, k_frame_size, error) != @@ -196,7 +196,7 @@ size_t UnwindMacOSXFrameBackchain::GetStackFrameData_x86_64( Frame_x86_64 frame = {cursor.fp, cursor.pc}; m_cursors.push_back(cursor); - Error error; + Status error; const size_t k_frame_size = sizeof(frame); while (frame.fp != 0 && frame.pc != 0 && ((frame.fp & 7) == 0)) { // Read both the FP and PC (16 bytes) diff --git a/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.cpp b/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.cpp index b79359ba966..ac9e65c3c10 100644 --- a/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.cpp @@ -19,9 +19,9 @@ #include "lldb/Host/windows/ProcessLauncherWindows.h" #include "lldb/Target/Process.h" #include "lldb/Target/ProcessLaunchInfo.h" -#include "lldb/Utility/Error.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/Status.h" #include "Plugins/Process/Windows/Common/ProcessWindowsLog.h" @@ -60,11 +60,11 @@ DebuggerThread::DebuggerThread(DebugDelegateSP debug_delegate) DebuggerThread::~DebuggerThread() { ::CloseHandle(m_debugging_ended_event); } -Error DebuggerThread::DebugLaunch(const ProcessLaunchInfo &launch_info) { +Status DebuggerThread::DebugLaunch(const ProcessLaunchInfo &launch_info) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); LLDB_LOG(log, "launching '{0}'", launch_info.GetExecutableFile().GetPath()); - Error error; + Status error; DebugLaunchContext *context = new DebugLaunchContext(this, launch_info); HostThread slave_thread(ThreadLauncher::LaunchThread( "lldb.plugin.process-windows.slave[?]", DebuggerThreadLaunchRoutine, @@ -76,12 +76,12 @@ Error DebuggerThread::DebugLaunch(const ProcessLaunchInfo &launch_info) { return error; } -Error DebuggerThread::DebugAttach(lldb::pid_t pid, - const ProcessAttachInfo &attach_info) { +Status DebuggerThread::DebugAttach(lldb::pid_t pid, + const ProcessAttachInfo &attach_info) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); LLDB_LOG(log, "attaching to '{0}'", pid); - Error error; + Status error; DebugAttachContext *context = new DebugAttachContext(this, pid, attach_info); HostThread slave_thread(ThreadLauncher::LaunchThread( "lldb.plugin.process-windows.slave[?]", DebuggerThreadAttachRoutine, @@ -120,7 +120,7 @@ lldb::thread_result_t DebuggerThread::DebuggerThreadLaunchRoutine( LLDB_LOG(log, "preparing to launch '{0}' on background thread.", launch_info.GetExecutableFile().GetPath()); - Error error; + Status error; ProcessLauncherWindows launcher; HostProcess process(launcher.LaunchProcess(launch_info, error)); // If we couldn't create the process, notify waiters immediately. Otherwise @@ -152,7 +152,7 @@ lldb::thread_result_t DebuggerThread::DebuggerThreadAttachRoutine( pid); if (!DebugActiveProcess((DWORD)pid)) { - Error error(::GetLastError(), eErrorTypeWin32); + Status error(::GetLastError(), eErrorTypeWin32); m_debug_delegate->OnDebuggerError(error, 0); return 0; } @@ -167,8 +167,8 @@ lldb::thread_result_t DebuggerThread::DebuggerThreadAttachRoutine( return 0; } -Error DebuggerThread::StopDebugging(bool terminate) { - Error error; +Status DebuggerThread::StopDebugging(bool terminate) { + Status error; lldb::pid_t pid = m_process.GetProcessId(); @@ -515,7 +515,7 @@ DebuggerThread::HandleRipEvent(const RIP_INFO &info, DWORD thread_id) { LLDB_LOG(log, "encountered error {0} (type={1}) in process {2} thread {3}", info.dwError, info.dwType, m_process.GetProcessId(), thread_id); - Error error(info.dwError, eErrorTypeWin32); + Status error(info.dwError, eErrorTypeWin32); m_debug_delegate->OnDebuggerError(error, info.dwType); return DBG_CONTINUE; diff --git a/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.h b/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.h index ef4b47bab8c..fcf36f7dec9 100644 --- a/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.h +++ b/lldb/source/Plugins/Process/Windows/Common/DebuggerThread.h @@ -32,8 +32,8 @@ public: DebuggerThread(DebugDelegateSP debug_delegate); virtual ~DebuggerThread(); - Error DebugLaunch(const ProcessLaunchInfo &launch_info); - Error DebugAttach(lldb::pid_t pid, const ProcessAttachInfo &attach_info); + Status DebugLaunch(const ProcessLaunchInfo &launch_info); + Status DebugAttach(lldb::pid_t pid, const ProcessAttachInfo &attach_info); HostProcess GetProcess() const { return m_process; } HostThread GetMainThread() const { return m_main_thread; } @@ -41,7 +41,7 @@ public: return m_active_exception; } - Error StopDebugging(bool terminate); + Status StopDebugging(bool terminate); void ContinueAsyncException(ExceptionResult result); diff --git a/lldb/source/Plugins/Process/Windows/Common/IDebugDelegate.h b/lldb/source/Plugins/Process/Windows/Common/IDebugDelegate.h index e88e0ada053..73c285f1ecc 100644 --- a/lldb/source/Plugins/Process/Windows/Common/IDebugDelegate.h +++ b/lldb/source/Plugins/Process/Windows/Common/IDebugDelegate.h @@ -16,7 +16,7 @@ #include <string> namespace lldb_private { -class Error; +class Status; class HostThread; //---------------------------------------------------------------------- @@ -39,7 +39,7 @@ public: lldb::addr_t module_addr) = 0; virtual void OnUnloadDll(lldb::addr_t module_addr) = 0; virtual void OnDebugString(const std::string &string) = 0; - virtual void OnDebuggerError(const Error &error, uint32_t type) = 0; + virtual void OnDebuggerError(const Status &error, uint32_t type) = 0; }; } diff --git a/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.cpp b/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.cpp index 600aef37250..92aa7e2678b 100644 --- a/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.cpp @@ -62,7 +62,7 @@ void LocalDebugDelegate::OnDebugString(const std::string &string) { process->OnDebugString(string); } -void LocalDebugDelegate::OnDebuggerError(const Error &error, uint32_t type) { +void LocalDebugDelegate::OnDebuggerError(const Status &error, uint32_t type) { if (ProcessWindowsSP process = GetProcessPointer()) process->OnDebuggerError(error, type); } diff --git a/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.h b/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.h index 819854a1e63..2cb479ccce8 100644 --- a/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.h +++ b/lldb/source/Plugins/Process/Windows/Common/LocalDebugDelegate.h @@ -55,7 +55,7 @@ public: lldb::addr_t module_addr) override; void OnUnloadDll(lldb::addr_t module_addr) override; void OnDebugString(const std::string &message) override; - void OnDebuggerError(const Error &error, uint32_t type) override; + void OnDebuggerError(const Status &error, uint32_t type) override; private: ProcessWindowsSP GetProcessPointer(); diff --git a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp index 56a98a8eef6..a1c9cfaed41 100644 --- a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp @@ -87,7 +87,7 @@ public: ~ProcessWindowsData() { ::CloseHandle(m_initial_stop_event); } - Error m_launch_error; + Status m_launch_error; DebuggerThreadSP m_debugger; StopInfoSP m_pending_stop_info; HANDLE m_initial_stop_event = nullptr; @@ -132,18 +132,18 @@ ProcessWindows::ProcessWindows(lldb::TargetSP target_sp, ProcessWindows::~ProcessWindows() {} -size_t ProcessWindows::GetSTDOUT(char *buf, size_t buf_size, Error &error) { +size_t ProcessWindows::GetSTDOUT(char *buf, size_t buf_size, Status &error) { error.SetErrorString("GetSTDOUT unsupported on Windows"); return 0; } -size_t ProcessWindows::GetSTDERR(char *buf, size_t buf_size, Error &error) { +size_t ProcessWindows::GetSTDERR(char *buf, size_t buf_size, Status &error) { error.SetErrorString("GetSTDERR unsupported on Windows"); return 0; } size_t ProcessWindows::PutSTDIN(const char *buf, size_t buf_size, - Error &error) { + Status &error) { error.SetErrorString("PutSTDIN unsupported on Windows"); return 0; } @@ -157,30 +157,30 @@ lldb_private::ConstString ProcessWindows::GetPluginName() { uint32_t ProcessWindows::GetPluginVersion() { return 1; } -Error ProcessWindows::EnableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessWindows::EnableBreakpointSite(BreakpointSite *bp_site) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_BREAKPOINTS); LLDB_LOG(log, "bp_site = {0:x}, id={1}, addr={2:x}", bp_site, bp_site->GetID(), bp_site->GetLoadAddress()); - Error error = EnableSoftwareBreakpoint(bp_site); + Status error = EnableSoftwareBreakpoint(bp_site); if (!error.Success()) LLDB_LOG(log, "error: {0}", error); return error; } -Error ProcessWindows::DisableBreakpointSite(BreakpointSite *bp_site) { +Status ProcessWindows::DisableBreakpointSite(BreakpointSite *bp_site) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_BREAKPOINTS); LLDB_LOG(log, "bp_site = {0:x}, id={1}, addr={2:x}", bp_site, bp_site->GetID(), bp_site->GetLoadAddress()); - Error error = DisableSoftwareBreakpoint(bp_site); + Status error = DisableSoftwareBreakpoint(bp_site); if (!error.Success()) LLDB_LOG(log, "error: {0}", error); return error; } -Error ProcessWindows::DoDetach(bool keep_stopped) { +Status ProcessWindows::DoDetach(bool keep_stopped) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); DebuggerThreadSP debugger_thread; StateType private_state; @@ -196,13 +196,13 @@ Error ProcessWindows::DoDetach(bool keep_stopped) { if (!m_session_data) { LLDB_LOG(log, "state = {0}, but there is no active session.", private_state); - return Error(); + return Status(); } debugger_thread = m_session_data->m_debugger; } - Error error; + Status error; if (private_state != eStateExited && private_state != eStateDetached) { LLDB_LOG(log, "detaching from process {0} while state = {1}.", debugger_thread->GetProcess().GetNativeProcess().GetSystemHandle(), @@ -226,8 +226,8 @@ Error ProcessWindows::DoDetach(bool keep_stopped) { return error; } -Error ProcessWindows::DoLaunch(Module *exe_module, - ProcessLaunchInfo &launch_info) { +Status ProcessWindows::DoLaunch(Module *exe_module, + ProcessLaunchInfo &launch_info) { // Even though m_session_data is accessed here, it is before a debugger thread // has been // kicked off. So there's no race conditions, and it shouldn't be necessary @@ -235,7 +235,7 @@ Error ProcessWindows::DoLaunch(Module *exe_module, // the mutex. Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); - Error result; + Status result; if (!launch_info.GetFlags().Test(eLaunchFlagDebug)) { StreamString stream; stream.Printf("ProcessWindows unable to launch '%s'. ProcessWindows can " @@ -265,7 +265,7 @@ Error ProcessWindows::DoLaunch(Module *exe_module, } HostProcess process; - Error error = WaitForDebuggerConnection(debugger, process); + Status error = WaitForDebuggerConnection(debugger, process); if (error.Fail()) { LLDB_LOG(log, "failed launching '{0}'. {1}", launch_info.GetExecutableFile().GetPath(), error); @@ -288,8 +288,9 @@ Error ProcessWindows::DoLaunch(Module *exe_module, return result; } -Error ProcessWindows::DoAttachToProcessWithID( - lldb::pid_t pid, const ProcessAttachInfo &attach_info) { +Status +ProcessWindows::DoAttachToProcessWithID(lldb::pid_t pid, + const ProcessAttachInfo &attach_info) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); m_session_data.reset( new ProcessWindowsData(!attach_info.GetContinueOnceAttached())); @@ -300,7 +301,7 @@ Error ProcessWindows::DoAttachToProcessWithID( m_session_data->m_debugger = debugger; DWORD process_id = static_cast<DWORD>(pid); - Error error = debugger->DebugAttach(process_id, attach_info); + Status error = debugger->DebugAttach(process_id, attach_info); if (error.Fail()) { LLDB_LOG( log, @@ -331,10 +332,10 @@ Error ProcessWindows::DoAttachToProcessWithID( return error; } -Error ProcessWindows::DoResume() { +Status ProcessWindows::DoResume() { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); llvm::sys::ScopedLock lock(m_mutex); - Error error; + Status error; StateType private_state = GetPrivateState(); if (private_state == eStateStopped || private_state == eStateCrashed) { @@ -369,7 +370,7 @@ Error ProcessWindows::DoResume() { return error; } -Error ProcessWindows::DoDestroy() { +Status ProcessWindows::DoDestroy() { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); DebuggerThreadSP debugger_thread; StateType private_state; @@ -386,13 +387,13 @@ Error ProcessWindows::DoDestroy() { if (!m_session_data) { LLDB_LOG(log, "warning: state = {0}, but there is no active session.", private_state); - return Error(); + return Status(); } debugger_thread = m_session_data->m_debugger; } - Error error; + Status error; if (private_state != eStateExited && private_state != eStateDetached) { LLDB_LOG(log, "Shutting down process {0} while state = {1}.", debugger_thread->GetProcess().GetNativeProcess().GetSystemHandle(), @@ -411,9 +412,9 @@ Error ProcessWindows::DoDestroy() { return error; } -Error ProcessWindows::DoHalt(bool &caused_stop) { +Status ProcessWindows::DoHalt(bool &caused_stop) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); - Error error; + Status error; StateType state = GetPrivateState(); if (state == eStateStopped) caused_stop = false; @@ -623,7 +624,7 @@ bool ProcessWindows::IsAlive() { } size_t ProcessWindows::DoReadMemory(lldb::addr_t vm_addr, void *buf, - size_t size, Error &error) { + size_t size, Status &error) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_MEMORY); llvm::sys::ScopedLock lock(m_mutex); @@ -645,7 +646,7 @@ size_t ProcessWindows::DoReadMemory(lldb::addr_t vm_addr, void *buf, } size_t ProcessWindows::DoWriteMemory(lldb::addr_t vm_addr, const void *buf, - size_t size, Error &error) { + size_t size, Status &error) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_MEMORY); llvm::sys::ScopedLock lock(m_mutex); LLDB_LOG(log, "attempting to write {0} bytes into address {1:x}", size, @@ -669,10 +670,10 @@ size_t ProcessWindows::DoWriteMemory(lldb::addr_t vm_addr, const void *buf, return bytes_written; } -Error ProcessWindows::GetMemoryRegionInfo(lldb::addr_t vm_addr, - MemoryRegionInfo &info) { +Status ProcessWindows::GetMemoryRegionInfo(lldb::addr_t vm_addr, + MemoryRegionInfo &info) { Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_MEMORY); - Error error; + Status error; llvm::sys::ScopedLock lock(m_mutex); info.Clear(); @@ -807,7 +808,7 @@ void ProcessWindows::OnDebuggerConnected(lldb::addr_t image_base) { FileSpec executable_file(file_name, true); ModuleSpec module_spec(executable_file); - Error error; + Status error; module = GetTarget().GetSharedModule(module_spec, &error); if (!module) { return; @@ -931,7 +932,7 @@ void ProcessWindows::OnLoadDll(const ModuleSpec &module_spec, // GetSharedModule() with // a new module will add it to the module list and return a corresponding // ModuleSP. - Error error; + Status error; ModuleSP module = GetTarget().GetSharedModule(module_spec, &error); bool load_addr_changed = false; module->SetLoadAddress(GetTarget(), module_addr, false, load_addr_changed); @@ -955,7 +956,7 @@ void ProcessWindows::OnUnloadDll(lldb::addr_t module_addr) { void ProcessWindows::OnDebugString(const std::string &string) {} -void ProcessWindows::OnDebuggerError(const Error &error, uint32_t type) { +void ProcessWindows::OnDebuggerError(const Status &error, uint32_t type) { llvm::sys::ScopedLock lock(m_mutex); Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS); @@ -981,9 +982,9 @@ void ProcessWindows::OnDebuggerError(const Error &error, uint32_t type) { } } -Error ProcessWindows::WaitForDebuggerConnection(DebuggerThreadSP debugger, - HostProcess &process) { - Error result; +Status ProcessWindows::WaitForDebuggerConnection(DebuggerThreadSP debugger, + HostProcess &process) { + Status result; Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS | WINDOWS_LOG_BREAKPOINTS); LLDB_LOG(log, "Waiting for loader breakpoint."); @@ -996,7 +997,7 @@ Error ProcessWindows::WaitForDebuggerConnection(DebuggerThreadSP debugger, process = debugger->GetProcess(); return m_session_data->m_launch_error; } else - return Error(::GetLastError(), eErrorTypeWin32); + return Status(::GetLastError(), eErrorTypeWin32); } // The Windows page protection bits are NOT independent masks that can be diff --git a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h index f2db102299a..ed3938beb34 100644 --- a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h +++ b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h @@ -12,7 +12,7 @@ // Other libraries and framework includes #include "lldb/Target/Process.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-forward.h" #include "llvm/Support/Mutex.h" @@ -48,25 +48,25 @@ public: ~ProcessWindows(); - size_t GetSTDOUT(char *buf, size_t buf_size, Error &error) override; - size_t GetSTDERR(char *buf, size_t buf_size, Error &error) override; - size_t PutSTDIN(const char *buf, size_t buf_size, Error &error) override; + size_t GetSTDOUT(char *buf, size_t buf_size, Status &error) override; + size_t GetSTDERR(char *buf, size_t buf_size, Status &error) override; + size_t PutSTDIN(const char *buf, size_t buf_size, Status &error) override; // lldb_private::Process overrides ConstString GetPluginName() override; uint32_t GetPluginVersion() override; - Error EnableBreakpointSite(BreakpointSite *bp_site) override; - Error DisableBreakpointSite(BreakpointSite *bp_site) override; + Status EnableBreakpointSite(BreakpointSite *bp_site) override; + Status DisableBreakpointSite(BreakpointSite *bp_site) override; - Error DoDetach(bool keep_stopped) override; - Error DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override; - Error DoAttachToProcessWithID( + Status DoDetach(bool keep_stopped) override; + Status DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override; + Status DoAttachToProcessWithID( lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info) override; - Error DoResume() override; - Error DoDestroy() override; - Error DoHalt(bool &caused_stop) override; + Status DoResume() override; + Status DoDestroy() override; + Status DoHalt(bool &caused_stop) override; void DidLaunch() override; void DidAttach(lldb_private::ArchSpec &arch_spec) override; @@ -81,11 +81,11 @@ public: bool IsAlive() override; size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Error &error) override; + Status &error) override; size_t DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, - Error &error) override; - Error GetMemoryRegionInfo(lldb::addr_t vm_addr, - MemoryRegionInfo &info) override; + Status &error) override; + Status GetMemoryRegionInfo(lldb::addr_t vm_addr, + MemoryRegionInfo &info) override; lldb::addr_t GetImageInfoAddress() override; @@ -100,11 +100,11 @@ public: lldb::addr_t module_addr) override; void OnUnloadDll(lldb::addr_t module_addr) override; void OnDebugString(const std::string &string) override; - void OnDebuggerError(const Error &error, uint32_t type) override; + void OnDebuggerError(const Status &error, uint32_t type) override; private: - Error WaitForDebuggerConnection(DebuggerThreadSP debugger, - HostProcess &process); + Status WaitForDebuggerConnection(DebuggerThreadSP debugger, + HostProcess &process); // These decode the page protection bits. static bool IsPageReadable(uint32_t protect); diff --git a/lldb/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp b/lldb/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp index bfed3044910..b3f507128f8 100644 --- a/lldb/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp @@ -10,7 +10,7 @@ #include "lldb/Host/windows/HostThreadWindows.h" #include "lldb/Host/windows/windows.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-private-types.h" #include "ProcessWindowsLog.h" diff --git a/lldb/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp b/lldb/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp index 53fe1d90249..e64bade5ff9 100644 --- a/lldb/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp @@ -10,7 +10,7 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/windows/HostThreadWindows.h" #include "lldb/Host/windows/windows.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-private-types.h" #include "RegisterContextWindows_x64.h" diff --git a/lldb/source/Plugins/Process/Windows/Common/x86/RegisterContextWindows_x86.cpp b/lldb/source/Plugins/Process/Windows/Common/x86/RegisterContextWindows_x86.cpp index 8127606583c..f56836de4a6 100644 --- a/lldb/source/Plugins/Process/Windows/Common/x86/RegisterContextWindows_x86.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/x86/RegisterContextWindows_x86.cpp @@ -10,7 +10,7 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Host/windows/HostThreadWindows.h" #include "lldb/Host/windows/windows.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/lldb-private-types.h" #include "ProcessWindowsLog.h" diff --git a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp index 6561d2a0582..5a459e80348 100644 --- a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp +++ b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp @@ -84,8 +84,8 @@ bool ProcessElfCore::CanDebug(lldb::TargetSP target_sp, // For now we are just making sure the file exists for a given module if (!m_core_module_sp && m_core_file.Exists()) { ModuleSpec core_module_spec(m_core_file, target_sp->GetArchitecture()); - Error error(ModuleList::GetSharedModule(core_module_spec, m_core_module_sp, - NULL, NULL, NULL)); + Status error(ModuleList::GetSharedModule(core_module_spec, m_core_module_sp, + NULL, NULL, NULL)); if (m_core_module_sp) { ObjectFile *core_objfile = m_core_module_sp->GetObjectFile(); if (core_objfile && core_objfile->GetType() == ObjectFile::eTypeCoreFile) @@ -157,8 +157,8 @@ lldb::addr_t ProcessElfCore::AddAddressRangeFromLoadSegment( //---------------------------------------------------------------------- // Process Control //---------------------------------------------------------------------- -Error ProcessElfCore::DoLoadCore() { - Error error; +Status ProcessElfCore::DoLoadCore() { + Status error; if (!m_core_module_sp) { error.SetErrorString("invalid core module"); return error; @@ -289,7 +289,7 @@ bool ProcessElfCore::UpdateThreadList(ThreadList &old_thread_list, void ProcessElfCore::RefreshStateAfterStop() {} -Error ProcessElfCore::DoDestroy() { return Error(); } +Status ProcessElfCore::DoDestroy() { return Status(); } //------------------------------------------------------------------ // Process Queries @@ -301,14 +301,14 @@ bool ProcessElfCore::IsAlive() { return true; } // Process Memory //------------------------------------------------------------------ size_t ProcessElfCore::ReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { // Don't allow the caching that lldb_private::Process::ReadMemory does // since in core files we have it all cached our our core file anyway. return DoReadMemory(addr, buf, size, error); } -Error ProcessElfCore::GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo ®ion_info) { +Status ProcessElfCore::GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo ®ion_info) { region_info.Clear(); const VMRangeToPermissions::Entry *permission_entry = m_core_range_infos.FindEntryThatContainsOrFollows(load_addr); @@ -335,7 +335,7 @@ Error ProcessElfCore::GetMemoryRegionInfo(lldb::addr_t load_addr, region_info.SetExecutable(MemoryRegionInfo::eNo); region_info.SetMapped(MemoryRegionInfo::eNo); } - return Error(); + return Status(); } region_info.GetRange().SetRangeBase(load_addr); @@ -344,11 +344,11 @@ Error ProcessElfCore::GetMemoryRegionInfo(lldb::addr_t load_addr, region_info.SetWritable(MemoryRegionInfo::eNo); region_info.SetExecutable(MemoryRegionInfo::eNo); region_info.SetMapped(MemoryRegionInfo::eNo); - return Error(); + return Status(); } size_t ProcessElfCore::DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { ObjectFile *core_objfile = m_core_module_sp->GetObjectFile(); if (core_objfile == NULL) @@ -540,7 +540,7 @@ static void ParseOpenBSDProcInfo(ThreadData &thread_data, DataExtractor &data) { /// new thread when it finds NT_PRSTATUS or NT_PRPSINFO NOTE entry. /// For case (b) there may be either one NT_PRPSINFO per thread, or a single /// one that applies to all threads (depending on the platform type). -Error ProcessElfCore::ParseThreadContextsFromNoteSegment( +Status ProcessElfCore::ParseThreadContextsFromNoteSegment( const elf::ELFProgramHeader *segment_header, DataExtractor segment_data) { assert(segment_header && segment_header->p_type == llvm::ELF::PT_NOTE); @@ -555,7 +555,7 @@ Error ProcessElfCore::ParseThreadContextsFromNoteSegment( ELFLinuxSigInfo siginfo; size_t header_size; size_t len; - Error error; + Status error; // Loop through the NOTE entires in the segment while (offset < segment_header->p_filesz) { diff --git a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h index cb2f31bde4c..dbf7f926f85 100644 --- a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h +++ b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h @@ -26,7 +26,7 @@ // Project includes #include "lldb/Target/Process.h" #include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "Plugins/ObjectFile/ELF/ELFHeader.h" @@ -66,7 +66,7 @@ public: //------------------------------------------------------------------ // Creating a new process, or attaching to an existing one //------------------------------------------------------------------ - lldb_private::Error DoLoadCore() override; + lldb_private::Status DoLoadCore() override; lldb_private::DynamicLoader *GetDynamicLoader() override; @@ -80,7 +80,7 @@ public: //------------------------------------------------------------------ // Process Control //------------------------------------------------------------------ - lldb_private::Error DoDestroy() override; + lldb_private::Status DoDestroy() override; void RefreshStateAfterStop() override; @@ -93,12 +93,12 @@ public: // Process Memory //------------------------------------------------------------------ size_t ReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; - lldb_private::Error + lldb_private::Status GetMemoryRegionInfo(lldb::addr_t load_addr, lldb_private::MemoryRegionInfo ®ion_info) override; @@ -160,7 +160,7 @@ private: std::vector<NT_FILE_Entry> m_nt_file_entries; // Parse thread(s) data structures(prstatus, prpsinfo) from given NOTE segment - lldb_private::Error ParseThreadContextsFromNoteSegment( + lldb_private::Status ParseThreadContextsFromNoteSegment( const elf::ELFProgramHeader *segment_header, lldb_private::DataExtractor segment_data); diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp index 260ae15d7a5..5766923186d 100644 --- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp +++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp @@ -71,7 +71,7 @@ bool RegisterContextCorePOSIX_x86_64::ReadRegister(const RegisterInfo *reg_info, return false; } - Error error; + Status error; value.SetFromMemoryData(reg_info, src + offset, reg_info->byte_size, lldb::eByteOrderLittle, error); diff --git a/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp b/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp index 13ad82d92c5..096c20363c7 100644 --- a/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp +++ b/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp @@ -274,8 +274,8 @@ size_t ELFLinuxPrStatus::GetSize(lldb_private::ArchSpec &arch) { } } -Error ELFLinuxPrStatus::Parse(DataExtractor &data, ArchSpec &arch) { - Error error; +Status ELFLinuxPrStatus::Parse(DataExtractor &data, ArchSpec &arch) { + Status error; if (GetSize(arch) > data.GetByteSize()) { error.SetErrorStringWithFormat( "NT_PRSTATUS size should be %zu, but the remaining bytes are: %" PRIu64, @@ -344,8 +344,8 @@ size_t ELFLinuxPrPsInfo::GetSize(lldb_private::ArchSpec &arch) { } } -Error ELFLinuxPrPsInfo::Parse(DataExtractor &data, ArchSpec &arch) { - Error error; +Status ELFLinuxPrPsInfo::Parse(DataExtractor &data, ArchSpec &arch) { + Status error; ByteOrder byteorder = data.GetByteOrder(); if (GetSize(arch) > data.GetByteSize()) { error.SetErrorStringWithFormat( @@ -413,8 +413,8 @@ size_t ELFLinuxSigInfo::GetSize(const lldb_private::ArchSpec &arch) { } } -Error ELFLinuxSigInfo::Parse(DataExtractor &data, const ArchSpec &arch) { - Error error; +Status ELFLinuxSigInfo::Parse(DataExtractor &data, const ArchSpec &arch) { + Status error; if (GetSize(arch) > data.GetByteSize()) { error.SetErrorStringWithFormat( "NT_SIGINFO size should be %zu, but the remaining bytes are: %" PRIu64, diff --git a/lldb/source/Plugins/Process/elf-core/ThreadElfCore.h b/lldb/source/Plugins/Process/elf-core/ThreadElfCore.h index 38c52658a23..52187541371 100644 --- a/lldb/source/Plugins/Process/elf-core/ThreadElfCore.h +++ b/lldb/source/Plugins/Process/elf-core/ThreadElfCore.h @@ -57,8 +57,8 @@ struct ELFLinuxPrStatus { ELFLinuxPrStatus(); - lldb_private::Error Parse(lldb_private::DataExtractor &data, - lldb_private::ArchSpec &arch); + lldb_private::Status Parse(lldb_private::DataExtractor &data, + lldb_private::ArchSpec &arch); // Return the bytesize of the structure // 64 bit - just sizeof @@ -78,8 +78,8 @@ struct ELFLinuxSigInfo { ELFLinuxSigInfo(); - lldb_private::Error Parse(lldb_private::DataExtractor &data, - const lldb_private::ArchSpec &arch); + lldb_private::Status Parse(lldb_private::DataExtractor &data, + const lldb_private::ArchSpec &arch); // Return the bytesize of the structure // 64 bit - just sizeof @@ -113,8 +113,8 @@ struct ELFLinuxPrPsInfo { ELFLinuxPrPsInfo(); - lldb_private::Error Parse(lldb_private::DataExtractor &data, - lldb_private::ArchSpec &arch); + lldb_private::Status Parse(lldb_private::DataExtractor &data, + lldb_private::ArchSpec &arch); // Return the bytesize of the structure // 64 bit - just sizeof diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp index d527b4daaab..0c4df7e3f30 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp @@ -319,7 +319,7 @@ GDBRemoteCommunication::WaitForPacketNoLock(StringExtractorGDBRemote &packet, Timeout<std::micro> timeout, bool sync_on_timeout) { uint8_t buffer[8192]; - Error error; + Status error; Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PACKETS)); @@ -933,9 +933,9 @@ GDBRemoteCommunication::CheckForPacket(const uint8_t *src, size_t src_len, return GDBRemoteCommunication::PacketType::Invalid; } -Error GDBRemoteCommunication::StartListenThread(const char *hostname, - uint16_t port) { - Error error; +Status GDBRemoteCommunication::StartListenThread(const char *hostname, + uint16_t port) { + Status error; if (m_listen_thread.IsJoinable()) { error.SetErrorString("listen thread already running"); } else { @@ -962,7 +962,7 @@ bool GDBRemoteCommunication::JoinListenThread() { lldb::thread_result_t GDBRemoteCommunication::ListenThread(lldb::thread_arg_t arg) { GDBRemoteCommunication *comm = (GDBRemoteCommunication *)arg; - Error error; + Status error; ConnectionFileDescriptor *connection = (ConnectionFileDescriptor *)comm->GetConnection(); @@ -975,7 +975,7 @@ GDBRemoteCommunication::ListenThread(lldb::thread_arg_t arg) { return NULL; } -Error GDBRemoteCommunication::StartDebugserverProcess( +Status GDBRemoteCommunication::StartDebugserverProcess( const char *url, Platform *platform, ProcessLaunchInfo &launch_info, uint16_t *port, const Args *inferior_args, int pass_comm_fd) { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); @@ -984,7 +984,7 @@ Error GDBRemoteCommunication::StartDebugserverProcess( __FUNCTION__, url ? url : "<empty>", port ? *port : uint16_t(0)); - Error error; + Status error; // If we locate debugserver, keep that located version around static FileSpec g_debugserver_file_spec; diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h index b49e05e22d9..ce90de3e847 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h @@ -65,9 +65,9 @@ public: enum class PacketResult { Success = 0, // Success - ErrorSendFailed, // Error sending the packet + ErrorSendFailed, // Status sending the packet ErrorSendAck, // Didn't get an ack back after sending a packet - ErrorReplyFailed, // Error getting the reply + ErrorReplyFailed, // Status getting the reply ErrorReplyTimeout, // Timed out waiting for reply ErrorReplyInvalid, // Got a reply but it wasn't valid for the packet that // was sent @@ -131,7 +131,7 @@ public: // Start a debugserver instance on the current host using the // supplied connection URL. //------------------------------------------------------------------ - Error StartDebugserverProcess( + Status StartDebugserverProcess( const char *url, Platform *platform, // If non nullptr, then check with the platform for // the GDB server binary if it can't be located @@ -255,8 +255,8 @@ protected: // on m_bytes. The checksum was for the compressed packet. bool DecompressPacket(); - Error StartListenThread(const char *hostname = "127.0.0.1", - uint16_t port = 0); + Status StartListenThread(const char *hostname = "127.0.0.1", + uint16_t port = 0); bool JoinListenThread(); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index 2e94fa94331..8d91db87b5a 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -113,7 +113,7 @@ GDBRemoteCommunicationClient::~GDBRemoteCommunicationClient() { Disconnect(); } -bool GDBRemoteCommunicationClient::HandshakeWithServer(Error *error_ptr) { +bool GDBRemoteCommunicationClient::HandshakeWithServer(Status *error_ptr) { ResetDiscoverableSettings(false); // Start the read thread after we send the handshake ack since if we @@ -1394,8 +1394,8 @@ bool GDBRemoteCommunicationClient::DeallocateMemory(addr_t addr) { return false; } -Error GDBRemoteCommunicationClient::Detach(bool keep_stopped) { - Error error; +Status GDBRemoteCommunicationClient::Detach(bool keep_stopped) { + Status error; if (keep_stopped) { if (m_supports_detach_stay_stopped == eLazyBoolCalculate) { @@ -1434,9 +1434,9 @@ Error GDBRemoteCommunicationClient::Detach(bool keep_stopped) { return error; } -Error GDBRemoteCommunicationClient::GetMemoryRegionInfo( +Status GDBRemoteCommunicationClient::GetMemoryRegionInfo( lldb::addr_t addr, lldb_private::MemoryRegionInfo ®ion_info) { - Error error; + Status error; region_info.Clear(); if (m_supports_memory_region_info != eLazyBoolNo) { @@ -1529,8 +1529,8 @@ Error GDBRemoteCommunicationClient::GetMemoryRegionInfo( return error; } -Error GDBRemoteCommunicationClient::GetWatchpointSupportInfo(uint32_t &num) { - Error error; +Status GDBRemoteCommunicationClient::GetWatchpointSupportInfo(uint32_t &num) { + Status error; if (m_supports_watchpoint_support_info == eLazyBoolYes) { num = m_num_supported_hardware_watchpoints; @@ -1568,18 +1568,18 @@ Error GDBRemoteCommunicationClient::GetWatchpointSupportInfo(uint32_t &num) { return error; } -lldb_private::Error GDBRemoteCommunicationClient::GetWatchpointSupportInfo( +lldb_private::Status GDBRemoteCommunicationClient::GetWatchpointSupportInfo( uint32_t &num, bool &after, const ArchSpec &arch) { - Error error(GetWatchpointSupportInfo(num)); + Status error(GetWatchpointSupportInfo(num)); if (error.Success()) error = GetWatchpointsTriggerAfterInstruction(after, arch); return error; } -lldb_private::Error +lldb_private::Status GDBRemoteCommunicationClient::GetWatchpointsTriggerAfterInstruction( bool &after, const ArchSpec &arch) { - Error error; + Status error; llvm::Triple::ArchType atype = arch.GetMachine(); // we assume watchpoints will happen after running the relevant opcode @@ -2539,7 +2539,7 @@ uint8_t GDBRemoteCommunicationClient::SendGDBStoppointTypePacket( if (response.IsOKResponse()) return 0; - // Error while setting breakpoint, send back specific error + // Status while setting breakpoint, send back specific error if (response.IsErrorResponse()) return response.GetError(); @@ -2635,7 +2635,7 @@ lldb::addr_t GDBRemoteCommunicationClient::GetShlibInfoAddr() { return response.GetHexMaxU64(false, LLDB_INVALID_ADDRESS); } -lldb_private::Error GDBRemoteCommunicationClient::RunShellCommand( +lldb_private::Status GDBRemoteCommunicationClient::RunShellCommand( const char *command, // Shouldn't be NULL const FileSpec & working_dir, // Pass empty FileSpec to use the current working directory @@ -2661,32 +2661,32 @@ lldb_private::Error GDBRemoteCommunicationClient::RunShellCommand( if (SendPacketAndWaitForResponse(stream.GetString(), response, false) == PacketResult::Success) { if (response.GetChar() != 'F') - return Error("malformed reply"); + return Status("malformed reply"); if (response.GetChar() != ',') - return Error("malformed reply"); + return Status("malformed reply"); uint32_t exitcode = response.GetHexMaxU32(false, UINT32_MAX); if (exitcode == UINT32_MAX) - return Error("unable to run remote process"); + return Status("unable to run remote process"); else if (status_ptr) *status_ptr = exitcode; if (response.GetChar() != ',') - return Error("malformed reply"); + return Status("malformed reply"); uint32_t signo = response.GetHexMaxU32(false, UINT32_MAX); if (signo_ptr) *signo_ptr = signo; if (response.GetChar() != ',') - return Error("malformed reply"); + return Status("malformed reply"); std::string output; response.GetEscapedBinaryData(output); if (command_output) command_output->assign(output); - return Error(); + return Status(); } - return Error("unable to send packet"); + return Status("unable to send packet"); } -Error GDBRemoteCommunicationClient::MakeDirectory(const FileSpec &file_spec, - uint32_t file_permissions) { +Status GDBRemoteCommunicationClient::MakeDirectory(const FileSpec &file_spec, + uint32_t file_permissions) { std::string path{file_spec.GetPath(false)}; lldb_private::StreamString stream; stream.PutCString("qPlatform_mkdir:"); @@ -2698,16 +2698,17 @@ Error GDBRemoteCommunicationClient::MakeDirectory(const FileSpec &file_spec, if (SendPacketAndWaitForResponse(packet, response, false) != PacketResult::Success) - return Error("failed to send '%s' packet", packet.str().c_str()); + return Status("failed to send '%s' packet", packet.str().c_str()); if (response.GetChar() != 'F') - return Error("invalid response to '%s' packet", packet.str().c_str()); + return Status("invalid response to '%s' packet", packet.str().c_str()); - return Error(response.GetU32(UINT32_MAX), eErrorTypePOSIX); + return Status(response.GetU32(UINT32_MAX), eErrorTypePOSIX); } -Error GDBRemoteCommunicationClient::SetFilePermissions( - const FileSpec &file_spec, uint32_t file_permissions) { +Status +GDBRemoteCommunicationClient::SetFilePermissions(const FileSpec &file_spec, + uint32_t file_permissions) { std::string path{file_spec.GetPath(false)}; lldb_private::StreamString stream; stream.PutCString("qPlatform_chmod:"); @@ -2719,16 +2720,16 @@ Error GDBRemoteCommunicationClient::SetFilePermissions( if (SendPacketAndWaitForResponse(packet, response, false) != PacketResult::Success) - return Error("failed to send '%s' packet", stream.GetData()); + return Status("failed to send '%s' packet", stream.GetData()); if (response.GetChar() != 'F') - return Error("invalid response to '%s' packet", stream.GetData()); + return Status("invalid response to '%s' packet", stream.GetData()); - return Error(response.GetU32(UINT32_MAX), eErrorTypePOSIX); + return Status(response.GetU32(UINT32_MAX), eErrorTypePOSIX); } static uint64_t ParseHostIOPacketResponse(StringExtractorGDBRemote &response, - uint64_t fail_result, Error &error) { + uint64_t fail_result, Status &error) { response.SetFilePos(0); if (response.GetChar() != 'F') return fail_result; @@ -2748,7 +2749,7 @@ static uint64_t ParseHostIOPacketResponse(StringExtractorGDBRemote &response, lldb::user_id_t GDBRemoteCommunicationClient::OpenFile(const lldb_private::FileSpec &file_spec, uint32_t flags, mode_t mode, - Error &error) { + Status &error) { std::string path(file_spec.GetPath(false)); lldb_private::StreamString stream; stream.PutCString("vFile:open:"); @@ -2767,7 +2768,8 @@ GDBRemoteCommunicationClient::OpenFile(const lldb_private::FileSpec &file_spec, return UINT64_MAX; } -bool GDBRemoteCommunicationClient::CloseFile(lldb::user_id_t fd, Error &error) { +bool GDBRemoteCommunicationClient::CloseFile(lldb::user_id_t fd, + Status &error) { lldb_private::StreamString stream; stream.Printf("vFile:close:%i", (int)fd); StringExtractorGDBRemote response; @@ -2796,10 +2798,11 @@ lldb::user_id_t GDBRemoteCommunicationClient::GetFileSize( return UINT64_MAX; } -Error GDBRemoteCommunicationClient::GetFilePermissions( - const FileSpec &file_spec, uint32_t &file_permissions) { +Status +GDBRemoteCommunicationClient::GetFilePermissions(const FileSpec &file_spec, + uint32_t &file_permissions) { std::string path{file_spec.GetPath(false)}; - Error error; + Status error; lldb_private::StreamString stream; stream.PutCString("vFile:mode:"); stream.PutCStringAsRawHex8(path.c_str()); @@ -2834,7 +2837,7 @@ Error GDBRemoteCommunicationClient::GetFilePermissions( uint64_t GDBRemoteCommunicationClient::ReadFile(lldb::user_id_t fd, uint64_t offset, void *dst, uint64_t dst_len, - Error &error) { + Status &error) { lldb_private::StreamString stream; stream.Printf("vFile:pread:%i,%" PRId64 ",%" PRId64, (int)fd, dst_len, offset); @@ -2868,7 +2871,7 @@ uint64_t GDBRemoteCommunicationClient::WriteFile(lldb::user_id_t fd, uint64_t offset, const void *src, uint64_t src_len, - Error &error) { + Status &error) { lldb_private::StreamGDBRemote stream; stream.Printf("vFile:pwrite:%i,%" PRId64 ",", (int)fd, offset); stream.PutEscapedBytes(src, src_len); @@ -2896,10 +2899,10 @@ uint64_t GDBRemoteCommunicationClient::WriteFile(lldb::user_id_t fd, return 0; } -Error GDBRemoteCommunicationClient::CreateSymlink(const FileSpec &src, - const FileSpec &dst) { +Status GDBRemoteCommunicationClient::CreateSymlink(const FileSpec &src, + const FileSpec &dst) { std::string src_path{src.GetPath(false)}, dst_path{dst.GetPath(false)}; - Error error; + Status error; lldb_private::StreamGDBRemote stream; stream.PutCString("vFile:symlink:"); // the unix symlink() command reverses its parameters where the dst if first, @@ -2930,9 +2933,9 @@ Error GDBRemoteCommunicationClient::CreateSymlink(const FileSpec &src, return error; } -Error GDBRemoteCommunicationClient::Unlink(const FileSpec &file_spec) { +Status GDBRemoteCommunicationClient::Unlink(const FileSpec &file_spec) { std::string path{file_spec.GetPath(false)}; - Error error; + Status error; lldb_private::StreamGDBRemote stream; stream.PutCString("vFile:unlink:"); // the unix symlink() command reverses its parameters where the dst if first, @@ -3311,7 +3314,7 @@ GDBRemoteCommunicationClient::GetModulesInfo( bool GDBRemoteCommunicationClient::ReadExtFeature( const lldb_private::ConstString object, const lldb_private::ConstString annex, std::string &out, - lldb_private::Error &err) { + lldb_private::Status &err) { std::stringstream output; StringExtractorGDBRemote chunk; @@ -3590,7 +3593,7 @@ GDBRemoteCommunicationClient::GetSupportedStructuredDataPlugins() { : nullptr; } -Error GDBRemoteCommunicationClient::SendSignalsToIgnore( +Status GDBRemoteCommunicationClient::SendSignalsToIgnore( llvm::ArrayRef<int32_t> signals) { // Format packet: // QPassSignals:<hex_sig1>;<hex_sig2>...;<hex_sigN> @@ -3601,18 +3604,18 @@ Error GDBRemoteCommunicationClient::SendSignalsToIgnore( auto send_status = SendPacketAndWaitForResponse(packet, response, false); if (send_status != GDBRemoteCommunication::PacketResult::Success) - return Error("Sending QPassSignals packet failed"); + return Status("Sending QPassSignals packet failed"); if (response.IsOKResponse()) { - return Error(); + return Status(); } else { - return Error("Unknown error happened during sending QPassSignals packet."); + return Status("Unknown error happened during sending QPassSignals packet."); } } -Error GDBRemoteCommunicationClient::ConfigureRemoteStructuredData( +Status GDBRemoteCommunicationClient::ConfigureRemoteStructuredData( const ConstString &type_name, const StructuredData::ObjectSP &config_sp) { - Error error; + Status error; if (type_name.GetLength() == 0) { error.SetErrorString("invalid type_name argument"); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h index 63b9708cc9a..08d0bd5d690 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h @@ -41,7 +41,7 @@ public: // After connecting, send the handshake to the server to make sure // we are communicating with it. //------------------------------------------------------------------ - bool HandshakeWithServer(Error *error_ptr); + bool HandshakeWithServer(Status *error_ptr); // For packets which specify a range of output to be returned, // return all of the output via a series of request packets of the form @@ -230,17 +230,17 @@ public: bool DeallocateMemory(lldb::addr_t addr); - Error Detach(bool keep_stopped); + Status Detach(bool keep_stopped); - Error GetMemoryRegionInfo(lldb::addr_t addr, MemoryRegionInfo &range_info); + Status GetMemoryRegionInfo(lldb::addr_t addr, MemoryRegionInfo &range_info); - Error GetWatchpointSupportInfo(uint32_t &num); + Status GetWatchpointSupportInfo(uint32_t &num); - Error GetWatchpointSupportInfo(uint32_t &num, bool &after, - const ArchSpec &arch); + Status GetWatchpointSupportInfo(uint32_t &num, bool &after, + const ArchSpec &arch); - Error GetWatchpointsTriggerAfterInstruction(bool &after, - const ArchSpec &arch); + Status GetWatchpointsTriggerAfterInstruction(bool &after, + const ArchSpec &arch); const ArchSpec &GetHostArchitecture(); @@ -365,33 +365,33 @@ public: bool &sequence_mutex_unavailable); lldb::user_id_t OpenFile(const FileSpec &file_spec, uint32_t flags, - mode_t mode, Error &error); + mode_t mode, Status &error); - bool CloseFile(lldb::user_id_t fd, Error &error); + bool CloseFile(lldb::user_id_t fd, Status &error); lldb::user_id_t GetFileSize(const FileSpec &file_spec); - Error GetFilePermissions(const FileSpec &file_spec, - uint32_t &file_permissions); + Status GetFilePermissions(const FileSpec &file_spec, + uint32_t &file_permissions); - Error SetFilePermissions(const FileSpec &file_spec, - uint32_t file_permissions); + Status SetFilePermissions(const FileSpec &file_spec, + uint32_t file_permissions); uint64_t ReadFile(lldb::user_id_t fd, uint64_t offset, void *dst, - uint64_t dst_len, Error &error); + uint64_t dst_len, Status &error); uint64_t WriteFile(lldb::user_id_t fd, uint64_t offset, const void *src, - uint64_t src_len, Error &error); + uint64_t src_len, Status &error); - Error CreateSymlink(const FileSpec &src, const FileSpec &dst); + Status CreateSymlink(const FileSpec &src, const FileSpec &dst); - Error Unlink(const FileSpec &file_spec); + Status Unlink(const FileSpec &file_spec); - Error MakeDirectory(const FileSpec &file_spec, uint32_t mode); + Status MakeDirectory(const FileSpec &file_spec, uint32_t mode); bool GetFileExists(const FileSpec &file_spec); - Error RunShellCommand( + Status RunShellCommand( const char *command, // Shouldn't be nullptr const FileSpec &working_dir, // Pass empty FileSpec to use the current // working directory @@ -448,12 +448,12 @@ public: bool ReadExtFeature(const lldb_private::ConstString object, const lldb_private::ConstString annex, std::string &out, - lldb_private::Error &err); + lldb_private::Status &err); void ServeSymbolLookups(lldb_private::Process *process); // Sends QPassSignals packet to the server with given signals to ignore. - Error SendSignalsToIgnore(llvm::ArrayRef<int32_t> signals); + Status SendSignalsToIgnore(llvm::ArrayRef<int32_t> signals); //------------------------------------------------------------------ /// Return the feature set supported by the gdb-remote server. @@ -495,7 +495,7 @@ public: /// /// @see \b Process::ConfigureStructuredData(...) for details. //------------------------------------------------------------------ - Error + Status ConfigureRemoteStructuredData(const ConstString &type_name, const StructuredData::ObjectSP &config_sp); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp index 934824e214d..dac675ee943 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp @@ -39,7 +39,7 @@ void GDBRemoteCommunicationServer::RegisterPacketHandler( GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServer::GetPacketAndSendResponse( - Timeout<std::micro> timeout, Error &error, bool &interrupt, bool &quit) { + Timeout<std::micro> timeout, Status &error, bool &interrupt, bool &quit) { StringExtractorGDBRemote packet; PacketResult packet_result = WaitForPacketNoLock(packet, timeout, false); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h index 0c583e62d76..6eb25f8b9f9 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h @@ -31,8 +31,8 @@ class GDBRemoteCommunicationServer : public GDBRemoteCommunication { public: using PortMap = std::map<uint16_t, lldb::pid_t>; using PacketHandler = - std::function<PacketResult(StringExtractorGDBRemote &packet, Error &error, - bool &interrupt, bool &quit)>; + std::function<PacketResult(StringExtractorGDBRemote &packet, + Status &error, bool &interrupt, bool &quit)>; GDBRemoteCommunicationServer(const char *comm_name, const char *listener_name); @@ -44,7 +44,7 @@ public: PacketHandler handler); PacketResult GetPacketAndSendResponse(Timeout<std::micro> timeout, - Error &error, bool &interrupt, + Status &error, bool &interrupt, bool &quit); // After connecting, do a little handshake with the client to make sure diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp index 66c1b15ff85..d0000a001ce 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp @@ -523,7 +523,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Open( File::ConvertOpenOptionsForPOSIXOpen(packet.GetHexMaxU32(false, 0)); if (packet.GetChar() == ',') { mode_t mode = packet.GetHexMaxU32(false, 0600); - Error error; + Status error; const FileSpec path_spec{path, true}; int fd = ::open(path_spec.GetCString(), flags, mode); const int save_errno = fd == -1 ? errno : 0; @@ -544,7 +544,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Close( StringExtractorGDBRemote &packet) { packet.SetFilePos(::strlen("vFile:close:")); int fd = packet.GetS32(-1); - Error error; + Status error; int err = -1; int save_errno = 0; if (fd >= 0) { @@ -663,7 +663,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Mode( std::string path; packet.GetHexByteString(path); if (!path.empty()) { - Error error; + Status error; const uint32_t mode = File::GetPermissions(FileSpec{path, true}, error); StreamString response; response.Printf("F%u", mode); @@ -702,7 +702,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_symlink( packet.GetHexByteStringTerminatedBy(dst, ','); packet.GetChar(); // Skip ',' char packet.GetHexByteString(src); - Error error = FileSystem::Symlink(FileSpec{src, true}, FileSpec{dst, false}); + Status error = FileSystem::Symlink(FileSpec{src, true}, FileSpec{dst, false}); StreamString response; response.Printf("F%u,%u", error.GetError(), error.GetError()); return SendPacketNoLock(response.GetString()); @@ -714,7 +714,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_unlink( packet.SetFilePos(::strlen("vFile:unlink:")); std::string path; packet.GetHexByteString(path); - Error error(llvm::sys::fs::remove(path)); + Status error(llvm::sys::fs::remove(path)); StreamString response; response.Printf("F%u,%u", error.GetError(), error.GetError()); return SendPacketNoLock(response.GetString()); @@ -736,7 +736,7 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_shell( packet.GetHexByteString(working_dir); int status, signo; std::string output; - Error err = + Status err = Host::RunShellCommand(path.c_str(), FileSpec{working_dir, true}, &status, &signo, &output, timeout); StreamGDBRemote response; @@ -794,7 +794,7 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_mkdir( if (packet.GetChar() == ',') { std::string path; packet.GetHexByteString(path); - Error error(llvm::sys::fs::create_directory(path, mode)); + Status error(llvm::sys::fs::create_directory(path, mode)); StreamGDBRemote response; response.Printf("F%u", error.GetError()); @@ -814,7 +814,7 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_chmod( if (packet.GetChar() == ',') { std::string path; packet.GetHexByteString(path); - Error error(llvm::sys::fs::setPermissions(path, perms)); + Status error(llvm::sys::fs::setPermissions(path, perms)); StreamGDBRemote response; response.Printf("F%u", error.GetError()); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h index 321a92266bd..14d5612af20 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h @@ -38,7 +38,7 @@ public: protected: ProcessLaunchInfo m_process_launch_info; - Error m_process_launch_error; + Status m_process_launch_error; ProcessInstanceInfoList m_proc_infos; uint32_t m_proc_infos_index; bool m_thread_suffix_supported; @@ -130,7 +130,7 @@ protected: PacketResult (T::*handler)(StringExtractorGDBRemote &packet)) { RegisterPacketHandler(packet_type, [this, handler](StringExtractorGDBRemote packet, - Error &error, bool &interrupt, + Status &error, bool &interrupt, bool &quit) { return (static_cast<T *>(this)->*handler)(packet); }); @@ -144,10 +144,10 @@ protected: /// with all the information for a child process to be launched. /// /// @return - /// An Error object indicating the success or failure of the + /// An Status object indicating the success or failure of the /// launch. //------------------------------------------------------------------ - virtual Error LaunchProcess() = 0; + virtual Status LaunchProcess() = 0; virtual FileSpec FindModuleFile(const std::string &module_path, const ArchSpec &arch); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp index 290889ec662..ec7c2f5330d 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp @@ -184,35 +184,36 @@ void GDBRemoteCommunicationServerLLGS::RegisterPacketHandlers() { &GDBRemoteCommunicationServerLLGS::Handle_QPassSignals); RegisterPacketHandler(StringExtractorGDBRemote::eServerPacketType_k, - [this](StringExtractorGDBRemote packet, Error &error, + [this](StringExtractorGDBRemote packet, Status &error, bool &interrupt, bool &quit) { quit = true; return this->Handle_k(packet); }); } -Error GDBRemoteCommunicationServerLLGS::SetLaunchArguments( - const char *const args[], int argc) { +Status +GDBRemoteCommunicationServerLLGS::SetLaunchArguments(const char *const args[], + int argc) { if ((argc < 1) || !args || !args[0] || !args[0][0]) - return Error("%s: no process command line specified to launch", - __FUNCTION__); + return Status("%s: no process command line specified to launch", + __FUNCTION__); m_process_launch_info.SetArguments(const_cast<const char **>(args), true); - return Error(); + return Status(); } -Error GDBRemoteCommunicationServerLLGS::SetLaunchFlags( - unsigned int launch_flags) { +Status +GDBRemoteCommunicationServerLLGS::SetLaunchFlags(unsigned int launch_flags) { m_process_launch_info.GetFlags().Set(launch_flags); - return Error(); + return Status(); } -Error GDBRemoteCommunicationServerLLGS::LaunchProcess() { +Status GDBRemoteCommunicationServerLLGS::LaunchProcess() { Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS)); if (!m_process_launch_info.GetArguments().GetArgumentCount()) - return Error("%s: no process command line specified to launch", - __FUNCTION__); + return Status("%s: no process command line specified to launch", + __FUNCTION__); const bool should_forward_stdio = m_process_launch_info.GetFileActionForFD(STDIN_FILENO) == nullptr || @@ -224,7 +225,7 @@ Error GDBRemoteCommunicationServerLLGS::LaunchProcess() { const bool default_to_use_pty = true; m_process_launch_info.FinalizeFileActions(nullptr, default_to_use_pty); - Error error; + Status error; { std::lock_guard<std::recursive_mutex> guard(m_debugged_process_mutex); assert(!m_debugged_process_sp && "lldb-server creating debugged " @@ -286,8 +287,8 @@ Error GDBRemoteCommunicationServerLLGS::LaunchProcess() { return error; } -Error GDBRemoteCommunicationServerLLGS::AttachToProcess(lldb::pid_t pid) { - Error error; +Status GDBRemoteCommunicationServerLLGS::AttachToProcess(lldb::pid_t pid) { + Status error; Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS)); if (log) @@ -298,10 +299,10 @@ Error GDBRemoteCommunicationServerLLGS::AttachToProcess(lldb::pid_t pid) { // else. if (m_debugged_process_sp && m_debugged_process_sp->GetID() != LLDB_INVALID_PROCESS_ID) - return Error("cannot attach to a process %" PRIu64 - " when another process with pid %" PRIu64 - " is being debugged.", - pid, m_debugged_process_sp->GetID()); + return Status("cannot attach to a process %" PRIu64 + " when another process with pid %" PRIu64 + " is being debugged.", + pid, m_debugged_process_sp->GetID()); // Try to attach. error = NativeProcessProtocol::Attach(pid, *this, m_mainloop, @@ -420,7 +421,7 @@ static void WriteRegisterValueInHexFixedWidth( lldb::ByteOrder byte_order) { RegisterValue reg_value; if (!reg_value_p) { - Error error = reg_ctx_sp->ReadRegister(®_info, reg_value); + Status error = reg_ctx_sp->ReadRegister(®_info, reg_value); if (error.Success()) reg_value_p = ®_value; // else log. @@ -488,7 +489,7 @@ static JSONObject::SP GetRegistersAsJSON(NativeThreadProtocol &thread) { // registers. RegisterValue reg_value; - Error error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); + Status error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); if (error.Fail()) { if (log) log->Printf("%s failed to read register '%s' index %" PRIu32 ": %s", @@ -739,7 +740,7 @@ GDBRemoteCommunicationServerLLGS::SendStopReplyPacketForThread( reg_ctx_sp->GetRegisterInfoAtIndex(reg_to_read); RegisterValue reg_value; - Error error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); + Status error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); if (error.Fail()) { if (log) log->Printf("%s failed to read register '%s' index %" PRIu32 ": %s", @@ -793,7 +794,7 @@ GDBRemoteCommunicationServerLLGS::SendStopReplyPacketForThread( } else if (reg_info_p->value_regs == nullptr) { // Only expediate registers that are not contained in other registers. RegisterValue reg_value; - Error error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); + Status error = reg_ctx_sp->ReadRegister(reg_info_p, reg_value); if (error.Success()) { response.Printf("%.02x:", *reg_num_p); WriteRegisterValueInHexFixedWidth(response, reg_ctx_sp, *reg_info_p, @@ -960,7 +961,7 @@ void GDBRemoteCommunicationServerLLGS::DataAvailableCallback() { bool interrupt = false; bool done = false; - Error error; + Status error; while (true) { const PacketResult result = GetPacketAndSendResponse( std::chrono::microseconds(0), error, interrupt, done); @@ -978,12 +979,12 @@ void GDBRemoteCommunicationServerLLGS::DataAvailableCallback() { } } -Error GDBRemoteCommunicationServerLLGS::InitializeConnection( +Status GDBRemoteCommunicationServerLLGS::InitializeConnection( std::unique_ptr<Connection> &&connection) { IOObjectSP read_object_sp = connection->GetReadObject(); GDBRemoteCommunicationServer::SetConnection(connection.release()); - Error error; + Status error; m_network_handle_up = m_mainloop.RegisterReadObject( read_object_sp, [this](MainLoopBase &) { DataAvailableCallback(); }, error); @@ -1005,8 +1006,8 @@ GDBRemoteCommunicationServerLLGS::SendONotification(const char *buffer, return SendPacketNoLock(response.GetString()); } -Error GDBRemoteCommunicationServerLLGS::SetSTDIOFileDescriptor(int fd) { - Error error; +Status GDBRemoteCommunicationServerLLGS::SetSTDIOFileDescriptor(int fd) { + Status error; // Set up the reading/handling of process I/O std::unique_ptr<ConnectionFileDescriptor> conn_up( @@ -1024,7 +1025,7 @@ Error GDBRemoteCommunicationServerLLGS::SetSTDIOFileDescriptor(int fd) { return error; } - return Error(); + return Status(); } void GDBRemoteCommunicationServerLLGS::StartSTDIOForwarding() { @@ -1032,7 +1033,7 @@ void GDBRemoteCommunicationServerLLGS::StartSTDIOForwarding() { if (!m_stdio_communication.IsConnected()) return; - Error error; + Status error; lldbassert(!m_stdio_handle_up); m_stdio_handle_up = m_mainloop.RegisterReadObject( m_stdio_communication.GetConnection()->GetReadObject(), @@ -1055,7 +1056,7 @@ void GDBRemoteCommunicationServerLLGS::StopSTDIOForwarding() { void GDBRemoteCommunicationServerLLGS::SendProcessOutput() { char buffer[1024]; ConnectionStatus status; - Error error; + Status error; while (true) { size_t bytes_read = m_stdio_communication.Read( buffer, sizeof buffer, std::chrono::microseconds(0), status, &error); @@ -1140,7 +1141,7 @@ GDBRemoteCommunicationServerLLGS::Handle_k(StringExtractorGDBRemote &packet) { return PacketResult::Success; } - Error error = m_debugged_process_sp->Kill(); + Status error = m_debugged_process_sp->Kill(); if (error.Fail() && log) log->Printf("GDBRemoteCommunicationServerLLGS::%s Failed to kill debugged " "process %" PRIu64 ": %s", @@ -1223,7 +1224,7 @@ GDBRemoteCommunicationServerLLGS::Handle_C(StringExtractorGDBRemote &packet) { } ResumeActionList resume_actions(StateType::eStateRunning, 0); - Error error; + Status error; // We have two branches: what to do if a continue thread is specified (in // which case we target @@ -1304,7 +1305,7 @@ GDBRemoteCommunicationServerLLGS::Handle_c(StringExtractorGDBRemote &packet) { // Build the ResumeActionList ResumeActionList actions(StateType::eStateRunning, 0); - Error error = m_debugged_process_sp->Resume(actions); + Status error = m_debugged_process_sp->Resume(actions); if (error.Fail()) { if (log) { log->Printf( @@ -1428,7 +1429,7 @@ GDBRemoteCommunicationServerLLGS::Handle_vCont( thread_actions.Append(thread_action); } - Error error = m_debugged_process_sp->Resume(thread_actions); + Status error = m_debugged_process_sp->Resume(thread_actions); if (error.Fail()) { if (log) { log->Printf("GDBRemoteCommunicationServerLLGS::%s vCont failed for " @@ -1853,7 +1854,7 @@ GDBRemoteCommunicationServerLLGS::Handle_p(StringExtractorGDBRemote &packet) { // Retrieve the value RegisterValue reg_value; - Error error = reg_context_sp->ReadRegister(reg_info, reg_value); + Status error = reg_context_sp->ReadRegister(reg_info, reg_value); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s failed, read of " @@ -1973,7 +1974,7 @@ GDBRemoteCommunicationServerLLGS::Handle_P(StringExtractorGDBRemote &packet) { StreamGDBRemote response; RegisterValue reg_value(reg_bytes, reg_size, process_arch.GetByteOrder()); - Error error = reg_context_sp->WriteRegister(reg_info, reg_value); + Status error = reg_context_sp->WriteRegister(reg_info, reg_value); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s failed, write of " @@ -2088,7 +2089,7 @@ GDBRemoteCommunicationServerLLGS::Handle_I(StringExtractorGDBRemote &packet) { // TODO: enqueue this block in circular buffer and send window size to // remote host ConnectionStatus status; - Error error; + Status error; m_stdio_communication.Write(tmp, read, status, &error); if (error.Fail()) { return SendErrorResponse(0x15); @@ -2114,7 +2115,7 @@ GDBRemoteCommunicationServerLLGS::Handle_interrupt( } // Interrupt the process. - Error error = m_debugged_process_sp->Interrupt(); + Status error = m_debugged_process_sp->Interrupt(); if (error.Fail()) { if (log) { log->Printf( @@ -2181,7 +2182,7 @@ GDBRemoteCommunicationServerLLGS::Handle_memory_read( // Retrieve the process memory. size_t bytes_read = 0; - Error error = m_debugged_process_sp->ReadMemoryWithoutTrap( + Status error = m_debugged_process_sp->ReadMemoryWithoutTrap( read_addr, &buf[0], byte_count, bytes_read); if (error.Fail()) { if (log) @@ -2282,8 +2283,8 @@ GDBRemoteCommunicationServerLLGS::Handle_M(StringExtractorGDBRemote &packet) { // Write the process memory. size_t bytes_written = 0; - Error error = m_debugged_process_sp->WriteMemory(write_addr, &buf[0], - byte_count, bytes_written); + Status error = m_debugged_process_sp->WriteMemory(write_addr, &buf[0], + byte_count, bytes_written); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s pid %" PRIu64 @@ -2329,7 +2330,7 @@ GDBRemoteCommunicationServerLLGS::Handle_qMemoryRegionInfoSupported( // Test if we can get any region back when asking for the region around NULL. MemoryRegionInfo region_info; - const Error error = + const Status error = m_debugged_process_sp->GetMemoryRegionInfo(0, region_info); if (error.Fail()) { // We don't support memory region info collection for this @@ -2367,7 +2368,7 @@ GDBRemoteCommunicationServerLLGS::Handle_qMemoryRegionInfo( // Get the memory region info for the target address. MemoryRegionInfo region_info; - const Error error = + const Status error = m_debugged_process_sp->GetMemoryRegionInfo(read_addr, region_info); if (error.Fail()) { // Return the error message. @@ -2485,7 +2486,7 @@ GDBRemoteCommunicationServerLLGS::Handle_Z(StringExtractorGDBRemote &packet) { if (want_breakpoint) { // Try to set the breakpoint. - const Error error = + const Status error = m_debugged_process_sp->SetBreakpoint(addr, size, want_hardware); if (error.Success()) return SendOKResponse(); @@ -2498,7 +2499,7 @@ GDBRemoteCommunicationServerLLGS::Handle_Z(StringExtractorGDBRemote &packet) { return SendErrorResponse(0x09); } else { // Try to set the watchpoint. - const Error error = m_debugged_process_sp->SetWatchpoint( + const Status error = m_debugged_process_sp->SetWatchpoint( addr, size, watch_flags, want_hardware); if (error.Success()) return SendOKResponse(); @@ -2582,7 +2583,7 @@ GDBRemoteCommunicationServerLLGS::Handle_z(StringExtractorGDBRemote &packet) { if (want_breakpoint) { // Try to clear the breakpoint. - const Error error = + const Status error = m_debugged_process_sp->RemoveBreakpoint(addr, want_hardware); if (error.Success()) return SendOKResponse(); @@ -2595,7 +2596,7 @@ GDBRemoteCommunicationServerLLGS::Handle_z(StringExtractorGDBRemote &packet) { return SendErrorResponse(0x09); } else { // Try to clear the watchpoint. - const Error error = m_debugged_process_sp->RemoveWatchpoint(addr); + const Status error = m_debugged_process_sp->RemoveWatchpoint(addr); if (error.Success()) return SendOKResponse(); Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_WATCHPOINTS)); @@ -2646,7 +2647,7 @@ GDBRemoteCommunicationServerLLGS::Handle_s(StringExtractorGDBRemote &packet) { // All other threads stop while we're single stepping a thread. actions.SetDefaultThreadActionIfNeeded(eStateStopped, 0); - Error error = m_debugged_process_sp->Resume(actions); + Status error = m_debugged_process_sp->Resume(actions); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s pid %" PRIu64 @@ -2782,7 +2783,7 @@ GDBRemoteCommunicationServerLLGS::Handle_QSaveRegisterState( // Save registers to a buffer. DataBufferSP register_data_sp; - Error error = reg_context_sp->ReadAllRegisterValues(register_data_sp); + Status error = reg_context_sp->ReadAllRegisterValues(register_data_sp); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s pid %" PRIu64 @@ -2871,7 +2872,7 @@ GDBRemoteCommunicationServerLLGS::Handle_QRestoreRegisterState( m_saved_registers_map.erase(it); } - Error error = reg_context_sp->WriteAllRegisterValues(register_data_sp); + Status error = reg_context_sp->WriteAllRegisterValues(register_data_sp); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s pid %" PRIu64 @@ -2906,7 +2907,7 @@ GDBRemoteCommunicationServerLLGS::Handle_vAttach( "pid %" PRIu64, __FUNCTION__, pid); - Error error = AttachToProcess(pid); + Status error = AttachToProcess(pid); if (error.Fail()) { if (log) @@ -2954,7 +2955,7 @@ GDBRemoteCommunicationServerLLGS::Handle_D(StringExtractorGDBRemote &packet) { return SendIllFormedResponse(packet, "Invalid pid"); } - const Error error = m_debugged_process_sp->Detach(); + const Status error = m_debugged_process_sp->Detach(); if (error.Fail()) { if (log) log->Printf("GDBRemoteCommunicationServerLLGS::%s failed to detach from " @@ -3058,7 +3059,7 @@ GDBRemoteCommunicationServerLLGS::Handle_qFileLoadAddress( packet.GetHexByteString(file_name); lldb::addr_t file_load_address = LLDB_INVALID_ADDRESS; - Error error = + Status error = m_debugged_process_sp->GetFileLoadAddress(file_name, file_load_address); if (error.Fail()) return SendErrorResponse(69); @@ -3098,7 +3099,7 @@ GDBRemoteCommunicationServerLLGS::Handle_QPassSignals( if (!m_debugged_process_sp) return SendErrorResponse(68); - Error error = m_debugged_process_sp->IgnoreSignals(signals); + Status error = m_debugged_process_sp->IgnoreSignals(signals); if (error.Fail()) return SendErrorResponse(69); @@ -3112,7 +3113,7 @@ void GDBRemoteCommunicationServerLLGS::MaybeCloseInferiorTerminalConnection() { if (m_stdio_communication.IsConnected()) { auto connection = m_stdio_communication.GetConnection(); if (connection) { - Error error; + Status error; connection->Disconnect(&error); if (error.Success()) { diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h index a47927e1c64..ebda9a911d3 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h @@ -51,10 +51,10 @@ public: /// The number of elements in the args array of cstring pointers. /// /// @return - /// An Error object indicating the success or failure of making + /// An Status object indicating the success or failure of making /// the setting. //------------------------------------------------------------------ - Error SetLaunchArguments(const char *const args[], int argc); + Status SetLaunchArguments(const char *const args[], int argc); //------------------------------------------------------------------ /// Specify the launch flags for the process. @@ -63,10 +63,10 @@ public: /// The launch flags to use when launching this process. /// /// @return - /// An Error object indicating the success or failure of making + /// An Status object indicating the success or failure of making /// the setting. //------------------------------------------------------------------ - Error SetLaunchFlags(unsigned int launch_flags); + Status SetLaunchFlags(unsigned int launch_flags); //------------------------------------------------------------------ /// Launch a process with the current launch settings. @@ -76,10 +76,10 @@ public: /// with all the information for a child process to be launched. /// /// @return - /// An Error object indicating the success or failure of the + /// An Status object indicating the success or failure of the /// launch. //------------------------------------------------------------------ - Error LaunchProcess() override; + Status LaunchProcess() override; //------------------------------------------------------------------ /// Attach to a process. @@ -88,10 +88,10 @@ public: /// configured Platform. /// /// @return - /// An Error object indicating the success or failure of the + /// An Status object indicating the success or failure of the /// attach operation. //------------------------------------------------------------------ - Error AttachToProcess(lldb::pid_t pid); + Status AttachToProcess(lldb::pid_t pid); //------------------------------------------------------------------ // NativeProcessProtocol::NativeDelegate overrides @@ -103,7 +103,7 @@ public: void DidExec(NativeProcessProtocol *process) override; - Error InitializeConnection(std::unique_ptr<Connection> &&connection); + Status InitializeConnection(std::unique_ptr<Connection> &&connection); protected: MainLoop &m_mainloop; @@ -213,7 +213,7 @@ protected: lldb::tid_t GetContinueThreadID() const { return m_continue_tid; } - Error SetSTDIOFileDescriptor(int fd); + Status SetSTDIOFileDescriptor(int fd); FileSpec FindModuleFile(const std::string &module_path, const ArchSpec &arch) override; diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp index ae1c1adb5b4..73e3732df3e 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp @@ -82,7 +82,7 @@ GDBRemoteCommunicationServerPlatform::GDBRemoteCommunicationServerPlatform( &GDBRemoteCommunicationServerPlatform::Handle_jSignalsInfo); RegisterPacketHandler(StringExtractorGDBRemote::eServerPacketType_interrupt, - [](StringExtractorGDBRemote packet, Error &error, + [](StringExtractorGDBRemote packet, Status &error, bool &interrupt, bool &quit) { error.SetErrorString("interrupt received"); interrupt = true; @@ -95,7 +95,7 @@ GDBRemoteCommunicationServerPlatform::GDBRemoteCommunicationServerPlatform( //---------------------------------------------------------------------- GDBRemoteCommunicationServerPlatform::~GDBRemoteCommunicationServerPlatform() {} -Error GDBRemoteCommunicationServerPlatform::LaunchGDBServer( +Status GDBRemoteCommunicationServerPlatform::LaunchGDBServer( const lldb_private::Args &args, std::string hostname, lldb::pid_t &pid, uint16_t &port, std::string &socket_name) { if (port == UINT16_MAX) @@ -147,7 +147,7 @@ Error GDBRemoteCommunicationServerPlatform::LaunchGDBServer( port_ptr = nullptr; } - Error error = StartDebugserverProcess( + Status error = StartDebugserverProcess( url.str().c_str(), nullptr, debugserver_launch_info, port_ptr, &args, -1); pid = debugserver_launch_info.GetProcessID(); @@ -192,7 +192,7 @@ GDBRemoteCommunicationServerPlatform::Handle_qLaunchGDBServer( lldb::pid_t debugserver_pid = LLDB_INVALID_PROCESS_ID; std::string socket_name; - Error error = + Status error = LaunchGDBServer(Args(), hostname, debugserver_pid, port, socket_name); if (error.Fail()) { if (log) @@ -439,10 +439,10 @@ bool GDBRemoteCommunicationServerPlatform::DebugserverProcessReaped( return true; } -Error GDBRemoteCommunicationServerPlatform::LaunchProcess() { +Status GDBRemoteCommunicationServerPlatform::LaunchProcess() { if (!m_process_launch_info.GetArguments().GetArgumentCount()) - return Error("%s: no process command line specified to launch", - __FUNCTION__); + return Status("%s: no process command line specified to launch", + __FUNCTION__); // specify the process monitor if not already set. This should // generally be what happens since we need to reap started @@ -454,7 +454,7 @@ Error GDBRemoteCommunicationServerPlatform::LaunchProcess() { this, std::placeholders::_1), false); - Error error = Host::LaunchProcess(m_process_launch_info); + Status error = Host::LaunchProcess(m_process_launch_info); if (!error.Success()) { fprintf(stderr, "%s: failed to launch executable %s", __FUNCTION__, m_process_launch_info.GetArguments().GetArgumentAtIndex(0)); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h index 472d86e3a15..aed5106272d 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h @@ -34,7 +34,7 @@ public: ~GDBRemoteCommunicationServerPlatform() override; - Error LaunchProcess() override; + Status LaunchProcess() override; // Set both ports to zero to let the platform automatically bind to // a port chosen by the OS. @@ -61,9 +61,9 @@ public: void SetInferiorArguments(const lldb_private::Args &args); - Error LaunchGDBServer(const lldb_private::Args &args, std::string hostname, - lldb::pid_t &pid, uint16_t &port, - std::string &socket_name); + Status LaunchGDBServer(const lldb_private::Args &args, std::string hostname, + lldb::pid_t &pid, uint16_t &port, + std::string &socket_name); void SetPendingGdbServer(lldb::pid_t pid, uint16_t port, const std::string &socket_name); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp index ea4acc74893..612c7144451 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp @@ -95,8 +95,8 @@ bool GDBRemoteRegisterContext::ReadRegister(const RegisterInfo *reg_info, // Read the register if (ReadRegisterBytes(reg_info, m_reg_data)) { const bool partial_data_ok = false; - Error error(value.SetValueFromData(reg_info, m_reg_data, - reg_info->byte_offset, partial_data_ok)); + Status error(value.SetValueFromData( + reg_info, m_reg_data, reg_info->byte_offset, partial_data_ok)); return error.Success(); } return false; diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index c4ae5e36d9a..37a4153711d 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -97,8 +97,8 @@ namespace lldb { // function and get the packet history dumped to a file. void DumpProcessGDBRemotePacketHistory(void *p, const char *path) { StreamFile strm; - Error error(strm.GetFile().Open(path, File::eOpenOptionWrite | - File::eOpenOptionCanCreate)); + Status error(strm.GetFile().Open(path, File::eOpenOptionWrite | + File::eOpenOptionCanCreate)); if (error.Success()) ((ProcessGDBRemote *)p)->GetGDBRemote().DumpHistory(strm); } @@ -324,7 +324,7 @@ bool ProcessGDBRemote::ParsePythonTargetDefinition( const FileSpec &target_definition_fspec) { ScriptInterpreter *interpreter = GetTarget().GetDebugger().GetCommandInterpreter().GetScriptInterpreter(); - Error error; + Status error; StructuredData::ObjectSP module_object_sp( interpreter->LoadPluginModule(target_definition_fspec, error)); if (module_object_sp) { @@ -639,23 +639,23 @@ void ProcessGDBRemote::BuildDynamicRegisterInfo(bool force) { m_register_info.Finalize(GetTarget().GetArchitecture()); } -Error ProcessGDBRemote::WillLaunch(Module *module) { +Status ProcessGDBRemote::WillLaunch(Module *module) { return WillLaunchOrAttach(); } -Error ProcessGDBRemote::WillAttachToProcessWithID(lldb::pid_t pid) { +Status ProcessGDBRemote::WillAttachToProcessWithID(lldb::pid_t pid) { return WillLaunchOrAttach(); } -Error ProcessGDBRemote::WillAttachToProcessWithName(const char *process_name, - bool wait_for_launch) { +Status ProcessGDBRemote::WillAttachToProcessWithName(const char *process_name, + bool wait_for_launch) { return WillLaunchOrAttach(); } -Error ProcessGDBRemote::DoConnectRemote(Stream *strm, - llvm::StringRef remote_url) { +Status ProcessGDBRemote::DoConnectRemote(Stream *strm, + llvm::StringRef remote_url) { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); - Error error(WillLaunchOrAttach()); + Status error(WillLaunchOrAttach()); if (error.Fail()) return error; @@ -744,8 +744,8 @@ Error ProcessGDBRemote::DoConnectRemote(Stream *strm, return error; } -Error ProcessGDBRemote::WillLaunchOrAttach() { - Error error; +Status ProcessGDBRemote::WillLaunchOrAttach() { + Status error; m_stdio_communication.Clear(); return error; } @@ -753,10 +753,10 @@ Error ProcessGDBRemote::WillLaunchOrAttach() { //---------------------------------------------------------------------- // Process Control //---------------------------------------------------------------------- -Error ProcessGDBRemote::DoLaunch(Module *exe_module, - ProcessLaunchInfo &launch_info) { +Status ProcessGDBRemote::DoLaunch(Module *exe_module, + ProcessLaunchInfo &launch_info) { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); - Error error; + Status error; if (log) log->Printf("ProcessGDBRemote::%s() entered", __FUNCTION__); @@ -965,8 +965,8 @@ Error ProcessGDBRemote::DoLaunch(Module *exe_module, return error; } -Error ProcessGDBRemote::ConnectToDebugserver(llvm::StringRef connect_url) { - Error error; +Status ProcessGDBRemote::ConnectToDebugserver(llvm::StringRef connect_url) { + Status error; // Only connect if we have a valid connect URL Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); @@ -1169,10 +1169,10 @@ void ProcessGDBRemote::DidLaunch() { DidLaunchOrAttach(process_arch); } -Error ProcessGDBRemote::DoAttachToProcessWithID( +Status ProcessGDBRemote::DoAttachToProcessWithID( lldb::pid_t attach_pid, const ProcessAttachInfo &attach_info) { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); - Error error; + Status error; if (log) log->Printf("ProcessGDBRemote::%s()", __FUNCTION__); @@ -1197,9 +1197,9 @@ Error ProcessGDBRemote::DoAttachToProcessWithID( return error; } -Error ProcessGDBRemote::DoAttachToProcessWithName( +Status ProcessGDBRemote::DoAttachToProcessWithName( const char *process_name, const ProcessAttachInfo &attach_info) { - Error error; + Status error; // Clear out and clean up from any current state Clear(); @@ -1247,18 +1247,18 @@ void ProcessGDBRemote::DidAttach(ArchSpec &process_arch) { DidLaunchOrAttach(process_arch); } -Error ProcessGDBRemote::WillResume() { +Status ProcessGDBRemote::WillResume() { m_continue_c_tids.clear(); m_continue_C_tids.clear(); m_continue_s_tids.clear(); m_continue_S_tids.clear(); m_jstopinfo_sp.reset(); m_jthreadsinfo_sp.reset(); - return Error(); + return Status(); } -Error ProcessGDBRemote::DoResume() { - Error error; +Status ProcessGDBRemote::DoResume() { + Status error; Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); if (log) log->Printf("ProcessGDBRemote::Resume()"); @@ -2400,8 +2400,8 @@ void ProcessGDBRemote::RefreshStateAfterStop() { m_thread_list_real.RefreshStateAfterStop(); } -Error ProcessGDBRemote::DoHalt(bool &caused_stop) { - Error error; +Status ProcessGDBRemote::DoHalt(bool &caused_stop) { + Status error; if (m_public_state.GetValue() == eStateAttaching) { // We are being asked to halt during an attach. We need to just close @@ -2412,8 +2412,8 @@ Error ProcessGDBRemote::DoHalt(bool &caused_stop) { return error; } -Error ProcessGDBRemote::DoDetach(bool keep_stopped) { - Error error; +Status ProcessGDBRemote::DoDetach(bool keep_stopped) { + Status error; Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); if (log) log->Printf("ProcessGDBRemote::DoDetach(keep_stopped: %i)", keep_stopped); @@ -2441,8 +2441,8 @@ Error ProcessGDBRemote::DoDetach(bool keep_stopped) { return error; } -Error ProcessGDBRemote::DoDestroy() { - Error error; +Status ProcessGDBRemote::DoDestroy() { + Status error; Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); if (log) log->Printf("ProcessGDBRemote::DoDestroy()"); @@ -2722,7 +2722,7 @@ void ProcessGDBRemote::WillPublicStop() { // Process Memory //------------------------------------------------------------------ size_t ProcessGDBRemote::DoReadMemory(addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { GetMaxMemorySize(); bool binary_memory_read = m_gdb_comm.GetxPacketSupported(); // M and m packets take 2 bytes for 1 byte of memory @@ -2781,7 +2781,7 @@ size_t ProcessGDBRemote::DoReadMemory(addr_t addr, void *buf, size_t size, } size_t ProcessGDBRemote::DoWriteMemory(addr_t addr, const void *buf, - size_t size, Error &error) { + size_t size, Status &error) { GetMaxMemorySize(); // M and m packets take 2 bytes for 1 byte of memory size_t max_memory_size = m_max_memory_size / 2; @@ -2822,7 +2822,7 @@ size_t ProcessGDBRemote::DoWriteMemory(addr_t addr, const void *buf, lldb::addr_t ProcessGDBRemote::DoAllocateMemory(size_t size, uint32_t permissions, - Error &error) { + Status &error) { Log *log( GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_EXPRESSIONS)); addr_t allocated_addr = LLDB_INVALID_ADDRESS; @@ -2866,27 +2866,27 @@ lldb::addr_t ProcessGDBRemote::DoAllocateMemory(size_t size, return allocated_addr; } -Error ProcessGDBRemote::GetMemoryRegionInfo(addr_t load_addr, - MemoryRegionInfo ®ion_info) { +Status ProcessGDBRemote::GetMemoryRegionInfo(addr_t load_addr, + MemoryRegionInfo ®ion_info) { - Error error(m_gdb_comm.GetMemoryRegionInfo(load_addr, region_info)); + Status error(m_gdb_comm.GetMemoryRegionInfo(load_addr, region_info)); return error; } -Error ProcessGDBRemote::GetWatchpointSupportInfo(uint32_t &num) { +Status ProcessGDBRemote::GetWatchpointSupportInfo(uint32_t &num) { - Error error(m_gdb_comm.GetWatchpointSupportInfo(num)); + Status error(m_gdb_comm.GetWatchpointSupportInfo(num)); return error; } -Error ProcessGDBRemote::GetWatchpointSupportInfo(uint32_t &num, bool &after) { - Error error(m_gdb_comm.GetWatchpointSupportInfo( +Status ProcessGDBRemote::GetWatchpointSupportInfo(uint32_t &num, bool &after) { + Status error(m_gdb_comm.GetWatchpointSupportInfo( num, after, GetTarget().GetArchitecture())); return error; } -Error ProcessGDBRemote::DoDeallocateMemory(lldb::addr_t addr) { - Error error; +Status ProcessGDBRemote::DoDeallocateMemory(lldb::addr_t addr) { + Status error; LazyBool supported = m_gdb_comm.SupportsAllocDeallocMemory(); switch (supported) { @@ -2924,7 +2924,7 @@ Error ProcessGDBRemote::DoDeallocateMemory(lldb::addr_t addr) { // Process STDIO //------------------------------------------------------------------ size_t ProcessGDBRemote::PutSTDIN(const char *src, size_t src_len, - Error &error) { + Status &error) { if (m_stdio_communication.IsConnected()) { ConnectionStatus status; m_stdio_communication.Write(src, src_len, status, NULL); @@ -2934,8 +2934,8 @@ size_t ProcessGDBRemote::PutSTDIN(const char *src, size_t src_len, return 0; } -Error ProcessGDBRemote::EnableBreakpointSite(BreakpointSite *bp_site) { - Error error; +Status ProcessGDBRemote::EnableBreakpointSite(BreakpointSite *bp_site) { + Status error; assert(bp_site != NULL); // Get logging info @@ -3072,8 +3072,8 @@ Error ProcessGDBRemote::EnableBreakpointSite(BreakpointSite *bp_site) { return EnableSoftwareBreakpoint(bp_site); } -Error ProcessGDBRemote::DisableBreakpointSite(BreakpointSite *bp_site) { - Error error; +Status ProcessGDBRemote::DisableBreakpointSite(BreakpointSite *bp_site) { + Status error; assert(bp_site != NULL); addr_t addr = bp_site->GetLoadAddress(); user_id_t site_id = bp_site->GetID(); @@ -3141,8 +3141,8 @@ static GDBStoppointType GetGDBStoppointType(Watchpoint *wp) { return eWatchpointWrite; } -Error ProcessGDBRemote::EnableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessGDBRemote::EnableWatchpoint(Watchpoint *wp, bool notify) { + Status error; if (wp) { user_id_t watchID = wp->GetID(); addr_t addr = wp->GetLoadAddress(); @@ -3178,8 +3178,8 @@ Error ProcessGDBRemote::EnableWatchpoint(Watchpoint *wp, bool notify) { return error; } -Error ProcessGDBRemote::DisableWatchpoint(Watchpoint *wp, bool notify) { - Error error; +Status ProcessGDBRemote::DisableWatchpoint(Watchpoint *wp, bool notify) { + Status error; if (wp) { user_id_t watchID = wp->GetID(); @@ -3231,8 +3231,8 @@ void ProcessGDBRemote::Clear() { m_thread_list.Clear(); } -Error ProcessGDBRemote::DoSignal(int signo) { - Error error; +Status ProcessGDBRemote::DoSignal(int signo) { + Status error; Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); if (log) log->Printf("ProcessGDBRemote::DoSignal (signal = %d)", signo); @@ -3242,15 +3242,15 @@ Error ProcessGDBRemote::DoSignal(int signo) { return error; } -Error ProcessGDBRemote::EstablishConnectionIfNeeded( - const ProcessInfo &process_info) { +Status +ProcessGDBRemote::EstablishConnectionIfNeeded(const ProcessInfo &process_info) { // Make sure we aren't already connected? if (m_gdb_comm.IsConnected()) - return Error(); + return Status(); PlatformSP platform_sp(GetTarget().GetPlatform()); if (platform_sp && !platform_sp->IsHost()) - return Error("Lost debug server connection"); + return Status("Lost debug server connection"); auto error = LaunchAndConnectToDebugserver(process_info); if (error.Fail()) { @@ -3277,11 +3277,11 @@ static bool SetCloexecFlag(int fd) { } #endif -Error ProcessGDBRemote::LaunchAndConnectToDebugserver( +Status ProcessGDBRemote::LaunchAndConnectToDebugserver( const ProcessInfo &process_info) { using namespace std::placeholders; // For _1, _2, etc. - Error error; + Status error; if (m_debugserver_pid == LLDB_INVALID_PROCESS_ID) { // If we locate debugserver, keep that located version around static FileSpec g_debugserver_file_spec; @@ -3739,30 +3739,30 @@ bool ProcessGDBRemote::NewThreadNotifyBreakpointHit( return false; } -Error ProcessGDBRemote::UpdateAutomaticSignalFiltering() { +Status ProcessGDBRemote::UpdateAutomaticSignalFiltering() { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); LLDB_LOG(log, "Check if need to update ignored signals"); // QPassSignals package is not supported by the server, // there is no way we can ignore any signals on server side. if (!m_gdb_comm.GetQPassSignalsSupported()) - return Error(); + return Status(); // No signals, nothing to send. if (m_unix_signals_sp == nullptr) - return Error(); + return Status(); // Signals' version hasn't changed, no need to send anything. uint64_t new_signals_version = m_unix_signals_sp->GetVersion(); if (new_signals_version == m_last_signals_version) { LLDB_LOG(log, "Signals' version hasn't changed. version={0}", m_last_signals_version); - return Error(); + return Status(); } auto signals_to_ignore = m_unix_signals_sp->GetFilteredSignals(false, false, false); - Error error = m_gdb_comm.SendSignalsToIgnore(signals_to_ignore); + Status error = m_gdb_comm.SendSignalsToIgnore(signals_to_ignore); LLDB_LOG(log, "Signals' version changed. old version={0}, new version={1}, " @@ -3820,11 +3820,11 @@ DynamicLoader *ProcessGDBRemote::GetDynamicLoader() { return m_dyld_ap.get(); } -Error ProcessGDBRemote::SendEventData(const char *data) { +Status ProcessGDBRemote::SendEventData(const char *data) { int return_value; bool was_supported; - Error error; + Status error; return_value = m_gdb_comm.SendLaunchEventDataPacket(data, &was_supported); if (return_value != 0) { @@ -3995,7 +3995,7 @@ StructuredData::ObjectSP ProcessGDBRemote::GetSharedCacheInfo() { return object_sp; } -Error ProcessGDBRemote::ConfigureStructuredData( +Status ProcessGDBRemote::ConfigureStructuredData( const ConstString &type_name, const StructuredData::ObjectSP &config_sp) { return m_gdb_comm.ConfigureRemoteStructuredData(type_name, config_sp); } @@ -4332,7 +4332,7 @@ bool ProcessGDBRemote::GetGDBServerRegisterInfo(ArchSpec &arch_to_use) { // request the target xml file std::string raw; - lldb_private::Error lldberr; + lldb_private::Status lldberr; if (!comm.ReadExtFeature(ConstString("features"), ConstString("target.xml"), raw, lldberr)) { return false; @@ -4424,10 +4424,10 @@ bool ProcessGDBRemote::GetGDBServerRegisterInfo(ArchSpec &arch_to_use) { return m_register_info.GetNumRegisters() > 0; } -Error ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { +Status ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { // Make sure LLDB has an XML parser it can use first if (!XMLDocument::XMLEnabled()) - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS); if (log) @@ -4441,11 +4441,11 @@ Error ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { // request the loaded library list std::string raw; - lldb_private::Error lldberr; + lldb_private::Status lldberr; if (!comm.ReadExtFeature(ConstString("libraries-svr4"), ConstString(""), raw, lldberr)) - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); // parse the xml file in memory if (log) @@ -4453,11 +4453,11 @@ Error ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { XMLDocument doc; if (!doc.ParseMemory(raw.c_str(), raw.size(), "noname.xml")) - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); XMLNode root_element = doc.GetRootElement("library-list-svr4"); if (!root_element) - return Error(); + return Status(); // main link map structure llvm::StringRef main_lm = root_element.GetAttributeValue("main-lm"); @@ -4528,22 +4528,22 @@ Error ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { // request the loaded library list std::string raw; - lldb_private::Error lldberr; + lldb_private::Status lldberr; if (!comm.ReadExtFeature(ConstString("libraries"), ConstString(""), raw, lldberr)) - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); if (log) log->Printf("parsing: %s", raw.c_str()); XMLDocument doc; if (!doc.ParseMemory(raw.c_str(), raw.size(), "noname.xml")) - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); XMLNode root_element = doc.GetRootElement("library-list"); if (!root_element) - return Error(); + return Status(); root_element.ForEachChildElementWithName( "library", [log, &list](const XMLNode &library) -> bool { @@ -4584,10 +4584,10 @@ Error ProcessGDBRemote::GetLoadedModuleList(LoadedModuleInfoList &list) { log->Printf("found %" PRId32 " modules in total", (int)list.m_list.size()); } else { - return Error(0, ErrorType::eErrorTypeGeneric); + return Status(0, ErrorType::eErrorTypeGeneric); } - return Error(); + return Status(); } lldb::ModuleSP ProcessGDBRemote::LoadModuleAtAddress(const FileSpec &file, @@ -4686,15 +4686,15 @@ size_t ProcessGDBRemote::LoadModules() { return LoadModules(module_list); } -Error ProcessGDBRemote::GetFileLoadAddress(const FileSpec &file, - bool &is_loaded, - lldb::addr_t &load_addr) { +Status ProcessGDBRemote::GetFileLoadAddress(const FileSpec &file, + bool &is_loaded, + lldb::addr_t &load_addr) { is_loaded = false; load_addr = LLDB_INVALID_ADDRESS; std::string file_path = file.GetPath(false); if (file_path.empty()) - return Error("Empty file name specified"); + return Status("Empty file name specified"); StreamString packet; packet.PutCString("qFileLoadAddress:"); @@ -4704,27 +4704,28 @@ Error ProcessGDBRemote::GetFileLoadAddress(const FileSpec &file, if (m_gdb_comm.SendPacketAndWaitForResponse(packet.GetString(), response, false) != GDBRemoteCommunication::PacketResult::Success) - return Error("Sending qFileLoadAddress packet failed"); + return Status("Sending qFileLoadAddress packet failed"); if (response.IsErrorResponse()) { if (response.GetError() == 1) { // The file is not loaded into the inferior is_loaded = false; load_addr = LLDB_INVALID_ADDRESS; - return Error(); + return Status(); } - return Error( + return Status( "Fetching file load address from remote server returned an error"); } if (response.IsNormalResponse()) { is_loaded = true; load_addr = response.GetHexMaxU64(false, LLDB_INVALID_ADDRESS); - return Error(); + return Status(); } - return Error("Unknown error happened during sending the load address packet"); + return Status( + "Unknown error happened during sending the load address packet"); } void ProcessGDBRemote::ModulesDidLoad(ModuleList &module_list) { diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h index a1794d0f505..60f0464f86b 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h @@ -30,7 +30,7 @@ #include "lldb/Target/Process.h" #include "lldb/Target/Thread.h" #include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "lldb/Utility/StreamString.h" #include "lldb/Utility/StringExtractor.h" #include "lldb/Utility/StringList.h" @@ -78,25 +78,25 @@ public: //------------------------------------------------------------------ // Creating a new process, or attaching to an existing one //------------------------------------------------------------------ - Error WillLaunch(Module *module) override; + Status WillLaunch(Module *module) override; - Error DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override; + Status DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override; void DidLaunch() override; - Error WillAttachToProcessWithID(lldb::pid_t pid) override; + Status WillAttachToProcessWithID(lldb::pid_t pid) override; - Error WillAttachToProcessWithName(const char *process_name, - bool wait_for_launch) override; + Status WillAttachToProcessWithName(const char *process_name, + bool wait_for_launch) override; - Error DoConnectRemote(Stream *strm, llvm::StringRef remote_url) override; + Status DoConnectRemote(Stream *strm, llvm::StringRef remote_url) override; - Error WillLaunchOrAttach(); + Status WillLaunchOrAttach(); - Error DoAttachToProcessWithID(lldb::pid_t pid, - const ProcessAttachInfo &attach_info) override; + Status DoAttachToProcessWithID(lldb::pid_t pid, + const ProcessAttachInfo &attach_info) override; - Error + Status DoAttachToProcessWithName(const char *process_name, const ProcessAttachInfo &attach_info) override; @@ -112,19 +112,19 @@ public: //------------------------------------------------------------------ // Process Control //------------------------------------------------------------------ - Error WillResume() override; + Status WillResume() override; - Error DoResume() override; + Status DoResume() override; - Error DoHalt(bool &caused_stop) override; + Status DoHalt(bool &caused_stop) override; - Error DoDetach(bool keep_stopped) override; + Status DoDetach(bool keep_stopped) override; bool DetachRequiresHalt() override { return true; } - Error DoSignal(int signal) override; + Status DoSignal(int signal) override; - Error DoDestroy() override; + Status DoDestroy() override; void RefreshStateAfterStop() override; @@ -143,41 +143,41 @@ public: // Process Memory //------------------------------------------------------------------ size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) override; + Status &error) override; size_t DoWriteMemory(lldb::addr_t addr, const void *buf, size_t size, - Error &error) override; + Status &error) override; lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions, - Error &error) override; + Status &error) override; - Error GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo ®ion_info) override; + Status GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo ®ion_info) override; - Error DoDeallocateMemory(lldb::addr_t ptr) override; + Status DoDeallocateMemory(lldb::addr_t ptr) override; //------------------------------------------------------------------ // Process STDIO //------------------------------------------------------------------ - size_t PutSTDIN(const char *buf, size_t buf_size, Error &error) override; + size_t PutSTDIN(const char *buf, size_t buf_size, Status &error) override; //---------------------------------------------------------------------- // Process Breakpoints //---------------------------------------------------------------------- - Error EnableBreakpointSite(BreakpointSite *bp_site) override; + Status EnableBreakpointSite(BreakpointSite *bp_site) override; - Error DisableBreakpointSite(BreakpointSite *bp_site) override; + Status DisableBreakpointSite(BreakpointSite *bp_site) override; //---------------------------------------------------------------------- // Process Watchpoints //---------------------------------------------------------------------- - Error EnableWatchpoint(Watchpoint *wp, bool notify = true) override; + Status EnableWatchpoint(Watchpoint *wp, bool notify = true) override; - Error DisableWatchpoint(Watchpoint *wp, bool notify = true) override; + Status DisableWatchpoint(Watchpoint *wp, bool notify = true) override; - Error GetWatchpointSupportInfo(uint32_t &num) override; + Status GetWatchpointSupportInfo(uint32_t &num) override; - Error GetWatchpointSupportInfo(uint32_t &num, bool &after) override; + Status GetWatchpointSupportInfo(uint32_t &num, bool &after) override; bool StartNoticingNewThreads() override; @@ -185,7 +185,7 @@ public: GDBRemoteCommunicationClient &GetGDBRemote() { return m_gdb_comm; } - Error SendEventData(const char *data) override; + Status SendEventData(const char *data) override; //---------------------------------------------------------------------- // Override DidExit so we can disconnect from the remote GDB server @@ -207,8 +207,8 @@ public: size_t LoadModules() override; - Error GetFileLoadAddress(const FileSpec &file, bool &is_loaded, - lldb::addr_t &load_addr) override; + Status GetFileLoadAddress(const FileSpec &file, bool &is_loaded, + lldb::addr_t &load_addr) override; void ModulesDidLoad(ModuleList &module_list) override; @@ -216,7 +216,7 @@ public: GetLoadedDynamicLibrariesInfos(lldb::addr_t image_list_address, lldb::addr_t image_count) override; - Error + Status ConfigureStructuredData(const ConstString &type_name, const StructuredData::ObjectSP &config_sp) override; @@ -315,9 +315,9 @@ protected: bool UpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list) override; - Error EstablishConnectionIfNeeded(const ProcessInfo &process_info); + Status EstablishConnectionIfNeeded(const ProcessInfo &process_info); - Error LaunchAndConnectToDebugserver(const ProcessInfo &process_info); + Status LaunchAndConnectToDebugserver(const ProcessInfo &process_info); void KillDebugserverProcess(); @@ -379,7 +379,7 @@ protected: void DidLaunchOrAttach(ArchSpec &process_arch); - Error ConnectToDebugserver(llvm::StringRef host_port); + Status ConnectToDebugserver(llvm::StringRef host_port); const char *GetDispatchQueueNameForThread(lldb::addr_t thread_dispatch_qaddr, std::string &dispatch_queue_name); @@ -390,14 +390,14 @@ protected: bool GetGDBServerRegisterInfo(ArchSpec &arch); // Query remote GDBServer for a detailed loaded library list - Error GetLoadedModuleList(LoadedModuleInfoList &); + Status GetLoadedModuleList(LoadedModuleInfoList &); lldb::ModuleSP LoadModuleAtAddress(const FileSpec &file, lldb::addr_t link_map, lldb::addr_t base_addr, bool value_is_offset); - Error UpdateAutomaticSignalFiltering() override; + Status UpdateAutomaticSignalFiltering() override; private: //------------------------------------------------------------------ diff --git a/lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp b/lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp index 3b636b9795f..a6178500dfc 100644 --- a/lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp +++ b/lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp @@ -97,8 +97,8 @@ bool ProcessMachCore::CanDebug(lldb::TargetSP target_sp, // ModuleSpecList::FindMatchingModuleSpec // enforces a strict arch mach. ModuleSpec core_module_spec(m_core_file); - Error error(ModuleList::GetSharedModule(core_module_spec, m_core_module_sp, - NULL, NULL, NULL)); + Status error(ModuleList::GetSharedModule(core_module_spec, m_core_module_sp, + NULL, NULL, NULL)); if (m_core_module_sp) { ObjectFile *core_objfile = m_core_module_sp->GetObjectFile(); @@ -143,7 +143,7 @@ bool ProcessMachCore::GetDynamicLoaderAddress(lldb::addr_t addr) { Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER | LIBLLDB_LOG_PROCESS)); llvm::MachO::mach_header header; - Error error; + Status error; if (DoReadMemory(addr, &header, sizeof(header), error) != sizeof(header)) return false; if (header.magic == llvm::MachO::MH_CIGAM || @@ -200,10 +200,10 @@ bool ProcessMachCore::GetDynamicLoaderAddress(lldb::addr_t addr) { //---------------------------------------------------------------------- // Process Control //---------------------------------------------------------------------- -Error ProcessMachCore::DoLoadCore() { +Status ProcessMachCore::DoLoadCore() { Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER | LIBLLDB_LOG_PROCESS)); - Error error; + Status error; if (!m_core_module_sp) { error.SetErrorString("invalid core module"); return error; @@ -514,7 +514,7 @@ void ProcessMachCore::RefreshStateAfterStop() { // SetThreadStopInfo (m_last_stop_packet); } -Error ProcessMachCore::DoDestroy() { return Error(); } +Status ProcessMachCore::DoDestroy() { return Status(); } //------------------------------------------------------------------ // Process Queries @@ -528,14 +528,14 @@ bool ProcessMachCore::WarnBeforeDetach() const { return false; } // Process Memory //------------------------------------------------------------------ size_t ProcessMachCore::ReadMemory(addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { // Don't allow the caching that lldb_private::Process::ReadMemory does // since in core files we have it all cached our our core file anyway. return DoReadMemory(addr, buf, size, error); } size_t ProcessMachCore::DoReadMemory(addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { ObjectFile *core_objfile = m_core_module_sp->GetObjectFile(); size_t bytes_read = 0; @@ -589,8 +589,8 @@ size_t ProcessMachCore::DoReadMemory(addr_t addr, void *buf, size_t size, return bytes_read; } -Error ProcessMachCore::GetMemoryRegionInfo(addr_t load_addr, - MemoryRegionInfo ®ion_info) { +Status ProcessMachCore::GetMemoryRegionInfo(addr_t load_addr, + MemoryRegionInfo ®ion_info) { region_info.Clear(); const VMRangeToPermissions::Entry *permission_entry = m_core_range_infos.FindEntryThatContainsOrFollows(load_addr); @@ -617,7 +617,7 @@ Error ProcessMachCore::GetMemoryRegionInfo(addr_t load_addr, region_info.SetExecutable(MemoryRegionInfo::eNo); region_info.SetMapped(MemoryRegionInfo::eNo); } - return Error(); + return Status(); } region_info.GetRange().SetRangeBase(load_addr); @@ -626,7 +626,7 @@ Error ProcessMachCore::GetMemoryRegionInfo(addr_t load_addr, region_info.SetWritable(MemoryRegionInfo::eNo); region_info.SetExecutable(MemoryRegionInfo::eNo); region_info.SetMapped(MemoryRegionInfo::eNo); - return Error(); + return Status(); } void ProcessMachCore::Clear() { m_thread_list.Clear(); } diff --git a/lldb/source/Plugins/Process/mach-core/ProcessMachCore.h b/lldb/source/Plugins/Process/mach-core/ProcessMachCore.h index 99bb4a60ff3..101df6b7911 100644 --- a/lldb/source/Plugins/Process/mach-core/ProcessMachCore.h +++ b/lldb/source/Plugins/Process/mach-core/ProcessMachCore.h @@ -19,7 +19,7 @@ // Project includes #include "lldb/Target/Process.h" #include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" class ThreadKDP; @@ -54,7 +54,7 @@ public: //------------------------------------------------------------------ // Creating a new process, or attaching to an existing one //------------------------------------------------------------------ - lldb_private::Error DoLoadCore() override; + lldb_private::Status DoLoadCore() override; lldb_private::DynamicLoader *GetDynamicLoader() override; @@ -68,7 +68,7 @@ public: //------------------------------------------------------------------ // Process Control //------------------------------------------------------------------ - lldb_private::Error DoDestroy() override; + lldb_private::Status DoDestroy() override; void RefreshStateAfterStop() override; @@ -83,12 +83,12 @@ public: // Process Memory //------------------------------------------------------------------ size_t ReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Error &error) override; + lldb_private::Status &error) override; - lldb_private::Error + lldb_private::Status GetMemoryRegionInfo(lldb::addr_t load_addr, lldb_private::MemoryRegionInfo ®ion_info) override; diff --git a/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp b/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp index 37b3709c09c..36350fdb639 100644 --- a/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp +++ b/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp @@ -45,7 +45,7 @@ MinidumpParser::Create(const lldb::DataBufferSP &data_buf_sp) { } const MinidumpDirectory *directory = nullptr; - Error error; + Status error; llvm::ArrayRef<uint8_t> directory_data( data_buf_sp->GetBytes() + directory_list_offset, sizeof(MinidumpDirectory) * header->streams_count); @@ -126,7 +126,7 @@ MinidumpParser::GetThreadContextWow64(const MinidumpThread &td) { return {}; const TEB64 *wow64teb; - Error error = consumeObject(teb_mem, wow64teb); + Status error = consumeObject(teb_mem, wow64teb); if (error.Fail()) return {}; diff --git a/lldb/source/Plugins/Process/minidump/MinidumpParser.h b/lldb/source/Plugins/Process/minidump/MinidumpParser.h index 189aeb3d64e..df6deb482af 100644 --- a/lldb/source/Plugins/Process/minidump/MinidumpParser.h +++ b/lldb/source/Plugins/Process/minidump/MinidumpParser.h @@ -17,7 +17,7 @@ // Other libraries and framework includes #include "lldb/Core/ArchSpec.h" #include "lldb/Utility/DataBuffer.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" diff --git a/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp b/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp index 863d124a7cc..24ce3f94c09 100644 --- a/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp +++ b/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp @@ -19,7 +19,7 @@ using namespace minidump; const MinidumpHeader *MinidumpHeader::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpHeader *header = nullptr; - Error error = consumeObject(data, header); + Status error = consumeObject(data, header); const MinidumpHeaderConstants signature = static_cast<const MinidumpHeaderConstants>( @@ -45,7 +45,7 @@ lldb_private::minidump::parseMinidumpString(llvm::ArrayRef<uint8_t> &data) { std::string result; const uint32_t *source_length; - Error error = consumeObject(data, source_length); + Status error = consumeObject(data, source_length); if (error.Fail() || *source_length > data.size() || *source_length % 2 != 0) return llvm::None; @@ -71,7 +71,7 @@ lldb_private::minidump::parseMinidumpString(llvm::ArrayRef<uint8_t> &data) { // MinidumpThread const MinidumpThread *MinidumpThread::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpThread *thread = nullptr; - Error error = consumeObject(data, thread); + Status error = consumeObject(data, thread); if (error.Fail()) return nullptr; @@ -81,7 +81,7 @@ const MinidumpThread *MinidumpThread::Parse(llvm::ArrayRef<uint8_t> &data) { llvm::ArrayRef<MinidumpThread> MinidumpThread::ParseThreadList(llvm::ArrayRef<uint8_t> &data) { const llvm::support::ulittle32_t *thread_count; - Error error = consumeObject(data, thread_count); + Status error = consumeObject(data, thread_count); if (error.Fail() || *thread_count * sizeof(MinidumpThread) > data.size()) return {}; @@ -93,7 +93,7 @@ MinidumpThread::ParseThreadList(llvm::ArrayRef<uint8_t> &data) { const MinidumpSystemInfo * MinidumpSystemInfo::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpSystemInfo *system_info; - Error error = consumeObject(data, system_info); + Status error = consumeObject(data, system_info); if (error.Fail()) return nullptr; @@ -103,7 +103,7 @@ MinidumpSystemInfo::Parse(llvm::ArrayRef<uint8_t> &data) { // MinidumpMiscInfo const MinidumpMiscInfo *MinidumpMiscInfo::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpMiscInfo *misc_info; - Error error = consumeObject(data, misc_info); + Status error = consumeObject(data, misc_info); if (error.Fail()) return nullptr; @@ -147,7 +147,7 @@ lldb::pid_t LinuxProcStatus::GetPid() const { return pid; } // Module stuff const MinidumpModule *MinidumpModule::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpModule *module = nullptr; - Error error = consumeObject(data, module); + Status error = consumeObject(data, module); if (error.Fail()) return nullptr; @@ -158,7 +158,7 @@ llvm::ArrayRef<MinidumpModule> MinidumpModule::ParseModuleList(llvm::ArrayRef<uint8_t> &data) { const llvm::support::ulittle32_t *modules_count; - Error error = consumeObject(data, modules_count); + Status error = consumeObject(data, modules_count); if (error.Fail() || *modules_count * sizeof(MinidumpModule) > data.size()) return {}; @@ -170,7 +170,7 @@ MinidumpModule::ParseModuleList(llvm::ArrayRef<uint8_t> &data) { const MinidumpExceptionStream * MinidumpExceptionStream::Parse(llvm::ArrayRef<uint8_t> &data) { const MinidumpExceptionStream *exception_stream = nullptr; - Error error = consumeObject(data, exception_stream); + Status error = consumeObject(data, exception_stream); if (error.Fail()) return nullptr; @@ -180,7 +180,7 @@ MinidumpExceptionStream::Parse(llvm::ArrayRef<uint8_t> &data) { llvm::ArrayRef<MinidumpMemoryDescriptor> MinidumpMemoryDescriptor::ParseMemoryList(llvm::ArrayRef<uint8_t> &data) { const llvm::support::ulittle32_t *mem_ranges_count; - Error error = consumeObject(data, mem_ranges_count); + Status error = consumeObject(data, mem_ranges_count); if (error.Fail() || *mem_ranges_count * sizeof(MinidumpMemoryDescriptor) > data.size()) return {}; @@ -193,7 +193,7 @@ MinidumpMemoryDescriptor::ParseMemoryList(llvm::ArrayRef<uint8_t> &data) { std::pair<llvm::ArrayRef<MinidumpMemoryDescriptor64>, uint64_t> MinidumpMemoryDescriptor64::ParseMemory64List(llvm::ArrayRef<uint8_t> &data) { const llvm::support::ulittle64_t *mem_ranges_count; - Error error = consumeObject(data, mem_ranges_count); + Status error = consumeObject(data, mem_ranges_count); if (error.Fail() || *mem_ranges_count * sizeof(MinidumpMemoryDescriptor64) > data.size()) return {}; @@ -213,7 +213,7 @@ MinidumpMemoryDescriptor64::ParseMemory64List(llvm::ArrayRef<uint8_t> &data) { std::vector<const MinidumpMemoryInfo *> MinidumpMemoryInfo::ParseMemoryInfoList(llvm::ArrayRef<uint8_t> &data) { const MinidumpMemoryInfoListHeader *header; - Error error = consumeObject(data, header); + Status error = consumeObject(data, header); if (error.Fail() || header->size_of_header < sizeof(MinidumpMemoryInfoListHeader) || header->size_of_entry < sizeof(MinidumpMemoryInfo)) diff --git a/lldb/source/Plugins/Process/minidump/MinidumpTypes.h b/lldb/source/Plugins/Process/minidump/MinidumpTypes.h index 42de7eaaca0..6de4f55a769 100644 --- a/lldb/source/Plugins/Process/minidump/MinidumpTypes.h +++ b/lldb/source/Plugins/Process/minidump/MinidumpTypes.h @@ -13,7 +13,7 @@ // Project includes // Other libraries and framework includes -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/BitmaskEnum.h" @@ -158,8 +158,8 @@ enum class MinidumpMiscInfoFlags : uint32_t { }; template <typename T> -Error consumeObject(llvm::ArrayRef<uint8_t> &Buffer, const T *&Object) { - Error error; +Status consumeObject(llvm::ArrayRef<uint8_t> &Buffer, const T *&Object) { + Status error; if (Buffer.size() < sizeof(T)) { error.SetErrorString("Insufficient buffer!"); return error; diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp index f3f4664ad6e..d4d65c044ea 100644 --- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -113,8 +113,8 @@ void ProcessMinidump::Terminate() { PluginManager::UnregisterPlugin(ProcessMinidump::CreateInstance); } -Error ProcessMinidump::DoLoadCore() { - Error error; +Status ProcessMinidump::DoLoadCore() { + Status error; m_thread_list = m_minidump_parser.GetThreads(); m_active_exception = m_minidump_parser.GetExceptionStream(); @@ -141,7 +141,7 @@ ConstString ProcessMinidump::GetPluginName() { return GetPluginNameStatic(); } uint32_t ProcessMinidump::GetPluginVersion() { return 1; } -Error ProcessMinidump::DoDestroy() { return Error(); } +Status ProcessMinidump::DoDestroy() { return Status(); } void ProcessMinidump::RefreshStateAfterStop() { if (!m_active_exception) @@ -184,14 +184,14 @@ bool ProcessMinidump::IsAlive() { return true; } bool ProcessMinidump::WarnBeforeDetach() const { return false; } size_t ProcessMinidump::ReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { // Don't allow the caching that lldb_private::Process::ReadMemory does // since we have it all cached in our dump file anyway. return DoReadMemory(addr, buf, size, error); } size_t ProcessMinidump::DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) { + Status &error) { llvm::ArrayRef<uint8_t> mem = m_minidump_parser.GetMemory(addr, size); if (mem.empty()) { @@ -215,9 +215,9 @@ ArchSpec ProcessMinidump::GetArchitecture() { return ArchSpec(triple); } -Error ProcessMinidump::GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) { - Error error; +Status ProcessMinidump::GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) { + Status error; auto info = m_minidump_parser.GetMemoryRegionInfo(load_addr); if (!info) { error.SetErrorString("No valid MemoryRegionInfo found!"); @@ -278,7 +278,7 @@ void ProcessMinidump::ReadModuleList() { const auto file_spec = FileSpec(name.getValue(), true); ModuleSpec module_spec = file_spec; - Error error; + Status error; lldb::ModuleSP module_sp = GetTarget().GetSharedModule(module_spec, &error); if (!module_sp || error.Fail()) { continue; diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.h b/lldb/source/Plugins/Process/minidump/ProcessMinidump.h index 62407f92755..d5c46be9735 100644 --- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.h +++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.h @@ -19,7 +19,7 @@ #include "lldb/Target/StopInfo.h" #include "lldb/Target/Target.h" #include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Error.h" +#include "lldb/Utility/Status.h" #include "llvm/Support/Format.h" #include "llvm/Support/raw_ostream.h" @@ -53,7 +53,7 @@ public: bool CanDebug(lldb::TargetSP target_sp, bool plugin_specified_by_name) override; - Error DoLoadCore() override; + Status DoLoadCore() override; DynamicLoader *GetDynamicLoader() override; @@ -61,7 +61,7 @@ public: uint32_t GetPluginVersion() override; - Error DoDestroy() override; + Status DoDestroy() override; void RefreshStateAfterStop() override; @@ -70,15 +70,15 @@ public: bool WarnBeforeDetach() const override; size_t ReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) override; + Status &error) override; size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - Error &error) override; + Status &error) override; ArchSpec GetArchitecture(); - Error GetMemoryRegionInfo(lldb::addr_t load_addr, - MemoryRegionInfo &range_info) override; + Status GetMemoryRegionInfo(lldb::addr_t load_addr, + MemoryRegionInfo &range_info) override; bool GetProcessInfo(ProcessInstanceInfo &info) override; |