summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python/modules/readline/readline.cpp
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2019-03-29 17:12:08 +0000
committerJonas Devlieghere <jonas@devlieghere.com>2019-03-29 17:12:08 +0000
commit903a9c74f07c6d200decfbb2427857e5f1038bb3 (patch)
tree90f20777e4e4764a35c130a77f7111353e3e0057 /lldb/scripts/Python/modules/readline/readline.cpp
parentcdd4892f12e860905565f4e4444d7726618f89bd (diff)
downloadbcm5719-llvm-903a9c74f07c6d200decfbb2427857e5f1038bb3.tar.gz
bcm5719-llvm-903a9c74f07c6d200decfbb2427857e5f1038bb3.zip
[Python] Remove readline module
Todd added this empty readline module to workaround an issue with an old version of Python on Ubuntu in 2014 (18841). In the meantime, libedit seems to have fixed the underlying issue, and indeed, I wasn't able to reproduce this. Differential revision: https://reviews.llvm.org/D59972 llvm-svn: 357277
Diffstat (limited to 'lldb/scripts/Python/modules/readline/readline.cpp')
-rw-r--r--lldb/scripts/Python/modules/readline/readline.cpp87
1 files changed, 0 insertions, 87 deletions
diff --git a/lldb/scripts/Python/modules/readline/readline.cpp b/lldb/scripts/Python/modules/readline/readline.cpp
deleted file mode 100644
index b84dbb819f9..00000000000
--- a/lldb/scripts/Python/modules/readline/readline.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// NOTE: Since Python may define some pre-processor definitions which affect the
-// standard headers on some systems, you must include Python.h before any
-// standard headers are included.
-#include "Python.h"
-
-#include <stdio.h>
-
-#ifndef LLDB_DISABLE_LIBEDIT
-#include <editline/readline.h>
-#endif
-
-// Simple implementation of the Python readline module using libedit.
-// In the event that libedit is excluded from the build, this turns
-// back into a null implementation that blocks the module from pulling
-// in the GNU readline shared lib, which causes linkage confusion when
-// both readline and libedit's readline compatibility symbols collide.
-//
-// Currently it only installs a PyOS_ReadlineFunctionPointer, without
-// implementing any of the readline module methods. This is meant to
-// work around LLVM pr18841 to avoid seg faults in the stock Python
-// readline.so linked against GNU readline.
-
-#ifndef LLDB_DISABLE_LIBEDIT
-PyDoc_STRVAR(moduleDocumentation,
- "Simple readline module implementation based on libedit.");
-#else
-PyDoc_STRVAR(moduleDocumentation,
- "Stub module meant to avoid linking GNU readline.");
-#endif
-
-#if PY_MAJOR_VERSION >= 3
-static struct PyModuleDef readline_module = {
- PyModuleDef_HEAD_INIT, // m_base
- "readline", // m_name
- moduleDocumentation, // m_doc
- -1, // m_size
- nullptr, // m_methods
- nullptr, // m_reload
- nullptr, // m_traverse
- nullptr, // m_clear
- nullptr, // m_free
-};
-#else
-static struct PyMethodDef moduleMethods[] = {{nullptr, nullptr, 0, nullptr}};
-#endif
-
-#ifndef LLDB_DISABLE_LIBEDIT
-static char *
-#if PY_MAJOR_VERSION >= 3
-simple_readline(FILE *stdin, FILE *stdout, const char *prompt)
-#else
-simple_readline(FILE *stdin, FILE *stdout, char *prompt)
-#endif
-{
- rl_instream = stdin;
- rl_outstream = stdout;
- char *line = readline(prompt);
- if (!line) {
- char *ret = (char *)PyMem_Malloc(1);
- if (ret != NULL)
- *ret = '\0';
- return ret;
- }
- if (*line)
- add_history(line);
- int n = strlen(line);
- char *ret = (char *)PyMem_Malloc(n + 2);
- strncpy(ret, line, n);
- free(line);
- ret[n] = '\n';
- ret[n + 1] = '\0';
- return ret;
-}
-#endif
-
-PyMODINIT_FUNC initreadline(void) {
-#ifndef LLDB_DISABLE_LIBEDIT
- PyOS_ReadlineFunctionPointer = simple_readline;
-#endif
-
-#if PY_MAJOR_VERSION >= 3
- return PyModule_Create(&readline_module);
-#else
- Py_InitModule4("readline", moduleMethods, moduleDocumentation,
- static_cast<PyObject *>(NULL), PYTHON_API_VERSION);
-#endif
-}
OpenPOWER on IntegriCloud