forked from OSchip/llvm-project
[lldb/interpreter] Improve REPL init file compatibility
This patch changes the command interpreter sourcing logic for the REPL init file. Instead of looking for a arbitrary file name, it standardizes the REPL init file name to match to following scheme: `.lldbinit-<language>-repl` This will make the naming more homogenous and the sourcing logic future-proof. rdar://65836048 Differential Revision: https://reviews.llvm.org/D86987 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
parent
ca842c825a
commit
0224738c1a
|
@ -311,9 +311,11 @@ program. This would be ~/.lldbinit-lldb for the command line :program:`lldb`
|
||||||
and ~/.lldbinit-Xcode for Xcode. If there is no application specific init
|
and ~/.lldbinit-Xcode for Xcode. If there is no application specific init
|
||||||
file, :program:`lldb` will look for an init file in the home directory.
|
file, :program:`lldb` will look for an init file in the home directory.
|
||||||
If launched with a `REPL`_ option, it will first look for a REPL configuration
|
If launched with a `REPL`_ option, it will first look for a REPL configuration
|
||||||
file, specific to the REPL language. If this file doesn't exist, or :program:`lldb`
|
file, specific to the REPL language. The init file should be named as follow:
|
||||||
wasn't launch with `REPL`_, meaning there is neither a REPL init file nor an
|
`.lldbinit-<language>-repl` (i.e. `.lldbinit-swift-repl`). If this file doesn't
|
||||||
application specific init file, `lldb` will fallback to the global ~/.lldbinit.
|
exist, or :program:`lldb` wasn't launch with `REPL`_, meaning there is neither
|
||||||
|
a REPL init file nor an application specific init file, `lldb` will fallback to
|
||||||
|
the global ~/.lldbinit.
|
||||||
|
|
||||||
Secondly, it will look for an .lldbinit file in the current working directory.
|
Secondly, it will look for an .lldbinit file in the current working directory.
|
||||||
For security reasons, :program:`lldb` will print a warning and not source this
|
For security reasons, :program:`lldb` will print a warning and not source this
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
#include "lldb/Interpreter/Property.h"
|
#include "lldb/Interpreter/Property.h"
|
||||||
#include "lldb/Utility/Args.h"
|
#include "lldb/Utility/Args.h"
|
||||||
|
|
||||||
|
#include "lldb/Target/Language.h"
|
||||||
#include "lldb/Target/Process.h"
|
#include "lldb/Target/Process.h"
|
||||||
#include "lldb/Target/StopInfo.h"
|
#include "lldb/Target/StopInfo.h"
|
||||||
#include "lldb/Target/TargetList.h"
|
#include "lldb/Target/TargetList.h"
|
||||||
|
@ -2093,17 +2094,16 @@ static void GetHomeInitFile(llvm::SmallVectorImpl<char> &init_file,
|
||||||
|
|
||||||
static void GetHomeREPLInitFile(llvm::SmallVectorImpl<char> &init_file,
|
static void GetHomeREPLInitFile(llvm::SmallVectorImpl<char> &init_file,
|
||||||
LanguageType language) {
|
LanguageType language) {
|
||||||
std::string init_file_name;
|
if (language == LanguageType::eLanguageTypeUnknown)
|
||||||
|
|
||||||
switch (language) {
|
|
||||||
// TODO: Add support for a language used with a REPL.
|
|
||||||
default:
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
|
std::string init_file_name =
|
||||||
|
(llvm::Twine(".lldbinit-") +
|
||||||
|
llvm::Twine(Language::GetNameForLanguageType(language)) +
|
||||||
|
llvm::Twine("-repl"))
|
||||||
|
.str();
|
||||||
FileSystem::Instance().GetHomeDirectory(init_file);
|
FileSystem::Instance().GetHomeDirectory(init_file);
|
||||||
llvm::sys::path::append(init_file, init_file_name);
|
llvm::sys::path::append(init_file, init_file_name);
|
||||||
|
|
||||||
FileSystem::Instance().Resolve(init_file);
|
FileSystem::Instance().Resolve(init_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -491,7 +491,7 @@ int Driver::MainLoop() {
|
||||||
SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter();
|
SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter();
|
||||||
|
|
||||||
// Before we handle any options from the command line, we parse the
|
// Before we handle any options from the command line, we parse the
|
||||||
// .lldbinit file in the user's home directory.
|
// REPL init file or the default file in the user's home directory.
|
||||||
SBCommandReturnObject result;
|
SBCommandReturnObject result;
|
||||||
sb_interpreter.SourceInitFileInHomeDirectory(result, m_option_data.m_repl);
|
sb_interpreter.SourceInitFileInHomeDirectory(result, m_option_data.m_repl);
|
||||||
if (m_option_data.m_debug_mode) {
|
if (m_option_data.m_debug_mode) {
|
||||||
|
|
Loading…
Reference in New Issue