This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG0224738c1abd: [lldb/interpreter] Improve REPL init file compatibility (authored by mib).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86987/new/ 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,16 @@ 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); } 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,16 @@ 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); } 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