From: Michał Górny Date: Wed, 1 Sep 2021 06:53:11 +0000 (+0200) Subject: Revert "[lldb] [gdb-remote client] Remove breakpoints throughout vfork" X-Git-Tag: upstream/15.0.7~32571 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ceccbb8145c87d62c4a796d7b2a380083cf32331;p=platform%2Fupstream%2Fllvm.git Revert "[lldb] [gdb-remote client] Remove breakpoints throughout vfork" This reverts commit 199344d832c1bed1d75b1db2c1493e5a3e5c5544. It caused regressions on arm, as reported by lldb-arm-ubuntu buildbot. --- diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index aa5b676..f81e2ac 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -265,8 +265,7 @@ ProcessGDBRemote::ProcessGDBRemote(lldb::TargetSP target_sp, m_waiting_for_attach(false), m_destroy_tried_resuming(false), m_command_sp(), m_breakpoint_pc_offset(0), m_initial_tid(LLDB_INVALID_THREAD_ID), m_replay_mode(false), - m_allow_flash_writes(false), m_erased_flash_ranges(), - m_vfork_in_progress(false) { + m_allow_flash_writes(false), m_erased_flash_ranges() { m_async_broadcaster.SetEventName(eBroadcastBitAsyncThreadShouldExit, "async thread should exit"); m_async_broadcaster.SetEventName(eBroadcastBitAsyncContinue, @@ -5535,13 +5534,6 @@ void ProcessGDBRemote::DidFork(lldb::pid_t child_pid, lldb::tid_t child_tid) { void ProcessGDBRemote::DidVFork(lldb::pid_t child_pid, lldb::tid_t child_tid) { Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); - assert(!m_vfork_in_progress); - m_vfork_in_progress = true; - - // Disable all software breakpoints for the duration of vfork. - if (m_gdb_comm.SupportsGDBStoppointPacket(eBreakpointSoftware)) - DidForkSwitchSoftwareBreakpoints(false); - LLDB_LOG(log, "Detaching forked child {0}", child_pid); Status error = m_gdb_comm.Detach(false, child_pid); if (error.Fail()) { @@ -5551,12 +5543,3 @@ void ProcessGDBRemote::DidVFork(lldb::pid_t child_pid, lldb::tid_t child_tid) { return; } } - -void ProcessGDBRemote::DidVForkDone() { - assert(m_vfork_in_progress); - m_vfork_in_progress = false; - - // Reenable all software breakpoints that were enabled before vfork. - if (m_gdb_comm.SupportsGDBStoppointPacket(eBreakpointSoftware)) - DidForkSwitchSoftwareBreakpoints(true); -} diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h index ae5fce1..70b3ca1 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h @@ -232,7 +232,6 @@ public: void DidFork(lldb::pid_t child_pid, lldb::tid_t child_tid) override; void DidVFork(lldb::pid_t child_pid, lldb::tid_t child_tid) override; - void DidVForkDone() override; protected: friend class ThreadGDBRemote; @@ -297,8 +296,6 @@ protected: using FlashRange = FlashRangeVector::Entry; FlashRangeVector m_erased_flash_ranges; - bool m_vfork_in_progress; - // Accessors bool IsRunning(lldb::StateType state) { return state == lldb::eStateRunning || IsStepping(state); diff --git a/lldb/test/Shell/Subprocess/vfork-follow-parent-softbp.test b/lldb/test/Shell/Subprocess/vfork-follow-parent-softbp.test deleted file mode 100644 index f158d1a..0000000 --- a/lldb/test/Shell/Subprocess/vfork-follow-parent-softbp.test +++ /dev/null @@ -1,13 +0,0 @@ -# REQUIRES: native -# UNSUPPORTED: system-darwin -# UNSUPPORTED: system-windows -# RUN: %clangxx_host %p/Inputs/fork.cpp -DTEST_FORK=vfork -o %t -# RUN: %lldb -b -s %s %t | FileCheck %s -b parent_func -b child_func -process launch -# CHECK-NOT: function run in parent -# CHECK: stop reason = breakpoint -continue -# CHECK: function run in parent -# CHECK: child exited: 0