diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-31 21:22:58 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-31 21:22:58 +0000 | 
| commit | 5ffd83dbcc34f10e07f6d3e968ae6365869615f4 (patch) | |
| tree | 0e9f5cf729dde39f949698fddef45a34e2bc7f44 /contrib/llvm-project/lldb/source/API/SBDebugger.cpp | |
| parent | 1799696096df87b52968b8996d00c91e0a5de8d9 (diff) | |
| parent | cfca06d7963fa0909f90483b42a6d7d194d01e08 (diff) | |
Notes
Diffstat (limited to 'contrib/llvm-project/lldb/source/API/SBDebugger.cpp')
| -rw-r--r-- | contrib/llvm-project/lldb/source/API/SBDebugger.cpp | 97 | 
1 files changed, 63 insertions, 34 deletions
| diff --git a/contrib/llvm-project/lldb/source/API/SBDebugger.cpp b/contrib/llvm-project/lldb/source/API/SBDebugger.cpp index b7ac8047f8e5..5f62987f37da 100644 --- a/contrib/llvm-project/lldb/source/API/SBDebugger.cpp +++ b/contrib/llvm-project/lldb/source/API/SBDebugger.cpp @@ -1,4 +1,4 @@ -//===-- SBDebugger.cpp ------------------------------------------*- C++ -*-===// +//===-- SBDebugger.cpp ----------------------------------------------------===//  //  // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.  // See https://llvm.org/LICENSE.txt for license information. @@ -15,6 +15,7 @@  #include "lldb/API/SBBroadcaster.h"  #include "lldb/API/SBCommandInterpreter.h" +#include "lldb/API/SBCommandInterpreterRunOptions.h"  #include "lldb/API/SBCommandReturnObject.h"  #include "lldb/API/SBError.h"  #include "lldb/API/SBEvent.h" @@ -312,7 +313,7 @@ SBError SBDebugger::SetInputFile(SBFile file) {    repro::DataRecorder *recorder = nullptr;    if (repro::Generator *g = repro::Reproducer::Instance().GetGenerator()) -    recorder = g->GetOrCreate<repro::CommandProvider>().GetNewDataRecorder(); +    recorder = g->GetOrCreate<repro::CommandProvider>().GetNewRecorder();    FileSP file_sp = file.m_opaque_sp; @@ -596,8 +597,9 @@ SBSourceManager SBDebugger::GetSourceManager() {  }  bool SBDebugger::GetDefaultArchitecture(char *arch_name, size_t arch_name_len) { -  LLDB_RECORD_STATIC_METHOD(bool, SBDebugger, GetDefaultArchitecture, -                            (char *, size_t), "", arch_name_len); +  LLDB_RECORD_CHAR_PTR_STATIC_METHOD(bool, SBDebugger, GetDefaultArchitecture, +                                     (char *, size_t), arch_name, "", +                                     arch_name_len);    if (arch_name && arch_name_len) {      ArchSpec default_arch = Target::GetDefaultArchitecture(); @@ -1165,9 +1167,9 @@ void SBDebugger::RunCommandInterpreter(bool auto_handle_events,    if (m_opaque_sp) {      CommandInterpreterRunOptions options; - -    m_opaque_sp->GetCommandInterpreter().RunCommandInterpreter( -        auto_handle_events, spawn_thread, options); +    options.SetAutoHandleEvents(auto_handle_events); +    options.SetSpawnThread(spawn_thread); +    m_opaque_sp->GetCommandInterpreter().RunCommandInterpreter(options);    }  } @@ -1185,15 +1187,35 @@ void SBDebugger::RunCommandInterpreter(bool auto_handle_events,                       quit_requested, stopped_for_crash);    if (m_opaque_sp) { +    options.SetAutoHandleEvents(auto_handle_events); +    options.SetSpawnThread(spawn_thread);      CommandInterpreter &interp = m_opaque_sp->GetCommandInterpreter(); -    interp.RunCommandInterpreter(auto_handle_events, spawn_thread, -                                 options.ref()); -    num_errors = interp.GetNumErrors(); -    quit_requested = interp.GetQuitRequested(); -    stopped_for_crash = interp.GetStoppedForCrash(); +    CommandInterpreterRunResult result = +        interp.RunCommandInterpreter(options.ref()); +    num_errors = result.GetNumErrors(); +    quit_requested = +        result.IsResult(lldb::eCommandInterpreterResultQuitRequested); +    stopped_for_crash = +        result.IsResult(lldb::eCommandInterpreterResultInferiorCrash);    }  } +SBCommandInterpreterRunResult SBDebugger::RunCommandInterpreter( +    const SBCommandInterpreterRunOptions &options) { +  LLDB_RECORD_METHOD(lldb::SBCommandInterpreterRunResult, SBDebugger, +                     RunCommandInterpreter, +                     (const lldb::SBCommandInterpreterRunOptions &), options); + +  if (!m_opaque_sp) +    return LLDB_RECORD_RESULT(SBCommandInterpreterRunResult()); + +  CommandInterpreter &interp = m_opaque_sp->GetCommandInterpreter(); +  CommandInterpreterRunResult result = +      interp.RunCommandInterpreter(options.ref()); + +  return LLDB_RECORD_RESULT(SBCommandInterpreterRunResult(result)); +} +  SBError SBDebugger::RunREPL(lldb::LanguageType language,                              const char *repl_options) {    LLDB_RECORD_METHOD(lldb::SBError, SBDebugger, RunREPL, @@ -1282,7 +1304,7 @@ SBDebugger::GetInternalVariableValue(const char *var_name,      if (value_sp) {        StreamString value_strm;        value_sp->DumpValue(&exe_ctx, value_strm, OptionValue::eDumpOptionValue); -      const std::string &value_str = value_strm.GetString(); +      const std::string &value_str = std::string(value_strm.GetString());        if (!value_str.empty()) {          StringList string_list;          string_list.SplitIntoLines(value_str); @@ -1374,6 +1396,18 @@ bool SBDebugger::GetUseColor() const {    return (m_opaque_sp ? m_opaque_sp->GetUseColor() : false);  } +bool SBDebugger::SetUseSourceCache(bool value) { +  LLDB_RECORD_METHOD(bool, SBDebugger, SetUseSourceCache, (bool), value); + +  return (m_opaque_sp ? m_opaque_sp->SetUseSourceCache(value) : false); +} + +bool SBDebugger::GetUseSourceCache() const { +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBDebugger, GetUseSourceCache); + +  return (m_opaque_sp ? m_opaque_sp->GetUseSourceCache() : false); +} +  bool SBDebugger::GetDescription(SBStream &description) {    LLDB_RECORD_METHOD(bool, SBDebugger, GetDescription, (lldb::SBStream &),                       description); @@ -1627,46 +1661,38 @@ static SBError SetFileRedirect(SBDebugger *, SBFile file) { return SBError(); }  static SBError SetFileRedirect(SBDebugger *, FileSP file) { return SBError(); } -static bool GetDefaultArchitectureRedirect(char *arch_name, -                                           size_t arch_name_len) { -  // The function is writing to its argument. Without the redirect it would -  // write into the replay buffer. -  char buffer[1024]; -  return SBDebugger::GetDefaultArchitecture(buffer, arch_name_len); -} -  template <> void RegisterMethods<SBDebugger>(Registry &R) {    // Custom implementation. -  R.Register(&invoke<void (SBDebugger::*)( -                 FILE *, bool)>::method<&SBDebugger::SetErrorFileHandle>::doit, +  R.Register(&invoke<void (SBDebugger::*)(FILE *, bool)>::method< +                 &SBDebugger::SetErrorFileHandle>::record,               &SetFileHandleRedirect); -  R.Register(&invoke<void (SBDebugger::*)( -                 FILE *, bool)>::method<&SBDebugger::SetOutputFileHandle>::doit, +  R.Register(&invoke<void (SBDebugger::*)(FILE *, bool)>::method< +                 &SBDebugger::SetOutputFileHandle>::record,               &SetFileHandleRedirect); -  R.Register<bool(char *, size_t)>(static_cast<bool (*)(char *, size_t)>( -                                       &SBDebugger::GetDefaultArchitecture), -                                   &GetDefaultArchitectureRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 SBFile)>::method<&SBDebugger::SetInputFile>::doit, +                 SBFile)>::method<&SBDebugger::SetInputFile>::record,               &SetFileRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 SBFile)>::method<&SBDebugger::SetOutputFile>::doit, +                 SBFile)>::method<&SBDebugger::SetOutputFile>::record,               &SetFileRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 SBFile)>::method<&SBDebugger::SetErrorFile>::doit, +                 SBFile)>::method<&SBDebugger::SetErrorFile>::record,               &SetFileRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 FileSP)>::method<&SBDebugger::SetInputFile>::doit, +                 FileSP)>::method<&SBDebugger::SetInputFile>::record,               &SetFileRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 FileSP)>::method<&SBDebugger::SetOutputFile>::doit, +                 FileSP)>::method<&SBDebugger::SetOutputFile>::record,               &SetFileRedirect);    R.Register(&invoke<SBError (SBDebugger::*)( -                 FileSP)>::method<&SBDebugger::SetErrorFile>::doit, +                 FileSP)>::method<&SBDebugger::SetErrorFile>::record,               &SetFileRedirect); +  LLDB_REGISTER_CHAR_PTR_METHOD_STATIC(bool, SBDebugger, +                                       GetDefaultArchitecture); +    LLDB_REGISTER_CONSTRUCTOR(SBDebugger, ());    LLDB_REGISTER_CONSTRUCTOR(SBDebugger, (const lldb::DebuggerSP &));    LLDB_REGISTER_CONSTRUCTOR(SBDebugger, (const lldb::SBDebugger &)); @@ -1816,6 +1842,9 @@ template <> void RegisterMethods<SBDebugger>(Registry &R) {                         (lldb::SBTypeNameSpecifier));    LLDB_REGISTER_METHOD(bool, SBDebugger, EnableLog,                         (const char *, const char **)); +  LLDB_REGISTER_METHOD(lldb::SBCommandInterpreterRunResult, SBDebugger, +                       RunCommandInterpreter, +                       (const lldb::SBCommandInterpreterRunOptions &));  }  } // namespace repro | 
