diff options
Diffstat (limited to 'source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp')
| -rw-r--r-- | source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 24 | 
1 files changed, 10 insertions, 14 deletions
diff --git a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index be11dd9bc7ec7..35d02c15ab85b 100644 --- a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -29,7 +29,6 @@  #include <sstream>  #include "lldb/Breakpoint/Watchpoint.h" -#include "lldb/Core/ArchSpec.h"  #include "lldb/Core/Debugger.h"  #include "lldb/Core/Module.h"  #include "lldb/Core/ModuleSpec.h" @@ -244,7 +243,7 @@ bool ProcessGDBRemote::CanDebug(lldb::TargetSP target_sp,  //----------------------------------------------------------------------  ProcessGDBRemote::ProcessGDBRemote(lldb::TargetSP target_sp,                                     ListenerSP listener_sp) -    : Process(target_sp, listener_sp), m_flags(0), m_gdb_comm(), +    : Process(target_sp, listener_sp),        m_debugserver_pid(LLDB_INVALID_PROCESS_ID), m_last_stop_packet_mutex(),        m_register_info(),        m_async_broadcaster(NULL, "lldb.process.gdb-remote.async-broadcaster"), @@ -818,7 +817,7 @@ Status ProcessGDBRemote::DoLaunch(Module *exe_module,    if (object_file) {      error = EstablishConnectionIfNeeded(launch_info);      if (error.Success()) { -      lldb_utility::PseudoTerminal pty; +      PseudoTerminal pty;        const bool disable_stdio = (launch_flags & eLaunchFlagDisableSTDIO) != 0;        PlatformSP platform_sp(GetTarget().GetPlatform()); @@ -947,8 +946,7 @@ Status ProcessGDBRemote::DoLaunch(Module *exe_module,          SetPrivateState(SetThreadStopInfo(response));          if (!disable_stdio) { -          if (pty.GetMasterFileDescriptor() != -              lldb_utility::PseudoTerminal::invalid_fd) +          if (pty.GetMasterFileDescriptor() != PseudoTerminal::invalid_fd)              SetSTDIOFileDescriptor(pty.ReleaseMasterFileDescriptor());          }        } @@ -3255,7 +3253,6 @@ Status ProcessGDBRemote::DisableWatchpoint(Watchpoint *wp, bool notify) {  }  void ProcessGDBRemote::Clear() { -  m_flags = 0;    m_thread_list_real.Clear();    m_thread_list.Clear();  } @@ -3289,7 +3286,7 @@ ProcessGDBRemote::EstablishConnectionIfNeeded(const ProcessInfo &process_info) {    }    return error;  } -#if defined(__APPLE__) +#if !defined(_WIN32)  #define USE_SOCKETPAIR_FOR_LOCAL_CONNECTION 1  #endif @@ -3333,8 +3330,8 @@ Status ProcessGDBRemote::LaunchAndConnectToDebugserver(      lldb_utility::CleanUp<int, int> our_socket(-1, -1, close);      lldb_utility::CleanUp<int, int> gdb_socket(-1, -1, close); -    // Use a socketpair on Apple for now until other platforms can verify it -    // works and is fast enough +    // Use a socketpair on non-Windows systems for security and performance +    // reasons.      {        int sockets[2]; /* the pair of socket descriptors */        if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) == -1) { @@ -4168,7 +4165,6 @@ struct GdbServerTargetInfo {    std::string osabi;    stringVec includes;    RegisterSetMap reg_set_map; -  XMLNode feature_node;  };  bool ParseRegisters(XMLNode feature_node, GdbServerTargetInfo &target_info, @@ -4374,8 +4370,8 @@ bool ProcessGDBRemote::GetGDBServerRegisterInfo(ArchSpec &arch_to_use) {      XMLNode target_node = xml_document.GetRootElement("target");      if (target_node) { -      XMLNode feature_node; -      target_node.ForEachChildElement([&target_info, &feature_node]( +      std::vector<XMLNode> feature_nodes; +      target_node.ForEachChildElement([&target_info, &feature_nodes](                                            const XMLNode &node) -> bool {          llvm::StringRef name = node.GetName();          if (name == "architecture") { @@ -4387,7 +4383,7 @@ bool ProcessGDBRemote::GetGDBServerRegisterInfo(ArchSpec &arch_to_use) {            if (!href.empty())              target_info.includes.push_back(href.str());          } else if (name == "feature") { -          feature_node = node; +          feature_nodes.push_back(node);          } else if (name == "groups") {            node.ForEachChildElementWithName(                "group", [&target_info](const XMLNode &node) -> bool { @@ -4423,7 +4419,7 @@ bool ProcessGDBRemote::GetGDBServerRegisterInfo(ArchSpec &arch_to_use) {        // set the Target's architecture yet, so the ABI is also potentially        // incorrect.        ABISP abi_to_use_sp = ABI::FindPlugin(shared_from_this(), arch_to_use); -      if (feature_node) { +      for (auto &feature_node : feature_nodes) {          ParseRegisters(feature_node, target_info, this->m_register_info,                         abi_to_use_sp, cur_reg_num, reg_offset);        }  | 
