[ScriptInterpreter] Initialize globals when loading a scripting module.

The LoadScriptingModule used by command script import wasn't
initializing the LLDB global variables (things like `lldb.frame` and
`lldb.debugger`). They would get initialized however when running the
interactive script interpreter or running a single script line (e.g.
`script print(lldb.frame)`). This patch fixes that by properly
initializing the globals when loading a Python module.

Differential revision: https://reviews.llvm.org/D67644

llvm-svn: 372060
This commit is contained in:
Jonas Devlieghere
2019-09-17 03:55:58 +00:00
parent 4816e516e5
commit a879f40ba1
3 changed files with 16 additions and 6 deletions

View File

@@ -2699,12 +2699,12 @@ bool ScriptInterpreterPythonImpl::LoadScriptingModule(
StreamString command_stream;
// Before executing Python code, lock the GIL.
Locker py_lock(this,
Locker::AcquireLock |
(init_session ? Locker::InitSession : 0) |
Locker::NoSTDIN,
Locker::FreeAcquiredLock |
(init_session ? Locker::TearDownSession : 0));
Locker py_lock(
this,
Locker::AcquireLock | (init_session ? Locker::InitSession : 0) |
(init_session ? Locker::InitGlobals : 0) | 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);