diff --git a/lldb/docs/man/lldb.rst b/lldb/docs/man/lldb.rst --- a/lldb/docs/man/lldb.rst +++ b/lldb/docs/man/lldb.rst @@ -311,9 +311,11 @@ 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. 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` -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. +file, specific to the REPL language. The init file should be named as follow: +`.lldbinit--repl` (i.e. `.lldbinit-swift-repl`). If this file doesn't +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. For security reasons, :program:`lldb` will print a warning and not source this diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -68,6 +68,7 @@ #include "lldb/Interpreter/Property.h" #include "lldb/Utility/Args.h" +#include "lldb/Target/Language.h" #include "lldb/Target/Process.h" #include "lldb/Target/StopInfo.h" #include "lldb/Target/TargetList.h" @@ -2093,17 +2094,16 @@ static void GetHomeREPLInitFile(llvm::SmallVectorImpl &init_file, LanguageType language) { - std::string init_file_name; - - switch (language) { - // TODO: Add support for a language used with a REPL. - default: + if (language == LanguageType::eLanguageTypeUnknown) return; - } + std::string init_file_name = + (llvm::Twine(".lldbinit-") + + llvm::Twine(Language::GetNameForLanguageType(language)) + + llvm::Twine("-repl")) + .str(); FileSystem::Instance().GetHomeDirectory(init_file); llvm::sys::path::append(init_file, init_file_name); - FileSystem::Instance().Resolve(init_file); } diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp --- a/lldb/tools/driver/Driver.cpp +++ b/lldb/tools/driver/Driver.cpp @@ -491,7 +491,7 @@ SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter(); // 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; sb_interpreter.SourceInitFileInHomeDirectory(result, m_option_data.m_repl); if (m_option_data.m_debug_mode) {