mib created this revision. mib added a reviewer: JDevlieghere. mib added a project: LLDB. Herald added a subscriber: lldb-commits. mib requested review of this revision.
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 Signed-off-by: Med Ismail Bennani <medismail.benn...@gmail.com> Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D86987 Files: lldb/docs/man/lldb.rst lldb/source/Interpreter/CommandInterpreter.cpp lldb/tools/driver/Driver.cpp Index: lldb/tools/driver/Driver.cpp =================================================================== --- lldb/tools/driver/Driver.cpp +++ 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) { Index: lldb/source/Interpreter/CommandInterpreter.cpp =================================================================== --- lldb/source/Interpreter/CommandInterpreter.cpp +++ 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,14 @@ 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; - } + llvm::Twine init_file_name = llvm::Twine(".lldbinit-") + + Language::GetNameForLanguageType(language) + + "-repl"; FileSystem::Instance().GetHomeDirectory(init_file); - llvm::sys::path::append(init_file, init_file_name); - + llvm::sys::path::append(init_file, init_file_name.str()); FileSystem::Instance().Resolve(init_file); } Index: lldb/docs/man/lldb.rst =================================================================== --- lldb/docs/man/lldb.rst +++ 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-<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
Index: lldb/tools/driver/Driver.cpp =================================================================== --- lldb/tools/driver/Driver.cpp +++ 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) { Index: lldb/source/Interpreter/CommandInterpreter.cpp =================================================================== --- lldb/source/Interpreter/CommandInterpreter.cpp +++ 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,14 @@ 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; - } + llvm::Twine init_file_name = llvm::Twine(".lldbinit-") + + Language::GetNameForLanguageType(language) + + "-repl"; FileSystem::Instance().GetHomeDirectory(init_file); - llvm::sys::path::append(init_file, init_file_name); - + llvm::sys::path::append(init_file, init_file_name.str()); FileSystem::Instance().Resolve(init_file); } Index: lldb/docs/man/lldb.rst =================================================================== --- lldb/docs/man/lldb.rst +++ 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-<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
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits