Author: Med Ismail Bennani Date: 2020-09-02T01:21:22+02:00 New Revision: 0224738c1abdee59923a539204f12c4c99621506
URL: https://github.com/llvm/llvm-project/commit/0224738c1abdee59923a539204f12c4c99621506 DIFF: https://github.com/llvm/llvm-project/commit/0224738c1abdee59923a539204f12c4c99621506.diff LOG: [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.benn...@gmail.com> Added: Modified: lldb/docs/man/lldb.rst lldb/source/Interpreter/CommandInterpreter.cpp lldb/tools/driver/Driver.cpp Removed: ################################################################################ diff --git a/lldb/docs/man/lldb.rst b/lldb/docs/man/lldb.rst index 19a5eaab8e8c..65ac462fed94 100644 --- a/lldb/docs/man/lldb.rst +++ b/lldb/docs/man/lldb.rst @@ -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 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-<language>-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 index e25c24ccd401..60e08346e655 100644 --- 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 GetHomeInitFile(llvm::SmallVectorImpl<char> &init_file, static void GetHomeREPLInitFile(llvm::SmallVectorImpl<char> &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 index 13cb9bee116d..3837d06ed8d8 100644 --- a/lldb/tools/driver/Driver.cpp +++ b/lldb/tools/driver/Driver.cpp @@ -491,7 +491,7 @@ int Driver::MainLoop() { 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) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits