Add StructuredData plugin type; showcase with new DarwinLog feature

Take 2, with missing cmake line fixed.  Build tested on
Ubuntu 14.04 with clang-3.6.

See docs/structured_data/StructuredDataPlugins.md for details.

differential review: https://reviews.llvm.org/D22976

reviewers: clayborg, jingham
llvm-svn: 279202
This commit is contained in:
Todd Fiala
2016-08-19 04:21:48 +00:00
parent e2ca3b65fc
commit 759300192a
131 changed files with 11358 additions and 61 deletions

View File

@@ -39,6 +39,7 @@
#include "lldb/API/SBFileSpec.h"
#include "lldb/API/SBMemoryRegionInfo.h"
#include "lldb/API/SBMemoryRegionInfoList.h"
#include "lldb/API/SBStructuredData.h"
#include "lldb/API/SBThread.h"
#include "lldb/API/SBThreadCollection.h"
#include "lldb/API/SBStream.h"
@@ -1029,8 +1030,16 @@ SBProcess::GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_
SBProcess
SBProcess::GetProcessFromEvent (const SBEvent &event)
{
SBProcess process(Process::ProcessEventData::GetProcessFromEvent (event.get()));
return process;
ProcessSP process_sp =
Process::ProcessEventData::GetProcessFromEvent (event.get());
if (!process_sp)
{
// StructuredData events also know the process they come from.
// Try that.
process_sp = EventDataStructuredData::GetProcessFromEvent(event.get());
}
return SBProcess(process_sp);
}
bool
@@ -1039,10 +1048,26 @@ SBProcess::GetInterruptedFromEvent (const SBEvent &event)
return Process::ProcessEventData::GetInterruptedFromEvent(event.get());
}
lldb::SBStructuredData
SBProcess::GetStructuredDataFromEvent (const lldb::SBEvent &event)
{
return SBStructuredData(event.GetSP());
}
bool
SBProcess::EventIsProcessEvent (const SBEvent &event)
{
return event.GetBroadcasterClass() == SBProcess::GetBroadcasterClass();
return (event.GetBroadcasterClass() == SBProcess::GetBroadcasterClass()) &&
!EventIsStructuredDataEvent (event);
}
bool
SBProcess::EventIsStructuredDataEvent (const lldb::SBEvent &event)
{
EventSP event_sp = event.GetSP();
EventData *event_data = event_sp ? event_sp->GetData() : nullptr;
return event_data &&
(event_data->GetFlavor() == EventDataStructuredData::GetFlavorString());
}
SBBroadcaster