diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:04:10 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:04:10 +0000 | 
| commit | 74a628f776edb588bff8f8f5cc16eac947c9d631 (patch) | |
| tree | dc32e010ac4902621e5a279bfeb48628f7f0e166 /source/Plugins/ScriptInterpreter | |
| parent | afed7be32164a598f8172282c249af7266c48b46 (diff) | |
Notes
Diffstat (limited to 'source/Plugins/ScriptInterpreter')
6 files changed, 48 insertions, 40 deletions
diff --git a/source/Plugins/ScriptInterpreter/None/CMakeLists.txt b/source/Plugins/ScriptInterpreter/None/CMakeLists.txt index 5692d2f907100..7e7dd5896f7c8 100644 --- a/source/Plugins/ScriptInterpreter/None/CMakeLists.txt +++ b/source/Plugins/ScriptInterpreter/None/CMakeLists.txt @@ -1,3 +1,7 @@ -add_lldb_library(lldbPluginScriptInterpreterNone +add_lldb_library(lldbPluginScriptInterpreterNone PLUGIN    ScriptInterpreterNone.cpp + +  LINK_LIBS +    lldbCore +    lldbInterpreter    )
\ No newline at end of file diff --git a/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp b/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp index 2f04ec97a9ff7..9ec9f43446138 100644 --- a/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp +++ b/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp @@ -10,10 +10,12 @@  #include "ScriptInterpreterNone.h"  #include "lldb/Core/Debugger.h"  #include "lldb/Core/PluginManager.h" -#include "lldb/Core/Stream.h"  #include "lldb/Core/StreamFile.h" -#include "lldb/Core/StringList.h"  #include "lldb/Interpreter/CommandInterpreter.h" +#include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" + +#include "llvm/Support/Threading.h"  #include <mutex> @@ -39,9 +41,9 @@ void ScriptInterpreterNone::ExecuteInterpreterLoop() {  }  void ScriptInterpreterNone::Initialize() { -  static std::once_flag g_once_flag; +  static llvm::once_flag g_once_flag; -  std::call_once(g_once_flag, []() { +  llvm::call_once(g_once_flag, []() {      PluginManager::RegisterPlugin(GetPluginNameStatic(),                                    GetPluginDescriptionStatic(),                                    lldb::eScriptLanguageNone, CreateInstance); diff --git a/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt b/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt index 71f5807b6f622..c337fc7b5874f 100644 --- a/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt +++ b/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt @@ -1,5 +1,15 @@ -add_lldb_library(lldbPluginScriptInterpreterPython +add_lldb_library(lldbPluginScriptInterpreterPython PLUGIN    PythonDataObjects.cpp    PythonExceptionState.cpp    ScriptInterpreterPython.cpp + +  LINK_LIBS +    lldbBreakpoint +    lldbCore +    lldbDataFormatters +    lldbHost +    lldbInterpreter +    lldbTarget +  LINK_COMPONENTS +    Support    ) diff --git a/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp b/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp index f3453f2d011de..966bdff3ad950 100644 --- a/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp +++ b/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp @@ -17,10 +17,10 @@  #include "PythonDataObjects.h"  #include "ScriptInterpreterPython.h" -#include "lldb/Core/Stream.h"  #include "lldb/Host/File.h"  #include "lldb/Host/FileSystem.h"  #include "lldb/Interpreter/ScriptInterpreter.h" +#include "lldb/Utility/Stream.h"  #include "llvm/Support/ConvertUTF.h" diff --git a/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h b/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h index b84996c928da7..e613e3d6aa6c7 100644 --- a/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h +++ b/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h @@ -19,11 +19,12 @@  // C++ Includes  // Other libraries and framework includes  // Project includes -#include "lldb/Core/ConstString.h" -#include "lldb/Core/Flags.h" +#include "lldb/Utility/Flags.h" +  #include "lldb/Core/StructuredData.h"  #include "lldb/Host/File.h"  #include "lldb/Interpreter/OptionValue.h" +#include "lldb/Utility/ConstString.h"  #include "lldb/lldb-defines.h"  #include "llvm/ADT/ArrayRef.h" diff --git a/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 357b48e53c48d..cfab9b33e6624 100644 --- a/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -51,6 +51,7 @@  #include "llvm/ADT/STLExtras.h"  #include "llvm/ADT/StringRef.h" +#include "llvm/Support/FileSystem.h"  using namespace lldb;  using namespace lldb_private; @@ -142,14 +143,9 @@ public:    ~InitializePythonRAII() {      if (m_was_already_initialized) { -      Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT | -                                                      LIBLLDB_LOG_VERBOSE)); - -      if (log) { -        log->Printf("Releasing PyGILState. Returning to state = %slocked\n", -                    m_was_already_initialized == PyGILState_UNLOCKED ? "un" -                                                                     : ""); -      } +      Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT)); +      LLDB_LOGV(log, "Releasing PyGILState. Returning to state = {0}locked", +                m_was_already_initialized == PyGILState_UNLOCKED ? "un" : "");        PyGILState_Release(m_gil_state);      } else {        // We initialized the threads in this function, just unlock the GIL. @@ -174,15 +170,12 @@ private:    void InitializeThreadsPrivate() {      if (PyEval_ThreadsInitialized()) { -      Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT | -                                                      LIBLLDB_LOG_VERBOSE)); +      Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));        m_was_already_initialized = true;        m_gil_state = PyGILState_Ensure(); -      if (log) { -        log->Printf("Ensured PyGILState. Previous state = %slocked\n", -                    m_gil_state == PyGILState_UNLOCKED ? "un" : ""); -      } +      LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked\n", +                m_gil_state == PyGILState_UNLOCKED ? "un" : "");        return;      } @@ -212,12 +205,10 @@ ScriptInterpreterPython::Locker::Locker(ScriptInterpreterPython *py_interpreter,  }  bool ScriptInterpreterPython::Locker::DoAcquireLock() { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT | -                                                  LIBLLDB_LOG_VERBOSE)); +  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));    m_GILState = PyGILState_Ensure(); -  if (log) -    log->Printf("Ensured PyGILState. Previous state = %slocked\n", -                m_GILState == PyGILState_UNLOCKED ? "un" : ""); +  LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked", +            m_GILState == PyGILState_UNLOCKED ? "un" : "");    // we need to save the thread state when we first start the command    // because we might decide to interrupt it while some action is taking @@ -239,11 +230,9 @@ bool ScriptInterpreterPython::Locker::DoInitSession(uint16_t on_entry_flags,  }  bool ScriptInterpreterPython::Locker::DoFreeLock() { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT | -                                                  LIBLLDB_LOG_VERBOSE)); -  if (log) -    log->Printf("Releasing PyGILState. Returning to state = %slocked\n", -                m_GILState == PyGILState_UNLOCKED ? "un" : ""); +  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT)); +  LLDB_LOGV(log, "Releasing PyGILState. Returning to state = {0}locked", +            m_GILState == PyGILState_UNLOCKED ? "un" : "");    PyGILState_Release(m_GILState);    m_python_interpreter->DecrementLockCount();    return true; @@ -338,9 +327,9 @@ ScriptInterpreterPython::~ScriptInterpreterPython() {  }  void ScriptInterpreterPython::Initialize() { -  static std::once_flag g_once_flag; +  static llvm::once_flag g_once_flag; -  std::call_once(g_once_flag, []() { +  llvm::call_once(g_once_flag, []() {      PluginManager::RegisterPlugin(GetPluginNameStatic(),                                    GetPluginDescriptionStatic(),                                    lldb::eScriptLanguagePython, CreateInstance); @@ -2587,9 +2576,13 @@ bool ScriptInterpreterPython::LoadScriptingModule(                               Locker::NoSTDIN,                     Locker::FreeAcquiredLock |                         (init_session ? Locker::TearDownSession : 0)); +    namespace fs = llvm::sys::fs; +    fs::file_status st; +    std::error_code ec = status(target_file.GetPath(), st); -    if (target_file.GetFileType() == FileSpec::eFileTypeInvalid || -        target_file.GetFileType() == FileSpec::eFileTypeUnknown) { +    if (ec || st.type() == fs::file_type::status_error || +        st.type() == fs::file_type::type_unknown || +        st.type() == fs::file_type::file_not_found) {        // if not a valid file of any sort, check if it might be a filename still        // dot can't be used but / and \ can, and if either is found, reject        if (strchr(pathname, '\\') || strchr(pathname, '/')) { @@ -2598,9 +2591,7 @@ bool ScriptInterpreterPython::LoadScriptingModule(        }        basename = pathname; // not a filename, probably a package of some sort,                             // let it go through -    } else if (target_file.GetFileType() == FileSpec::eFileTypeDirectory || -               target_file.GetFileType() == FileSpec::eFileTypeRegular || -               target_file.GetFileType() == FileSpec::eFileTypeSymbolicLink) { +    } else if (is_directory(st) || is_regular_file(st)) {        std::string directory = target_file.GetDirectory().GetCString();        replace_all(directory, "\\", "\\\\");        replace_all(directory, "'", "\\'");  | 
