diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-03-29 17:12:08 +0000 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-03-29 17:12:08 +0000 |
commit | 903a9c74f07c6d200decfbb2427857e5f1038bb3 (patch) | |
tree | 90f20777e4e4764a35c130a77f7111353e3e0057 /lldb/scripts/Python/modules/readline/readline.cpp | |
parent | cdd4892f12e860905565f4e4444d7726618f89bd (diff) | |
download | bcm5719-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.cpp | 87 |
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 -} |