Revert 821ee172cdcd7196b6130321b53b6cc66bf1222b
authorMed Ismail Bennani <medismail.bennani@gmail.com>
Thu, 19 May 2022 02:07:47 +0000 (19:07 -0700)
committerMed Ismail Bennani <medismail.bennani@gmail.com>
Thu, 19 May 2022 02:07:47 +0000 (19:07 -0700)
This reverts commit 821ee172cdcd7196b6130321b53b6cc66bf1222b, that
landed by mistake.

lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.h
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h

index 043504b..033394b 100644 (file)
@@ -611,8 +611,6 @@ ModuleSP DynamicLoaderDarwin::GetDYLDModule() {
   return dyld_sp;
 }
 
-void DynamicLoaderDarwin::ClearDYLDModule() { m_dyld_module_wp.reset(); }
-
 bool DynamicLoaderDarwin::AddModulesUsingImageInfos(
     ImageInfo::collection &image_infos) {
   std::lock_guard<std::recursive_mutex> guard(m_mutex);
index 5a72de2..1b705e9 100644 (file)
@@ -71,8 +71,6 @@ protected:
 
   lldb::ModuleSP GetDYLDModule();
 
-  void ClearDYLDModule();
-
   class Segment {
   public:
     Segment() : name() {}
index 51ce96d..e6bcc4c 100644 (file)
@@ -14,7 +14,6 @@
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Symbol/SymbolVendor.h"
 #include "lldb/Target/ABI.h"
-#include "lldb/Target/SectionLoadList.h"
 #include "lldb/Target/StackFrame.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
@@ -77,16 +76,13 @@ DynamicLoader *DynamicLoaderMacOS::CreateInstance(Process *process,
 // Constructor
 DynamicLoaderMacOS::DynamicLoaderMacOS(Process *process)
     : DynamicLoaderDarwin(process), m_image_infos_stop_id(UINT32_MAX),
-      m_break_id(LLDB_INVALID_BREAK_ID), 
-      m_dyld_handover_break_id(LLDB_INVALID_BREAK_ID), m_mutex(),
+      m_break_id(LLDB_INVALID_BREAK_ID), m_mutex(),
       m_maybe_image_infos_address(LLDB_INVALID_ADDRESS) {}
 
 // Destructor
 DynamicLoaderMacOS::~DynamicLoaderMacOS() {
   if (LLDB_BREAK_ID_IS_VALID(m_break_id))
     m_process->GetTarget().RemoveBreakpointByID(m_break_id);
-  if (LLDB_BREAK_ID_IS_VALID(m_dyld_handover_break_id))
-    m_process->GetTarget().RemoveBreakpointByID(m_dyld_handover_break_id);
 }
 
 bool DynamicLoaderMacOS::ProcessDidExec() {
@@ -139,11 +135,8 @@ void DynamicLoaderMacOS::DoClear() {
 
   if (LLDB_BREAK_ID_IS_VALID(m_break_id))
     m_process->GetTarget().RemoveBreakpointByID(m_break_id);
-  if (LLDB_BREAK_ID_IS_VALID(m_dyld_handover_break_id))
-    m_process->GetTarget().RemoveBreakpointByID(m_dyld_handover_break_id);
 
   m_break_id = LLDB_INVALID_BREAK_ID;
-  m_dyld_handover_break_id = LLDB_INVALID_BREAK_ID;
 }
 
 // Check if we have found DYLD yet
@@ -293,51 +286,13 @@ bool DynamicLoaderMacOS::NotifyBreakpointHit(void *baton,
             }
             if (dyld_mode == 0) {
               // dyld_notify_adding
-              if (process->GetTarget().GetImages().GetSize() == 0) {
-                // When all images have been removed, we're doing the
-                // dyld handover from a launch-dyld to a shared-cache-dyld,
-                // and we've just hit our one-shot address breakpoint in
-                // the sc-dyld.  Note that the image addresses passed to
-                // this function are inferior sizeof(void*) not uint64_t's
-                // like our normal notification, so don't even look at
-                // image_load_addresses.
-
-                dyld_instance->ClearDYLDHandoverBreakpoint();
-
-                dyld_instance->DoInitialImageFetch();
-                dyld_instance->SetNotificationBreakpoint();
-              } else {
-                dyld_instance->AddBinaries(image_load_addresses);
-              }
+              dyld_instance->AddBinaries(image_load_addresses);
             } else if (dyld_mode == 1) {
               // dyld_notify_removing
               dyld_instance->UnloadImages(image_load_addresses);
             } else if (dyld_mode == 2) {
               // dyld_notify_remove_all
               dyld_instance->UnloadAllImages();
-            } else if (dyld_mode == 3 && image_infos_count == 1) {
-              // dyld_image_dyld_moved
-
-              dyld_instance->ClearNotificationBreakpoint();
-              dyld_instance->UnloadAllImages();
-              dyld_instance->ClearDYLDModule();
-              process->GetTarget().GetImages().Clear();
-              process->GetTarget().GetSectionLoadList().Clear();
-
-              addr_t all_image_infos = process->GetImageInfoAddress();
-              int addr_size =
-                  process->GetTarget().GetArchitecture().GetAddressByteSize();
-              addr_t notification_location = all_image_infos + 
-                                             4 +        // version
-                                             4 +        // infoArrayCount
-                                             addr_size; // infoArray
-              Status error;
-              addr_t notification_addr =
-                  process->ReadPointerFromMemory(notification_location, error);
-              if (ABISP abi_sp = process->GetABI())
-                notification_addr = abi_sp->FixCodeAddress (notification_addr);
-
-              dyld_instance->SetDYLDHandoverBreakpoint(notification_addr);
             }
           }
         }
@@ -416,27 +371,6 @@ bool DynamicLoaderMacOS::SetNotificationBreakpoint() {
   return m_break_id != LLDB_INVALID_BREAK_ID;
 }
 
-bool DynamicLoaderMacOS::SetDYLDHandoverBreakpoint(addr_t notification_address) {
-  if (m_dyld_handover_break_id == LLDB_INVALID_BREAK_ID) {
-    BreakpointSP dyld_handover_bp =
-        m_process->GetTarget().CreateBreakpoint(notification_address, true,
-                                              false);
-    dyld_handover_bp->SetCallback(
-        DynamicLoaderMacOS::NotifyBreakpointHit, this, true);
-    dyld_handover_bp->SetOneShot(true);
-    m_dyld_handover_break_id = dyld_handover_bp->GetID();
-    return true;
-  }
-  return false;
-}
-
-void DynamicLoaderMacOS::ClearDYLDHandoverBreakpoint() {
-  if (LLDB_BREAK_ID_IS_VALID(m_dyld_handover_break_id))
-    m_process->GetTarget().RemoveBreakpointByID(m_dyld_handover_break_id);
-  m_dyld_handover_break_id = LLDB_INVALID_BREAK_ID;
-}
-
-
 addr_t
 DynamicLoaderMacOS::GetDyldLockVariableAddressFromModule(Module *module) {
   SymbolContext sc;
index b6e4ce8..a179679 100644 (file)
@@ -71,10 +71,6 @@ protected:
 
   bool DidSetNotificationBreakpoint() override;
 
-  bool SetDYLDHandoverBreakpoint(lldb::addr_t notification_address);
-
-  void ClearDYLDHandoverBreakpoint();
-
   void AddBinaries(const std::vector<lldb::addr_t> &load_addresses);
 
   void DoClear() override;
@@ -98,7 +94,6 @@ protected:
   uint32_t m_image_infos_stop_id; // The Stop ID the last time we
                                   // loaded/unloaded images
   lldb::user_id_t m_break_id;
-  lldb::user_id_t m_dyld_handover_break_id;
   mutable std::recursive_mutex m_mutex;
   lldb::addr_t m_maybe_image_infos_address; // If dyld is still maintaining the
                                             // all_image_infos address, store it