Index: lldb/include/lldb/Target/Process.h =================================================================== --- lldb/include/lldb/Target/Process.h +++ lldb/include/lldb/Target/Process.h @@ -386,6 +386,10 @@ static ConstString &GetStaticBroadcasterClass(); + static llvm::StringRef GetAttachSynchronousHijackListenerName(); + static llvm::StringRef GetLaunchSynchronousHijackListenerName(); + static llvm::StringRef GetResumeSynchronousHijackListenerName(); + ConstString &GetBroadcasterClass() const override { return GetStaticBroadcasterClass(); } Index: lldb/source/Target/Process.cpp =================================================================== --- lldb/source/Target/Process.cpp +++ lldb/source/Target/Process.cpp @@ -401,6 +401,18 @@ return class_name; } +llvm::StringRef Process::GetAttachSynchronousHijackListenerName() { + return "lldb.internal.Process.AttachSynchronous.hijack"; +} + +llvm::StringRef Process::GetLaunchSynchronousHijackListenerName() { + return "lldb.internal.Process.LaunchSynchronous.hijack"; +} + +llvm::StringRef Process::GetResumeSynchronousHijackListenerName() { + return "lldb.internal.Process.ResumeSynchronous.hijack"; +} + Process::Process(lldb::TargetSP target_sp, ListenerSP listener_sp) : Process(target_sp, listener_sp, UnixSignals::CreateForHost()) { // This constructor just delegates to the full Process constructor, @@ -1355,8 +1367,6 @@ return error; } -static const char *g_resume_sync_name = "lldb.Process.ResumeSynchronous.hijack"; - Status Process::ResumeSynchronous(Stream *stream) { Log *log(GetLog(LLDBLog::State | LLDBLog::Process)); LLDB_LOGF(log, "Process::ResumeSynchronous -- locking run lock"); @@ -1367,7 +1377,7 @@ } ListenerSP listener_sp( - Listener::MakeListener(g_resume_sync_name)); + Listener::MakeListener(GetResumeSynchronousHijackListenerName().data())); HijackProcessEvents(listener_sp); Status error = PrivateResume(); @@ -1393,9 +1403,8 @@ bool Process::StateChangedIsExternallyHijacked() { if (IsHijackedForEvent(eBroadcastBitStateChanged)) { - const char *hijacking_name = GetHijackingListenerName(); - if (hijacking_name && - strcmp(hijacking_name, g_resume_sync_name)) + llvm::StringRef hijacking_name = GetHijackingListenerName(); + if (hijacking_name.starts_with("lldb.internal")) return true; } return false; @@ -1403,9 +1412,8 @@ bool Process::StateChangedIsHijackedForSynchronousResume() { if (IsHijackedForEvent(eBroadcastBitStateChanged)) { - const char *hijacking_name = GetHijackingListenerName(); - if (hijacking_name && - strcmp(hijacking_name, g_resume_sync_name) == 0) + llvm::StringRef hijacking_name = GetHijackingListenerName(); + if (hijacking_name == GetResumeSynchronousHijackListenerName()) return true; } return false; Index: lldb/source/Target/Target.cpp =================================================================== --- lldb/source/Target/Target.cpp +++ lldb/source/Target/Target.cpp @@ -3157,8 +3157,8 @@ // its own hijacking listener or if the process is created by the target // manually, without the platform). if (!launch_info.GetHijackListener()) - launch_info.SetHijackListener( - Listener::MakeListener("lldb.Target.Launch.hijack")); + launch_info.SetHijackListener(Listener::MakeListener( + Process::GetLaunchSynchronousHijackListenerName().data())); // If we're not already connected to the process, and if we have a platform // that can launch a process for debugging, go ahead and do that here. @@ -3334,8 +3334,8 @@ ListenerSP hijack_listener_sp; const bool async = attach_info.GetAsync(); if (!async) { - hijack_listener_sp = - Listener::MakeListener("lldb.Target.Attach.attach.hijack"); + hijack_listener_sp = Listener::MakeListener( + Process::GetAttachSynchronousHijackListenerName().data()); attach_info.SetHijackListener(hijack_listener_sp); }