The LLDB API (lldb::SB*) is now thread safe!
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@122262 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/API/SBAddress.cpp b/source/API/SBAddress.cpp
index 7a7702a..61ad71b 100644
--- a/source/API/SBAddress.cpp
+++ b/source/API/SBAddress.cpp
@@ -12,6 +12,8 @@
#include "lldb/API/SBStream.h"
#include "lldb/Core/Address.h"
#include "lldb/Core/Log.h"
+#include "lldb/Host/Mutex.h"
+#include "lldb/Target/Target.h"
using namespace lldb;
using namespace lldb_private;
@@ -89,19 +91,22 @@
{
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+ lldb::addr_t addr = LLDB_INVALID_ADDRESS;
if (m_opaque_ap.get())
{
- lldb::addr_t addr = m_opaque_ap->GetLoadAddress (target.get());
- if (log)
- log->Printf ("SBAddress::GetLoadAddress (SBTarget(%p)) => 0x%llx", target.get(), addr);
- return addr;
+ Mutex::Locker api_locker (target->GetAPIMutex());
+ addr = m_opaque_ap->GetLoadAddress (target.get());
}
- else
+
+ if (log)
{
- if (log)
+ if (addr == LLDB_INVALID_ADDRESS)
log->Printf ("SBAddress::GetLoadAddress (SBTarget(%p)) => LLDB_INVALID_ADDRESS", target.get());
- return LLDB_INVALID_ADDRESS;
+ else
+ log->Printf ("SBAddress::GetLoadAddress (SBTarget(%p)) => 0x%llx", target.get(), addr);
}
+
+ return addr;
}
bool