#
32064024 |
| 20-Oct-2015 |
Zachary Turner <zturner@google.com> |
Fix potential file i/o problem with python handles.
llvm-svn: 250838
|
#
c5b41d67 |
| 16-Oct-2015 |
Zachary Turner <zturner@google.com> |
Fix linkage of `init_lldb` SWIG method in Python 3.
llvm-svn: 250531
|
#
9c40264f |
| 15-Oct-2015 |
Zachary Turner <zturner@google.com> |
Introduce a `PythonFile` object, and use it everywhere.
Python file handling got an overhaul in Python 3, and it affects the way we have to interact with files. Notably:
1) `PyFile_FromFile` no lo
Introduce a `PythonFile` object, and use it everywhere.
Python file handling got an overhaul in Python 3, and it affects the way we have to interact with files. Notably:
1) `PyFile_FromFile` no longer exists, and instead we have to use `PyFile_FromFd`. This means having a way to get an fd from a FILE*. For this we reuse the lldb_private::File class to convert between FILE*s and fds, since there are some subtleties regarding ownership rules when FILE*s and fds refer to the same file. 2) PyFile is no longer a builtin type, so there is no such thing as `PyFile_Check`. Instead, files in Python 3 are just instances of `io.IOBase`. So the logic for checking if something is a file in Python 3 is to check if it is a subclass of that module.
Additionally, some unit tests are added to verify that `PythonFile` works as expected on Python 2 and Python 3, and `ScriptInterpreterPython` is updated to use `PythonFile` instead of manual calls to the various `PyFile_XXX` methods.
llvm-svn: 250444
show more ...
|
#
f8b22f8f |
| 13-Oct-2015 |
Zachary Turner <zturner@google.com> |
Fix ref counting of Python objects.
PythonObjects were being incorrectly ref-counted. This problem was pervasive throughout the codebase, leading to an unknown number of memory leaks and potentially
Fix ref counting of Python objects.
PythonObjects were being incorrectly ref-counted. This problem was pervasive throughout the codebase, leading to an unknown number of memory leaks and potentially use-after-free.
The issue stems from the fact that Python native methods can either return "borrowed" references or "owned" references. For the former category, you *must* incref it prior to decrefing it. And for the latter category, you should not incref it before decrefing it. This is mostly an issue when a Python C API method returns a `PyObject` to you, but it can also happen with a method accepts a `PyObject`. Notably, this happens in `PyList_SetItem`, which is documented to "steal" the reference that you give it. So if you pass something to `PyList_SetItem`, you cannot hold onto it unless you incref it first. But since this is one of only two exceptions in the entire API, it's confusing and difficult to remember.
Our `PythonObject` class was indiscriminantely increfing every object it received, which means that if you passed it an owned reference, you now have a dangling reference since owned references should not be increfed. We were doing this in quite a few places.
There was also a fair amount of manual increfing and decrefing prevalent throughout the codebase, which is easy to get wrong.
This patch solves the problem by making any construction of a `PythonObject` from a `PyObject` take a flag which indicates whether it is an owned reference or a borrowed reference. There is no way to construct a `PythonObject` without this flag, and it does not offer a default value, forcing the user to make an explicit decision every time.
All manual uses of `PyObject` have been cleaned up throughout the codebase and replaced with `PythonObject` in order to make RAII the predominant pattern when dealing with native Python objects.
Differential Revision: http://reviews.llvm.org/D13617 Reviewed By: Greg Clayton
llvm-svn: 250195
show more ...
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3 |
|
#
280eb8ab |
| 18-Aug-2015 |
Pavel Labath <labath@google.com> |
Fix Clang-tidy misc-use-override warnings in some files in include/lldb/Core, unify closing inclusion guards
patch by Eugene Zelenko
Differential Revision: http://reviews.llvm.org/D11695
llvm-svn:
Fix Clang-tidy misc-use-override warnings in some files in include/lldb/Core, unify closing inclusion guards
patch by Eugene Zelenko
Differential Revision: http://reviews.llvm.org/D11695
llvm-svn: 245275
show more ...
|
Revision tags: studio-1.4 |
|
#
d8d4a57b |
| 11-Aug-2015 |
Greg Clayton <gclayton@apple.com> |
First step in getting LLDB ready to support multiple different type systems.
This is the work done by Ryan Brown from http://reviews.llvm.org/D8712 that makes a TypeSystem class and abstracts types
First step in getting LLDB ready to support multiple different type systems.
This is the work done by Ryan Brown from http://reviews.llvm.org/D8712 that makes a TypeSystem class and abstracts types to be able to use a type system.
All tests pass on MacOSX and passed on linux the last time this was submitted.
llvm-svn: 244679
show more ...
|
Revision tags: llvmorg-3.7.0-rc2 |
|
#
2c1f46dc |
| 30-Jul-2015 |
Zachary Turner <zturner@google.com> |
Convert the ScriptInterpreter system to a plugin-based one.
Previously embedded interpreters were handled as ad-hoc source files compiled into source/Interpreter. This made it hard to disable a spe
Convert the ScriptInterpreter system to a plugin-based one.
Previously embedded interpreters were handled as ad-hoc source files compiled into source/Interpreter. This made it hard to disable a specific interpreter, or to add support for other interpreters and allow the developer to choose which interpreter(s) were enabled for a particular build.
This patch converts script interpreters over to a plugin-based system. Script interpreters now live in source/Plugins/ScriptInterpreter, and the canonical LLDB interpreter, ScriptInterpreterPython, is moved there as well.
Any new code interfacing with the Python C API must live in this location from here on out. Additionally, generic code should never need to reference or make assumptions about the presence of a specific interpreter going forward.
Differential Revision: http://reviews.llvm.org/D11431 Reviewed By: Greg Clayton
llvm-svn: 243681
show more ...
|