[Lldb-commits] [lldb] r354631 - [Reproducers] Initialize reproducers before initializing the debugger.
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Thu Feb 21 14:26:16 PST 2019
Author: jdevlieghere
Date: Thu Feb 21 14:26:16 2019
New Revision: 354631
URL: http://llvm.org/viewvc/llvm-project?rev=354631&view=rev
Log:
[Reproducers] Initialize reproducers before initializing the debugger.
As per the discussion on the mailing list:
http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20190218/048007.html
This commit implements option (3):
> Go back to initializing the reproducer before the rest of the debugger.
> The method wouldn't be instrumented and guarantee no other SB methods are
> called or SB objects are constructed. The initialization then becomes part
> of the replay.
Differential revision: https://reviews.llvm.org/D58410
Removed:
lldb/trunk/include/lldb/API/SBInitializerOptions.h
lldb/trunk/scripts/interface/SBInitializerOptions.i
lldb/trunk/source/API/SBInitializerOptions.cpp
Modified:
lldb/trunk/include/lldb/API/SBDebugger.h
lldb/trunk/include/lldb/API/SBDefines.h
lldb/trunk/include/lldb/API/SBError.h
lldb/trunk/include/lldb/API/SBFileSpec.h
lldb/trunk/include/lldb/API/SBReproducer.h
lldb/trunk/include/lldb/Initialization/SystemInitializer.h
lldb/trunk/include/lldb/Initialization/SystemInitializerCommon.h
lldb/trunk/include/lldb/Initialization/SystemLifetimeManager.h
lldb/trunk/include/lldb/Utility/Reproducer.h
lldb/trunk/lldb.xcodeproj/project.pbxproj
lldb/trunk/scripts/interface/SBDebugger.i
lldb/trunk/scripts/lldb.swig
lldb/trunk/source/API/CMakeLists.txt
lldb/trunk/source/API/SBDebugger.cpp
lldb/trunk/source/API/SBReproducer.cpp
lldb/trunk/source/API/SystemInitializerFull.cpp
lldb/trunk/source/API/SystemInitializerFull.h
lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
lldb/trunk/source/Initialization/SystemLifetimeManager.cpp
lldb/trunk/source/Utility/Reproducer.cpp
lldb/trunk/tools/driver/Driver.cpp
lldb/trunk/tools/lldb-server/SystemInitializerLLGS.cpp
lldb/trunk/tools/lldb-server/SystemInitializerLLGS.h
lldb/trunk/tools/lldb-server/lldb-server.cpp
lldb/trunk/tools/lldb-test/SystemInitializerTest.cpp
lldb/trunk/tools/lldb-test/SystemInitializerTest.h
lldb/trunk/tools/lldb-test/lldb-test.cpp
Modified: lldb/trunk/include/lldb/API/SBDebugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBDebugger.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBDebugger.h (original)
+++ lldb/trunk/include/lldb/API/SBDebugger.h Thu Feb 21 14:26:16 2019
@@ -12,7 +12,6 @@
#include <stdio.h>
#include "lldb/API/SBDefines.h"
-#include "lldb/API/SBInitializerOptions.h"
#include "lldb/API/SBPlatform.h"
namespace lldb {
@@ -45,7 +44,8 @@ public:
lldb::SBDebugger &operator=(const lldb::SBDebugger &rhs);
static void Initialize();
- static lldb::SBError Initialize(SBInitializerOptions &options);
+
+ static lldb::SBError InitializeWithErrorHandling();
static void Terminate();
Modified: lldb/trunk/include/lldb/API/SBDefines.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBDefines.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBDefines.h (original)
+++ lldb/trunk/include/lldb/API/SBDefines.h Thu Feb 21 14:26:16 2019
@@ -50,7 +50,6 @@ class LLDB_API SBFileSpecList;
class LLDB_API SBFrame;
class LLDB_API SBFunction;
class LLDB_API SBHostOS;
-class LLDB_API SBInitializerOptions;
class LLDB_API SBInstruction;
class LLDB_API SBInstructionList;
class LLDB_API SBLanguageRuntime;
Modified: lldb/trunk/include/lldb/API/SBError.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBError.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBError.h (original)
+++ lldb/trunk/include/lldb/API/SBError.h Thu Feb 21 14:26:16 2019
@@ -51,22 +51,23 @@ public:
bool GetDescription(lldb::SBStream &description);
protected:
+ friend class SBBreakpoint;
+ friend class SBBreakpointLocation;
+ friend class SBBreakpointName;
friend class SBCommandReturnObject;
+ friend class SBCommunication;
friend class SBData;
friend class SBDebugger;
- friend class SBCommunication;
friend class SBHostOS;
friend class SBPlatform;
friend class SBProcess;
+ friend class SBReproducer;
friend class SBStructuredData;
+ friend class SBTarget;
friend class SBThread;
friend class SBTrace;
- friend class SBTarget;
friend class SBValue;
friend class SBWatchpoint;
- friend class SBBreakpoint;
- friend class SBBreakpointLocation;
- friend class SBBreakpointName;
lldb_private::Status *get();
Modified: lldb/trunk/include/lldb/API/SBFileSpec.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBFileSpec.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBFileSpec.h (original)
+++ lldb/trunk/include/lldb/API/SBFileSpec.h Thu Feb 21 14:26:16 2019
@@ -58,7 +58,6 @@ private:
friend class SBDeclaration;
friend class SBFileSpecList;
friend class SBHostOS;
- friend class SBInitializerOptions;
friend class SBLaunchInfo;
friend class SBLineEntry;
friend class SBModule;
Removed: lldb/trunk/include/lldb/API/SBInitializerOptions.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBInitializerOptions.h?rev=354630&view=auto
==============================================================================
--- lldb/trunk/include/lldb/API/SBInitializerOptions.h (original)
+++ lldb/trunk/include/lldb/API/SBInitializerOptions.h (removed)
@@ -1,42 +0,0 @@
-//===-- SBInitializerOptions.h ----------------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLDB_SBInitializerOptuions_h_
-#define LLDB_SBInitializerOptuions_h_
-
-#include "lldb/API/SBDefines.h"
-#include "lldb/API/SBFileSpec.h"
-
-namespace lldb_private {
-struct InitializerOptions;
-}
-
-namespace lldb {
-
-class LLDB_API SBInitializerOptions {
-public:
- SBInitializerOptions();
- SBInitializerOptions(const lldb::SBInitializerOptions &rhs);
- ~SBInitializerOptions();
- const SBInitializerOptions &operator=(const lldb::SBInitializerOptions &rhs);
-
- void SetCaptureReproducer(bool b);
- void SetReplayReproducer(bool b);
- void SetReproducerPath(const char *path);
-
- lldb_private::InitializerOptions &ref() const;
-
-private:
- friend class SBDebugger;
-
- std::unique_ptr<lldb_private::InitializerOptions> m_opaque_up;
-};
-
-} // namespace lldb
-
-#endif // LLDB_SBInitializerOptuions_h_
Modified: lldb/trunk/include/lldb/API/SBReproducer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBReproducer.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBReproducer.h (original)
+++ lldb/trunk/include/lldb/API/SBReproducer.h Thu Feb 21 14:26:16 2019
@@ -9,13 +9,17 @@
#ifndef LLDB_API_SBREPRODUCER_H
#define LLDB_API_SBREPRODUCER_H
-#include "lldb/lldb-defines.h"
+#include "lldb/API/SBDefines.h"
namespace lldb {
+/// The SBReproducer class is special because it bootstraps the capture and
+/// replay of SB API calls. As a result we cannot rely on any other SB objects
+/// in the interface or implementation of this class.
class LLDB_API SBReproducer {
public:
- static bool Replay();
+ static const char *Capture(const char *path);
+ static const char *Replay(const char *path);
};
} // namespace lldb
Modified: lldb/trunk/include/lldb/Initialization/SystemInitializer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Initialization/SystemInitializer.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Initialization/SystemInitializer.h (original)
+++ lldb/trunk/include/lldb/Initialization/SystemInitializer.h Thu Feb 21 14:26:16 2019
@@ -15,18 +15,12 @@
namespace lldb_private {
-struct InitializerOptions {
- bool reproducer_capture = false;
- bool reproducer_replay = false;
- std::string reproducer_path;
-};
-
class SystemInitializer {
public:
SystemInitializer();
virtual ~SystemInitializer();
- virtual llvm::Error Initialize(const InitializerOptions &options) = 0;
+ virtual llvm::Error Initialize() = 0;
virtual void Terminate() = 0;
};
}
Modified: lldb/trunk/include/lldb/Initialization/SystemInitializerCommon.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Initialization/SystemInitializerCommon.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Initialization/SystemInitializerCommon.h (original)
+++ lldb/trunk/include/lldb/Initialization/SystemInitializerCommon.h Thu Feb 21 14:26:16 2019
@@ -27,7 +27,7 @@ public:
SystemInitializerCommon();
~SystemInitializerCommon() override;
- llvm::Error Initialize(const InitializerOptions &options) override;
+ llvm::Error Initialize() override;
void Terminate() override;
};
Modified: lldb/trunk/include/lldb/Initialization/SystemLifetimeManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Initialization/SystemLifetimeManager.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Initialization/SystemLifetimeManager.h (original)
+++ lldb/trunk/include/lldb/Initialization/SystemLifetimeManager.h Thu Feb 21 14:26:16 2019
@@ -24,7 +24,6 @@ public:
~SystemLifetimeManager();
llvm::Error Initialize(std::unique_ptr<SystemInitializer> initializer,
- const InitializerOptions &options,
LoadPluginCallbackType plugin_callback);
void Terminate();
Modified: lldb/trunk/include/lldb/Utility/Reproducer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Reproducer.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/Reproducer.h (original)
+++ lldb/trunk/include/lldb/Utility/Reproducer.h Thu Feb 21 14:26:16 2019
@@ -201,6 +201,7 @@ public:
static Reproducer &Instance();
static llvm::Error Initialize(ReproducerMode mode,
llvm::Optional<FileSpec> root);
+ static bool Initialized();
static void Terminate();
Reproducer() = default;
Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Thu Feb 21 14:26:16 2019
@@ -793,8 +793,6 @@
26DE205311618FAC00A093E2 /* SBFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205211618FAC00A093E2 /* SBFunction.h */; settings = {ATTRIBUTES = (Public, ); }; };
9A3576AA116E9AC700E8ED2F /* SBHostOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */; };
9A3576A8116E9AB700E8ED2F /* SBHostOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A3576A7116E9AB700E8ED2F /* SBHostOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
- AFB2F2F621B71AF30078DEF1 /* SBInitializerOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB2F2F421B71AE90078DEF1 /* SBInitializerOptions.cpp */; };
- 4C38996D21BA11CA002BAEF4 /* SBInitializerOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C38996C21BA11CA002BAEF4 /* SBInitializerOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
9AC703AF117675410086C050 /* SBInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703AE117675410086C050 /* SBInstruction.cpp */; };
9AC7038E117674FB0086C050 /* SBInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC7038D117674EB0086C050 /* SBInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; };
9AC703B1117675490086C050 /* SBInstructionList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703B0117675490086C050 /* SBInstructionList.cpp */; };
@@ -2801,8 +2799,6 @@
9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBHostOS.cpp; path = source/API/SBHostOS.cpp; sourceTree = "<group>"; };
9A3576A7116E9AB700E8ED2F /* SBHostOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBHostOS.h; path = include/lldb/API/SBHostOS.h; sourceTree = "<group>"; };
2611FF00142D83060017FEA3 /* SBHostOS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBHostOS.i; sourceTree = "<group>"; };
- AFB2F2F421B71AE90078DEF1 /* SBInitializerOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBInitializerOptions.cpp; path = source/API/SBInitializerOptions.cpp; sourceTree = "<group>"; };
- 4C38996C21BA11CA002BAEF4 /* SBInitializerOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBInitializerOptions.h; path = include/lldb/API/SBInitializerOptions.h; sourceTree = "<group>"; };
9AC703AE117675410086C050 /* SBInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBInstruction.cpp; path = source/API/SBInstruction.cpp; sourceTree = "<group>"; };
9AC7038D117674EB0086C050 /* SBInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBInstruction.h; path = include/lldb/API/SBInstruction.h; sourceTree = "<group>"; };
2611FF02142D83060017FEA3 /* SBInstruction.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBInstruction.i; sourceTree = "<group>"; };
@@ -4362,8 +4358,6 @@
26DE205C1161901400A093E2 /* SBFunction.cpp */,
9A3576A7116E9AB700E8ED2F /* SBHostOS.h */,
9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */,
- AFB2F2F421B71AE90078DEF1 /* SBInitializerOptions.cpp */,
- 4C38996C21BA11CA002BAEF4 /* SBInitializerOptions.h */,
9AC7038D117674EB0086C050 /* SBInstruction.h */,
9AC703AE117675410086C050 /* SBInstruction.cpp */,
9AC7038F117675270086C050 /* SBInstructionList.h */,
@@ -7079,7 +7073,6 @@
4C56543519D2297A002E9C44 /* SBThreadPlan.h in Headers */,
263C493A178B50CF0070F12D /* SBModuleSpec.h in Headers */,
2617447A11685869005ADD65 /* SBType.h in Headers */,
- 4C38996D21BA11CA002BAEF4 /* SBInitializerOptions.h in Headers */,
9475C18914E5EA08001BFC6D /* SBTypeCategory.h in Headers */,
941BCC7F14E48C4000BB969C /* SBTypeFilter.h in Headers */,
941BCC8014E48C4000BB969C /* SBTypeFormat.h in Headers */,
@@ -7902,7 +7895,6 @@
26680336116005EF008E1FE4 /* SBBreakpointLocation.cpp in Sources */,
26680337116005F1008E1FE4 /* SBBreakpoint.cpp in Sources */,
26DE204511618ADA00A093E2 /* SBAddress.cpp in Sources */,
- AFB2F2F621B71AF30078DEF1 /* SBInitializerOptions.cpp in Sources */,
26DE204711618AED00A093E2 /* SBSymbolContext.cpp in Sources */,
26DE204D11618E7A00A093E2 /* SBModule.cpp in Sources */,
26DE205D1161901400A093E2 /* SBFunction.cpp in Sources */,
Modified: lldb/trunk/scripts/interface/SBDebugger.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/interface/SBDebugger.i?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/scripts/interface/SBDebugger.i (original)
+++ lldb/trunk/scripts/interface/SBDebugger.i Thu Feb 21 14:26:16 2019
@@ -122,8 +122,8 @@ public:
static void
Initialize();
- static void
- Initialize(lldb::SBInitializerOptions& options);
+ static SBError
+ InitializeWithErrorHandling();
static void
Terminate();
Removed: lldb/trunk/scripts/interface/SBInitializerOptions.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/interface/SBInitializerOptions.i?rev=354630&view=auto
==============================================================================
--- lldb/trunk/scripts/interface/SBInitializerOptions.i (original)
+++ lldb/trunk/scripts/interface/SBInitializerOptions.i (removed)
@@ -1,23 +0,0 @@
-//===-- SWIG Interface for SBInitializerOptions -----------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-namespace lldb {
-
-class SBInitializerOptions
-{
-public:
- SBInitializerOptions ();
- SBInitializerOptions (const lldb::SBInitializerOptions &rhs);
- ~SBInitializerOptions();
-
- void SetCaptureReproducer(bool b);
- void SetReplayReproducer(bool b);
- void SetReproducerPath(const char* path);
-};
-
-} // namespace lldb
Modified: lldb/trunk/scripts/lldb.swig
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/lldb.swig?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/scripts/lldb.swig (original)
+++ lldb/trunk/scripts/lldb.swig Thu Feb 21 14:26:16 2019
@@ -202,7 +202,6 @@ EMBED_VERSION(SWIG_VERSION)
%include "./interface/SBFrame.i"
%include "./interface/SBFunction.i"
%include "./interface/SBHostOS.i"
-%include "./interface/SBInitializerOptions.i"
%include "./interface/SBInstruction.i"
%include "./interface/SBInstructionList.i"
%include "./interface/SBLanguageRuntime.i"
Modified: lldb/trunk/source/API/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/CMakeLists.txt?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/API/CMakeLists.txt (original)
+++ lldb/trunk/source/API/CMakeLists.txt Thu Feb 21 14:26:16 2019
@@ -34,7 +34,6 @@ add_lldb_library(liblldb SHARED
SBFrame.cpp
SBFunction.cpp
SBHostOS.cpp
- SBInitializerOptions.cpp
SBInstruction.cpp
SBInstructionList.cpp
SBLanguageRuntime.cpp
Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Thu Feb 21 14:26:16 2019
@@ -124,11 +124,10 @@ SBDebugger &SBDebugger::operator=(const
}
void SBDebugger::Initialize() {
- SBInitializerOptions options;
- SBDebugger::Initialize(options);
+ SBError ignored = SBDebugger::InitializeWithErrorHandling();
}
-lldb::SBError SBDebugger::Initialize(SBInitializerOptions &options) {
+lldb::SBError SBDebugger::InitializeWithErrorHandling() {
Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
if (log)
@@ -136,8 +135,7 @@ lldb::SBError SBDebugger::Initialize(SBI
SBError error;
if (auto e = g_debugger_lifetime->Initialize(
- llvm::make_unique<SystemInitializerFull>(), *options.m_opaque_up,
- LoadPlugin)) {
+ llvm::make_unique<SystemInitializerFull>(), LoadPlugin)) {
error.SetError(Status(std::move(e)));
}
return error;
Removed: lldb/trunk/source/API/SBInitializerOptions.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBInitializerOptions.cpp?rev=354630&view=auto
==============================================================================
--- lldb/trunk/source/API/SBInitializerOptions.cpp (original)
+++ lldb/trunk/source/API/SBInitializerOptions.cpp (removed)
@@ -1,48 +0,0 @@
-//===-- SBInitializerOptions.cpp --------------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/API/SBInitializerOptions.h"
-#include "lldb/Initialization/SystemInitializer.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-SBInitializerOptions::SBInitializerOptions(const SBInitializerOptions &rhs) {
- m_opaque_up.reset(new InitializerOptions());
- *(m_opaque_up.get()) = rhs.ref();
-}
-
-const SBInitializerOptions &SBInitializerOptions::
-operator=(const SBInitializerOptions &rhs) {
- if (this != &rhs) {
- this->ref() = rhs.ref();
- }
- return *this;
-}
-
-SBInitializerOptions::~SBInitializerOptions() {}
-
-SBInitializerOptions::SBInitializerOptions() {
- m_opaque_up.reset(new InitializerOptions());
-}
-
-void SBInitializerOptions::SetCaptureReproducer(bool b) {
- m_opaque_up->reproducer_capture = b;
-}
-
-void SBInitializerOptions::SetReplayReproducer(bool b) {
- m_opaque_up->reproducer_replay = b;
-}
-
-void SBInitializerOptions::SetReproducerPath(const char *path) {
- m_opaque_up->reproducer_path = path;
-}
-
-InitializerOptions &SBInitializerOptions::ref() const {
- return *(m_opaque_up.get());
-}
Modified: lldb/trunk/source/API/SBReproducer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBReproducer.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/API/SBReproducer.cpp (original)
+++ lldb/trunk/source/API/SBReproducer.cpp Thu Feb 21 14:26:16 2019
@@ -30,19 +30,42 @@ using namespace lldb_private::repro;
SBRegistry::SBRegistry() {}
-bool SBReproducer::Replay() {
+const char *SBReproducer::Capture(const char *path) {
+ static std::string error;
+ if (auto e =
+ Reproducer::Initialize(ReproducerMode::Capture, FileSpec(path))) {
+ error = llvm::toString(std::move(e));
+ return error.c_str();
+ }
+ return nullptr;
+}
+
+const char *SBReproducer::Replay(const char *path) {
+ static std::string error;
+ if (auto e = Reproducer::Initialize(ReproducerMode::Replay, FileSpec(path))) {
+ error = llvm::toString(std::move(e));
+ return error.c_str();
+ }
+
repro::Loader *loader = repro::Reproducer::Instance().GetLoader();
- if (!loader)
- return false;
+ if (!loader) {
+ error = "unable to get replay loader.";
+ return error.c_str();
+ }
+ // FIXME: Enable the following code once the SB reproducer has landed.
+#if 0
FileSpec file = loader->GetFile<SBInfo>();
- if (!file)
- return false;
+ if (!file) {
+ error = "unable to get replay data from reproducer.";
+ return error.c_str();
+ }
SBRegistry registry;
registry.Replay(file);
+#endif
- return true;
+ return nullptr;
}
char lldb_private::repro::SBProvider::ID = 0;
Modified: lldb/trunk/source/API/SystemInitializerFull.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SystemInitializerFull.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/API/SystemInitializerFull.cpp (original)
+++ lldb/trunk/source/API/SystemInitializerFull.cpp Thu Feb 21 14:26:16 2019
@@ -265,9 +265,8 @@ SystemInitializerFull::SystemInitializer
SystemInitializerFull::~SystemInitializerFull() {}
-llvm::Error
-SystemInitializerFull::Initialize(const InitializerOptions &options) {
- if (auto e = SystemInitializerCommon::Initialize(options))
+llvm::Error SystemInitializerFull::Initialize() {
+ if (auto e = SystemInitializerCommon::Initialize())
return e;
breakpad::ObjectFileBreakpad::Initialize();
Modified: lldb/trunk/source/API/SystemInitializerFull.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SystemInitializerFull.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/API/SystemInitializerFull.h (original)
+++ lldb/trunk/source/API/SystemInitializerFull.h Thu Feb 21 14:26:16 2019
@@ -25,7 +25,7 @@ public:
SystemInitializerFull();
~SystemInitializerFull() override;
- llvm::Error Initialize(const InitializerOptions &options) override;
+ llvm::Error Initialize() override;
void Terminate() override;
private:
Modified: lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Initialization/SystemInitializerCommon.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/Initialization/SystemInitializerCommon.cpp (original)
+++ lldb/trunk/source/Initialization/SystemInitializerCommon.cpp Thu Feb 21 14:26:16 2019
@@ -41,8 +41,7 @@ SystemInitializerCommon::SystemInitializ
SystemInitializerCommon::~SystemInitializerCommon() {}
-llvm::Error
-SystemInitializerCommon::Initialize(const InitializerOptions &options) {
+llvm::Error SystemInitializerCommon::Initialize() {
#if defined(_MSC_VER)
const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG");
if (disable_crash_dialog_var &&
@@ -65,15 +64,12 @@ SystemInitializerCommon::Initialize(cons
}
#endif
- // Initialize the reproducer.
- ReproducerMode mode = ReproducerMode::Off;
- if (options.reproducer_capture)
- mode = ReproducerMode::Capture;
- if (options.reproducer_replay)
- mode = ReproducerMode::Replay;
-
- if (auto e = Reproducer::Initialize(mode, FileSpec(options.reproducer_path)))
- return e;
+ // If the reproducer wasn't initialized before, we can safely assume it's
+ // off.
+ if (!Reproducer::Initialized()) {
+ if (auto e = Reproducer::Initialize(ReproducerMode::Off, llvm::None))
+ return e;
+ }
// Initialize the file system.
auto &r = repro::Reproducer::Instance();
Modified: lldb/trunk/source/Initialization/SystemLifetimeManager.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Initialization/SystemLifetimeManager.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/Initialization/SystemLifetimeManager.cpp (original)
+++ lldb/trunk/source/Initialization/SystemLifetimeManager.cpp Thu Feb 21 14:26:16 2019
@@ -25,7 +25,7 @@ SystemLifetimeManager::~SystemLifetimeMa
llvm::Error SystemLifetimeManager::Initialize(
std::unique_ptr<SystemInitializer> initializer,
- const InitializerOptions &options, LoadPluginCallbackType plugin_callback) {
+ LoadPluginCallbackType plugin_callback) {
std::lock_guard<std::recursive_mutex> guard(m_mutex);
if (!m_initialized) {
assert(!m_initializer && "Attempting to call "
@@ -34,7 +34,7 @@ llvm::Error SystemLifetimeManager::Initi
m_initialized = true;
m_initializer = std::move(initializer);
- if (auto e = m_initializer->Initialize(options))
+ if (auto e = m_initializer->Initialize())
return e;
Debugger::Initialize(plugin_callback);
Modified: lldb/trunk/source/Utility/Reproducer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Reproducer.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/source/Utility/Reproducer.cpp (original)
+++ lldb/trunk/source/Utility/Reproducer.cpp Thu Feb 21 14:26:16 2019
@@ -51,6 +51,8 @@ llvm::Error Reproducer::Initialize(Repro
return Error::success();
}
+bool Reproducer::Initialized() { return InstanceImpl().operator bool(); }
+
void Reproducer::Terminate() {
lldbassert(InstanceImpl() && "Already terminated.");
InstanceImpl().reset();
Modified: lldb/trunk/tools/driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/driver/Driver.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/driver/Driver.cpp (original)
+++ lldb/trunk/tools/driver/Driver.cpp Thu Feb 21 14:26:16 2019
@@ -13,6 +13,7 @@
#include "lldb/API/SBDebugger.h"
#include "lldb/API/SBHostOS.h"
#include "lldb/API/SBLanguageRuntime.h"
+#include "lldb/API/SBReproducer.h"
#include "lldb/API/SBStream.h"
#include "lldb/API/SBStringList.h"
@@ -888,26 +889,31 @@ main(int argc, char const *argv[])
<< '\n';
}
- SBInitializerOptions options;
if (auto *arg = input_args.getLastArg(OPT_capture)) {
auto arg_value = arg->getValue();
- options.SetReproducerPath(arg_value);
- options.SetCaptureReproducer(true);
+ const char *error = SBReproducer::Capture(arg_value);
+ if (error) {
+ WithColor::error() << "reproducer capture failed: " << error << '\n';
+ return 1;
+ }
}
if (auto *arg = input_args.getLastArg(OPT_replay)) {
auto arg_value = arg->getValue();
- options.SetReplayReproducer(true);
- options.SetReproducerPath(arg_value);
+ const char *error = SBReproducer::Replay(arg_value);
+ if (error) {
+ WithColor::error() << "reproducer replay failed: " << error << '\n';
+ return 1;
+ }
+ // FIXME: Return once SBReproducer::Replay actually performs the replay.
}
- SBError error = SBDebugger::Initialize(options);
+ SBError error = SBDebugger::InitializeWithErrorHandling();
if (error.Fail()) {
WithColor::error() << "initialization failed: " << error.GetCString()
<< '\n';
return 1;
}
-
SBHostOS::ThreadCreated("<lldb.driver.main-thread>");
signal(SIGINT, sigint_handler);
Modified: lldb/trunk/tools/lldb-server/SystemInitializerLLGS.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/SystemInitializerLLGS.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/SystemInitializerLLGS.cpp (original)
+++ lldb/trunk/tools/lldb-server/SystemInitializerLLGS.cpp Thu Feb 21 14:26:16 2019
@@ -21,9 +21,8 @@ using HostObjectFile = ObjectFileELF;
using namespace lldb_private;
-llvm::Error
-SystemInitializerLLGS::Initialize(const InitializerOptions &options) {
- if (auto e = SystemInitializerCommon::Initialize(options))
+llvm::Error SystemInitializerLLGS::Initialize() {
+ if (auto e = SystemInitializerCommon::Initialize())
return e;
HostObjectFile::Initialize();
Modified: lldb/trunk/tools/lldb-server/SystemInitializerLLGS.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/SystemInitializerLLGS.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/SystemInitializerLLGS.h (original)
+++ lldb/trunk/tools/lldb-server/SystemInitializerLLGS.h Thu Feb 21 14:26:16 2019
@@ -14,8 +14,7 @@
class SystemInitializerLLGS : public lldb_private::SystemInitializerCommon {
public:
- llvm::Error
- Initialize(const lldb_private::InitializerOptions &options) override;
+ llvm::Error Initialize() override;
void Terminate() override;
};
Modified: lldb/trunk/tools/lldb-server/lldb-server.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/lldb-server.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/lldb-server.cpp (original)
+++ lldb/trunk/tools/lldb-server/lldb-server.cpp Thu Feb 21 14:26:16 2019
@@ -38,7 +38,7 @@ int main_platform(int argc, char *argv[]
static void initialize() {
if (auto e = g_debugger_lifetime->Initialize(
- llvm::make_unique<SystemInitializerLLGS>(), {}, nullptr))
+ llvm::make_unique<SystemInitializerLLGS>(), nullptr))
llvm::consumeError(std::move(e));
}
Modified: lldb/trunk/tools/lldb-test/SystemInitializerTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-test/SystemInitializerTest.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-test/SystemInitializerTest.cpp (original)
+++ lldb/trunk/tools/lldb-test/SystemInitializerTest.cpp Thu Feb 21 14:26:16 2019
@@ -112,9 +112,8 @@ SystemInitializerTest::SystemInitializer
SystemInitializerTest::~SystemInitializerTest() {}
-llvm::Error
-SystemInitializerTest::Initialize(const InitializerOptions &options) {
- if (auto e = SystemInitializerCommon::Initialize(options))
+llvm::Error SystemInitializerTest::Initialize() {
+ if (auto e = SystemInitializerCommon::Initialize())
return e;
breakpad::ObjectFileBreakpad::Initialize();
Modified: lldb/trunk/tools/lldb-test/SystemInitializerTest.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-test/SystemInitializerTest.h?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-test/SystemInitializerTest.h (original)
+++ lldb/trunk/tools/lldb-test/SystemInitializerTest.h Thu Feb 21 14:26:16 2019
@@ -25,7 +25,7 @@ public:
SystemInitializerTest();
~SystemInitializerTest() override;
- llvm::Error Initialize(const InitializerOptions &options) override;
+ llvm::Error Initialize() override;
void Terminate() override;
};
Modified: lldb/trunk/tools/lldb-test/lldb-test.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-test/lldb-test.cpp?rev=354631&r1=354630&r2=354631&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-test/lldb-test.cpp (original)
+++ lldb/trunk/tools/lldb-test/lldb-test.cpp Thu Feb 21 14:26:16 2019
@@ -963,7 +963,7 @@ int main(int argc, const char *argv[]) {
SystemLifetimeManager DebuggerLifetime;
if (auto e = DebuggerLifetime.Initialize(
- llvm::make_unique<SystemInitializerTest>(), {}, nullptr)) {
+ llvm::make_unique<SystemInitializerTest>(), nullptr)) {
WithColor::error() << "initialization failed: " << toString(std::move(e))
<< '\n';
return 1;
More information about the lldb-commits
mailing list