[Lldb-commits] [lldb] [lldb] Remove setupterm workaround on macOS (PR #93714)
via lldb-commits
lldb-commits at lists.llvm.org
Wed May 29 11:09:22 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Jonas Devlieghere (JDevlieghere)
<details>
<summary>Changes</summary>
Remove setupterm workaround on macOS which caused an issues after the removal of the terminfo dependency. There's a comment that explains why the workaround is present, but neither Jim nor I were able to reproduce the issue by setting TERM to vt100.
---
Full diff: https://github.com/llvm/llvm-project/pull/93714.diff
1 Files Affected:
- (modified) lldb/source/Host/common/Editline.cpp (-43)
``````````diff
diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp
index ed61aecc23b9b..561ec228cdb23 100644
--- a/lldb/source/Host/common/Editline.cpp
+++ b/lldb/source/Host/common/Editline.cpp
@@ -31,20 +31,6 @@
using namespace lldb_private;
using namespace lldb_private::line_editor;
-// Workaround for what looks like an OS X-specific issue, but other platforms
-// may benefit from something similar if issues arise. The libedit library
-// doesn't explicitly initialize the curses termcap library, which it gets away
-// with until TERM is set to VT100 where it stumbles over an implementation
-// assumption that may not exist on other platforms. The setupterm() function
-// would normally require headers that don't work gracefully in this context,
-// so the function declaration has been hoisted here.
-#if defined(__APPLE__)
-extern "C" {
-int setupterm(char *term, int fildes, int *errret);
-}
-#define USE_SETUPTERM_WORKAROUND
-#endif
-
// Editline uses careful cursor management to achieve the illusion of editing a
// multi-line block of text with a single line editor. Preserving this
// illusion requires fairly careful management of cursor state. Read and
@@ -1402,35 +1388,6 @@ Editline::Editline(const char *editline_name, FILE *input_file,
// Get a shared history instance
m_editor_name = (editline_name == nullptr) ? "lldb-tmp" : editline_name;
m_history_sp = EditlineHistory::GetHistory(m_editor_name);
-
-#ifdef USE_SETUPTERM_WORKAROUND
- if (m_output_file) {
- const int term_fd = fileno(m_output_file);
- if (term_fd != -1) {
- static std::recursive_mutex *g_init_terminal_fds_mutex_ptr = nullptr;
- static std::set<int> *g_init_terminal_fds_ptr = nullptr;
- static llvm::once_flag g_once_flag;
- llvm::call_once(g_once_flag, [&]() {
- g_init_terminal_fds_mutex_ptr =
- new std::recursive_mutex(); // NOTE: Leak to avoid C++ destructor
- // chain issues
- g_init_terminal_fds_ptr = new std::set<int>(); // NOTE: Leak to avoid
- // C++ destructor chain
- // issues
- });
-
- // We must make sure to initialize the terminal a given file descriptor
- // only once. If we do this multiple times, we start leaking memory.
- std::lock_guard<std::recursive_mutex> guard(
- *g_init_terminal_fds_mutex_ptr);
- if (g_init_terminal_fds_ptr->find(term_fd) ==
- g_init_terminal_fds_ptr->end()) {
- g_init_terminal_fds_ptr->insert(term_fd);
- setupterm((char *)0, term_fd, (int *)0);
- }
- }
- }
-#endif
}
Editline::~Editline() {
``````````
</details>
https://github.com/llvm/llvm-project/pull/93714
More information about the lldb-commits
mailing list