llvm: fix PythonString::GetString for >=python-3.7 (#13631)

* llvm: fix PythonString::GetString for >=python-3.7

* llvm/package.py: fix when the patch should be applied
This commit is contained in:
Daryl W. Grunau 2019-11-07 18:05:16 -07:00 committed by Adam J. Stewart
parent 119af6d71b
commit ae6229dee2
2 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,37 @@
From ecdefed7f6ba11421fe1ecc6c13a135ab7bcda73 Mon Sep 17 00:00:00 2001
From: Pavel Labath <labath@google.com>
Date: Mon, 23 Jul 2018 11:37:36 +0100
Subject: [PATCH] Fix PythonString::GetString for >=python-3.7
The return value of PyUnicode_AsUTF8AndSize is now "const char *".
---
.../Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp b/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
index 6a9d57d5a..94f16b2c7 100644
--- a/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
+++ b/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
@@ -404,14 +404,16 @@ llvm::StringRef PythonString::GetString() const {
return llvm::StringRef();
Py_ssize_t size;
- char *c;
+ const char *data;
#if PY_MAJOR_VERSION >= 3
- c = PyUnicode_AsUTF8AndSize(m_py_obj, &size);
+ data = PyUnicode_AsUTF8AndSize(m_py_obj, &size);
#else
+ char *c;
PyString_AsStringAndSize(m_py_obj, &c, &size);
+ data = c;
#endif
- return llvm::StringRef(c, size);
+ return llvm::StringRef(data, size);
}
size_t PythonString::GetSize() const {
--
2.18.0.233.g985f88cf7e-goog

View File

@ -604,6 +604,11 @@ class Llvm(CMakePackage):
# for a bug report about this problem in llvm master. # for a bug report about this problem in llvm master.
patch('constexpr_longdouble.patch', when='@6:8+libcxx') patch('constexpr_longdouble.patch', when='@6:8+libcxx')
# Backport from llvm master; see
# https://bugs.llvm.org/show_bug.cgi?id=38233
# for a bug report about this problem in llvm master.
patch('llvm_py37.patch', when='@4:6 ^python@3.7:')
@run_before('cmake') @run_before('cmake')
def check_darwin_lldb_codesign_requirement(self): def check_darwin_lldb_codesign_requirement(self):
if not self.spec.satisfies('+lldb platform=darwin'): if not self.spec.satisfies('+lldb platform=darwin'):