//===-- SBReproducer.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 "SBReproducerPrivate.h" #include "SBReproducerPrivate.h" #include "lldb/API/LLDB.h" #include "lldb/API/SBAddress.h" #include "lldb/API/SBAttachInfo.h" #include "lldb/API/SBBlock.h" #include "lldb/API/SBBreakpoint.h" #include "lldb/API/SBCommandInterpreter.h" #include "lldb/API/SBData.h" #include "lldb/API/SBDebugger.h" #include "lldb/API/SBDeclaration.h" #include "lldb/API/SBError.h" #include "lldb/API/SBFileSpec.h" #include "lldb/API/SBHostOS.h" #include "lldb/API/SBReproducer.h" #include "lldb/Host/FileSystem.h" using namespace lldb; using namespace lldb_private; using namespace lldb_private::repro; SBRegistry::SBRegistry() { Registry& R = *this; RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); RegisterMethods(R); } const char *SBReproducer::Capture() { static std::string error; if (auto e = Reproducer::Initialize(ReproducerMode::Capture, llvm::None)) { error = llvm::toString(std::move(e)); return error.c_str(); } return nullptr; } 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) { error = "unable to get replay loader."; return error.c_str(); } FileSpec file = loader->GetFile(); if (!file) { error = "unable to get replay data from reproducer."; return error.c_str(); } SBRegistry registry; registry.Replay(file); return nullptr; } char lldb_private::repro::SBProvider::ID = 0; const char *SBProvider::Info::name = "sbapi"; const char *SBProvider::Info::file = "sbapi.bin";