diff options
| -rw-r--r-- | lldb/source/Plugins/Process/Windows/ProcessWindows.cpp | 20 | ||||
| -rw-r--r-- | lldb/source/Plugins/Process/Windows/ProcessWindows.h | 72 | ||||
| -rw-r--r-- | lldb/test/lang/cpp/virtual/TestVirtual.py | 1 | ||||
| -rw-r--r-- | lldb/test/python_api/process/io/TestProcessIO.py | 15 | 
4 files changed, 63 insertions, 45 deletions
diff --git a/lldb/source/Plugins/Process/Windows/ProcessWindows.cpp b/lldb/source/Plugins/Process/Windows/ProcessWindows.cpp index 3522a959c5e..c55aa7116a4 100644 --- a/lldb/source/Plugins/Process/Windows/ProcessWindows.cpp +++ b/lldb/source/Plugins/Process/Windows/ProcessWindows.cpp @@ -121,6 +121,26 @@ ProcessWindows::GetPluginDescriptionStatic()      return "Process plugin for Windows";  } +size_t +ProcessWindows::GetSTDOUT(char *buf, size_t buf_size, Error &error) +{ +    error.SetErrorString("GetSTDOUT unsupported on Windows"); +    return 0; +} + +size_t +ProcessWindows::GetSTDERR(char *buf, size_t buf_size, Error &error) +{ +    error.SetErrorString("GetSTDERR unsupported on Windows"); +    return 0; +} + +size_t +ProcessWindows::PutSTDIN(const char *buf, size_t buf_size, Error &error) +{ +    error.SetErrorString("PutSTDIN unsupported on Windows"); +    return 0; +}  bool  ProcessWindows::UpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list) diff --git a/lldb/source/Plugins/Process/Windows/ProcessWindows.h b/lldb/source/Plugins/Process/Windows/ProcessWindows.h index 8e529aba298..e482f9f18d0 100644 --- a/lldb/source/Plugins/Process/Windows/ProcessWindows.h +++ b/lldb/source/Plugins/Process/Windows/ProcessWindows.h @@ -63,58 +63,50 @@ public:      ~ProcessWindows(); -    virtual lldb_private::Error DoDetach(bool keep_stopped) override; +    // lldb_private::Process overrides +    lldb_private::ConstString GetPluginName() override; +    uint32_t GetPluginVersion() override; -    virtual bool +    size_t GetSTDOUT(char *buf, size_t buf_size, lldb_private::Error &error) override; +    size_t GetSTDERR(char *buf, size_t buf_size, lldb_private::Error &error) override; +    size_t PutSTDIN(const char *buf, size_t buf_size, lldb_private::Error &error) override; + +    lldb_private::Error DoDetach(bool keep_stopped) override; +    lldb_private::Error DoLaunch(lldb_private::Module *exe_module, lldb_private::ProcessLaunchInfo &launch_info) override; +    lldb_private::Error DoResume() override; +    lldb_private::Error DoDestroy() override; +    lldb_private::Error DoHalt(bool &caused_stop) override; + +    void RefreshStateAfterStop() override; +    lldb::addr_t GetImageInfoAddress() override; + +    bool CanDebug(lldb_private::Target &target, bool plugin_specified_by_name) override; +    bool      DetachRequiresHalt() override      {          return true;      } - -    virtual bool UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list) override; - -    virtual lldb_private::Error DoLaunch(lldb_private::Module *exe_module, lldb_private::ProcessLaunchInfo &launch_info) override; - -    virtual lldb_private::Error DoResume() override; - -    //------------------------------------------------------------------ -    // PluginInterface protocol -    //------------------------------------------------------------------ -    virtual lldb_private::ConstString GetPluginName() override; - -    virtual uint32_t GetPluginVersion() override; - -    virtual bool CanDebug(lldb_private::Target &target, bool plugin_specified_by_name) override; - -    virtual lldb_private::Error DoDestroy() override; - -    virtual bool +    bool      DestroyRequiresHalt() override      {          return false;      } +    bool UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list) override; +    bool IsAlive() override; -    virtual void RefreshStateAfterStop() override; - -    virtual bool IsAlive() override; - -    virtual lldb_private::Error DoHalt(bool &caused_stop) override; - -    virtual lldb::addr_t GetImageInfoAddress() override; - -    virtual size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, lldb_private::Error &error) override; -    virtual size_t DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, lldb_private::Error &error) override; +    size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, lldb_private::Error &error) override; +    size_t DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, lldb_private::Error &error) override;      // IDebugDelegate overrides. -    virtual void OnExitProcess(uint32_t exit_code) override; -    virtual void OnDebuggerConnected(lldb::addr_t image_base) override; -    virtual ExceptionResult OnDebugException(bool first_chance, const lldb_private::ExceptionRecord &record) override; -    virtual void OnCreateThread(const lldb_private::HostThread &thread) override; -    virtual void OnExitThread(const lldb_private::HostThread &thread) override; -    virtual void OnLoadDll(const lldb_private::ModuleSpec &module_spec, lldb::addr_t module_addr) override; -    virtual void OnUnloadDll(lldb::addr_t module_addr) override; -    virtual void OnDebugString(const std::string &string) override; -    virtual void OnDebuggerError(const lldb_private::Error &error, uint32_t type) override; +    void OnExitProcess(uint32_t exit_code) override; +    void OnDebuggerConnected(lldb::addr_t image_base) override; +    ExceptionResult OnDebugException(bool first_chance, const lldb_private::ExceptionRecord &record) override; +    void OnCreateThread(const lldb_private::HostThread &thread) override; +    void OnExitThread(const lldb_private::HostThread &thread) override; +    void OnLoadDll(const lldb_private::ModuleSpec &module_spec, lldb::addr_t module_addr) override; +    void OnUnloadDll(lldb::addr_t module_addr) override; +    void OnDebugString(const std::string &string) override; +    void OnDebuggerError(const lldb_private::Error &error, uint32_t type) override;    private:      // Data for the active debugging session. diff --git a/lldb/test/lang/cpp/virtual/TestVirtual.py b/lldb/test/lang/cpp/virtual/TestVirtual.py index fd60da65247..e2c09cd338a 100644 --- a/lldb/test/lang/cpp/virtual/TestVirtual.py +++ b/lldb/test/lang/cpp/virtual/TestVirtual.py @@ -22,6 +22,7 @@ class CppVirtualMadness(TestBase):      # Assert message.      PRINTF_OUTPUT_GROKKED = "The printf output from compiled code is parsed correctly" +    @unittest2.skipIf(sys.platform.startswith("win32"), "Process::GetSTDOUT unsupported on Windows.  This test should be re-written to use stdout re-direction")      @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")      def test_virtual_madness_dsym(self):          """Test that expression works correctly with virtual inheritance as well as virtual function.""" diff --git a/lldb/test/python_api/process/io/TestProcessIO.py b/lldb/test/python_api/process/io/TestProcessIO.py index f363dbf191d..583e8b2b76b 100644 --- a/lldb/test/python_api/process/io/TestProcessIO.py +++ b/lldb/test/python_api/process/io/TestProcessIO.py @@ -10,7 +10,7 @@ class ProcessIOTestCase(TestBase):      mydir = TestBase.compute_mydir(__file__) -    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +    @unittest2.skipUnless(sys.platform.startswith("darwin"), "dsym requires Darwin")      @python_api_test      @dsym_test      def test_stdin_by_api_with_dsym(self): @@ -18,6 +18,7 @@ class ProcessIOTestCase(TestBase):          self.buildDsym()          self.do_stdin_by_api() +    @unittest2.skipIf(sys.platform.startswith("win32"), "stdio manipulation unsupported on Windows")      @python_api_test      @dwarf_test      def test_stdin_by_api_with_dwarf(self): @@ -25,7 +26,7 @@ class ProcessIOTestCase(TestBase):          self.buildDwarf()          self.do_stdin_by_api() -    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +    @unittest2.skipUnless(sys.platform.startswith("darwin"), "dsym requires Darwin")      @python_api_test      @dsym_test      def test_stdin_redirection_with_dsym(self): @@ -33,6 +34,7 @@ class ProcessIOTestCase(TestBase):          self.buildDsym()          self.do_stdin_redirection() +    @unittest2.skipIf(sys.platform.startswith("win32"), "stdio manipulation unsupported on Windows")      @python_api_test      @dwarf_test      def test_stdin_redirection_with_dwarf(self): @@ -40,7 +42,7 @@ class ProcessIOTestCase(TestBase):          self.buildDwarf()          self.do_stdin_redirection() -    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +    @unittest2.skipUnless(sys.platform.startswith("darwin"), "dsym requires Darwin")      @python_api_test      @dsym_test      def test_stdout_redirection_with_dsym(self): @@ -48,6 +50,7 @@ class ProcessIOTestCase(TestBase):          self.buildDsym()          self.do_stdout_redirection() +    @unittest2.skipIf(sys.platform.startswith("win32"), "stdio manipulation unsupported on Windows")      @python_api_test      @dwarf_test      def test_stdout_redirection_with_dwarf(self): @@ -55,7 +58,7 @@ class ProcessIOTestCase(TestBase):          self.buildDwarf()          self.do_stdout_redirection() -    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +    @unittest2.skipUnless(sys.platform.startswith("darwin"), "dsym requires Darwin")      @python_api_test      @dsym_test      def test_stderr_redirection_with_dsym(self): @@ -63,6 +66,7 @@ class ProcessIOTestCase(TestBase):          self.buildDsym()          self.do_stderr_redirection() +    @unittest2.skipIf(sys.platform.startswith("win32"), "stdio manipulation unsupported on Windows")      @python_api_test      @dwarf_test      def test_stderr_redirection_with_dwarf(self): @@ -70,7 +74,7 @@ class ProcessIOTestCase(TestBase):          self.buildDwarf()          self.do_stderr_redirection() -    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +    @unittest2.skipUnless(sys.platform.startswith("darwin"), "dsym requires Darwin")      @python_api_test      @dsym_test      def test_stdout_stderr_redirection_with_dsym(self): @@ -78,6 +82,7 @@ class ProcessIOTestCase(TestBase):          self.buildDsym()          self.do_stdout_stderr_redirection() +    # This one actually should work on Windows, since it doesn't call GetSTDOUT, GetSTDERR, or PutSTDIN.      @python_api_test      @dwarf_test      def test_stdout_stderr_redirection_with_dwarf(self):  | 

