summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python
Commit message (Collapse)AuthorAgeFilesLines
* Fix some issues with bytes and strings in Python 3.Zachary Turner2016-01-251-3/+8
| | | | | | | | | | | | | | | | | | SBProcess::ReadMemory and other related functions such as WriteMemory are returning Python string() objects. This means that in Python 3 that are returning Unicode objects. In reality they should be returning bytes objects which is the same as a string in Python 2, but different in Python 3. This patch updates the generated SWIG code to return Python bytes objects for all memory related functions. One quirk of this patch is that the C++ signature of ReadCStringFromMemory has it writing c-string data into a void*. This confuses our swig typemaps which expect that a void* means byte data. So I hacked up a custom typemap which maps this specific function to treat the void* as string data instead of byte data. llvm-svn: 258743
* Fix more occurrences of string/bytes/bytearray in swig typemaps.Zachary Turner2016-01-251-20/+44
| | | | llvm-svn: 258742
* Fix swig typemap for SBEvent.Zachary Turner2016-01-251-6/+14
| | | | | | | | | | | This needs to be able to handle bytes, strings, and bytearray objects. In Python 2 this was easy because bytes and strings are the same thing, but in Python 3 the 2 cases need to be handled separately. So as not to mix raw Python C API code with PythonDataObjects code, I've also introduced a PythonByteArray class to PythonDataObjects to make the paradigm used here consistent. llvm-svn: 258741
* Fix ResourceWarning about unclosed file in use_lldb_suite_root.py.Zachary Turner2016-01-151-3/+6
| | | | llvm-svn: 257945
* Get rid of const char** typemaps.Zachary Turner2016-01-131-70/+7
| | | | | | | | We already have char** typemaps which were near copy-pastes of the const char** versions. This way we have only one version that works for both. llvm-svn: 257670
* Fix TestProcessLaunch for Python 3.Zachary Turner2016-01-131-21/+29
| | | | | | | | | | | | | | | | | | There were a number of problems preventing this from working: 1. The SWIG typemaps for converting Python lists to and from C++ arrays were not updated for Python 3. So they were doing things like PyString_Check instead of using the PythonString from PythonDataObjects. 2. ProcessLauncherWindows was ignoring the environment completely. So any test that involved launching an inferior with any kind of environment variable would have failed. 3. The test itself was using process.GetSTDOUT(), which isn't implemented on Windows. So this was changed to save the value of the environment variable in a local variable and have the debugger look at the value of the variable. llvm-svn: 257669
* Fix an issue where scripted commands would not actually print any of their ↵Enrico Granata2016-01-131-1/+3
| | | | | | | | output if an immediate output file was set in the result object via a Python file object Fixes rdar://24130303 llvm-svn: 257644
* Fix Python 3 issues related to OS plugins.Zachary Turner2016-01-111-9/+11
| | | | | | | | | | * lldb::tid_t was being converted incorrectly, so this is updated to use PythonInteger instead of manual Python Native API calls. * OSPlugin_RegisterContextData was assuming that the result of get_register_data was a string, when in fact it is a bytes. So this method is updated to use PythonBytes to do the work. llvm-svn: 257398
* __ne__ is the actual Python operator; __neq__ is a typoEnrico Granata2015-12-181-1/+1
| | | | llvm-svn: 256053
* Change finishSwigPythonLLDB.py to copy six.py instead of simlink itTed Woodward2015-12-111-11/+26
| | | | | | | | | | | | Summary: If six.py is simlink'd, an installation won't be able to find it unless it has access to the source tree that lldb was built from. Reviewers: zturner Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15422 llvm-svn: 255340
* Remove `lldb.root` and just look for the file we care about.Zachary Turner2015-11-201-1/+1
| | | | llvm-svn: 253679
* Revert "prepare_bindings.py: enable static bindings"Todd Fiala2015-11-193-83956/+7
| | | | | | This reverts commit 40f789f2dc6bb80fd25a33f91e452d081ed9d0ee. llvm-svn: 253575
* Remove superseded buildSwigWrapperClasses.py and buildSwigPython.py classesTodd Fiala2015-11-181-782/+0
| | | | | | | This closes: http://reviews.llvm.org/D14783 llvm-svn: 253513
* Remove the scripts/Python/build-swig-Python.sh script.Todd Fiala2015-11-181-378/+0
| | | | | | This logically goes with my previous commit. llvm-svn: 253491
* Fix some issues with swig & string conversion.Zachary Turner2015-11-181-5/+16
| | | | | | | | | | | | | | | | | | | | This patch fixes two issues: 1) Popen needs to be used with universal_newlines=True by default. This elicits automatic decoding from bytes -> string in Py3, and has no negative effects in other Py versions. 2) The swig typemaps for converting between string and (char*, int) did not work correctly when the length of the string was 0, indicating an error. In this case we would try to construct a string from uninitialized data. 3) Ironically, the bug mentioned in #2 led to a test passing on Windows that was actually broken, because the test was written such that the assertion was never even getting checked, so it passed by default. So we additionally fix this test to also fail if the method errors. By fixing this test it's now broken on Windows, so we also xfail it. llvm-svn: 253487
* prepare_bindings.py: enable static bindingsTodd Fiala2015-11-183-7/+83956
| | | | | | | | | | | | | | | Added a new flag, --allow-static-binding. When specified, if (and only if) the swig binary cannot be found, then the LLDBWrapPython.cpp and lldb.py from the scripts/Python/{static-binding-dir} are copied into the place where swig would have generated them. {static-binding-dir} defaults to static-binding, and can be overridden with the --static-binding-dir command line argument. The static bindings checked in are from r253424. llvm-svn: 253448
* Add Pythonic language binding wrapper generation script.Todd Fiala2015-11-171-0/+435
| | | | | | | | | | | | | | | | | | | | | | | | This is only used by Xcode at the moment. It replaces the buildSwigWrapperClasses.py and related per-script-language scripts. It also fixes a couple bugs in those w/r/t Xcode usage: * the presence of the GCC_PREPROCESSOR_DEFINITIONS env var should not be short-circuiting generation of the language binding; rather, only if LLDB_DISABLE_PYTHON is present within that environment variable. * some logic around what to do when building in "non-Makefile" mode. I've switched the handling of that to be on a "--framework" flag - if specified, we build an OS X-style framework; otherwise, we go with non. Putting this up now only attached to the Xcode build so others can look at it but not be affected by it yet. After this, I'll tackle the finalizer, along with trying it locally on Linux. llvm-svn: 253317
* Insert the SWIG version into LLDB's __init__.pyZachary Turner2015-11-161-5/+30
| | | | | | | The goal here is to allow us to add skip / xfail decorators based on SWIG version. llvm-svn: 253262
* Python3 - Fix some issues related to `PythonFile` class.Zachary Turner2015-11-161-0/+5
| | | | | | | | Python 3 has lots of new debug asserts, and some of these were firing on PythonFile. Specifically related to handling of invalid files. llvm-svn: 253261
* Allow to override python-config executable name from command lineBruce Mitchener2015-11-151-1/+2
| | | | | | | | | | | | | | Summary: pkgsrc (on NetBSD) ships with python2.7-config. Patch by Kamil Rytarowski. Thanks! Reviewers: emaste, clayborg Subscribers: brucem, lldb-commits, joerg Differential Revision: http://reviews.llvm.org/D14528 llvm-svn: 253152
* Delete `PyObjectToString` and use `PythonObject::Str()`.Zachary Turner2015-11-131-43/+12
| | | | | | | The latter function, from PythonDataObjects, is Python 3 ready and the former was not. llvm-svn: 252992
* Finish PyCallable -> PythonCallable conversion.Zachary Turner2015-11-121-258/+88
| | | | | | | | | | | | | | This finishes the effort to port python-wrapper.swig code over to using PythonDataObjects. Also included in this patch is the removal of `PyCallable` from `python-wrapper.swig`, as it is no longer used after having been replaced by `PythonCallable` everywhere. There might be additional cleanup as followup patches, but it should be all fairly simple and minor. llvm-svn: 252939
* Fix non-Windows build after r252906.Zachary Turner2015-11-121-1/+1
| | | | llvm-svn: 252909
* Begin converting uses of PyCallable to PythonCallable.Zachary Turner2015-11-121-213/+157
| | | | | | | | | | | | | | | | PyCallable is a class that exists solely within the swig wrapper code. PythonCallable is a more generic implementation of the same idea that can be used by any Python-related interop code, and lives in PythonDataObjects.h The CL is mostly mechanical, and it doesn't cover every possible user of PyCallable, because I want to minimize the impact of this change (as well as making it easier to figure out what went wrong in case this causes a failure). I plan to finish up the rest of the changes in a subsequent patch, culminating in the removal of PyCallable entirely. llvm-svn: 252906
* Remove `FindSessionDictionary` and rely on PythonDataObjects.Zachary Turner2015-11-111-190/+140
| | | | | | | | This had been relegated to a simple forwarding function, so just delete it in preparation of migrating all of these functions out of python-wrapper.swig. llvm-svn: 252803
* Convert python-wrapper.swig to use PythonDataObjects.Zachary Turner2015-11-111-99/+43
| | | | | | | | | This only begins to port python-wrapper.swig over. Since this code can be pretty hairy, I plan to do this incrementally over a series of patches, each time removing or converting more code over to the PythonDataObjects code. llvm-svn: 252788
* Symlink the `six` module during swig generation.Zachary Turner2015-11-111-22/+43
| | | | llvm-svn: 252764
* Fixed TypeMemberFunctionImpl to not use clang types directly but use the new ↵Greg Clayton2015-11-101-0/+14
| | | | | | | | | | CompilerDecl class to do the job in an abstract way. Fixed a crash that would happen if you tried to get the name of a constructor or destructor by calling "getDeclName()" instead of calling getName() (which would assert and crash). Added the ability to get function arguments names from SBFunction. llvm-svn: 252622
* Use PythonDataObjects in swig helper functions.Zachary Turner2015-11-091-31/+31
| | | | | | | | | | | | | | | | | Relying on manual Python C API calls is error prone, especially when trying to maintain compatibility with Python 2 and Python 3. This patch additionally fixes what appears to be a potentially serious memory leak, in that were were incref'ing two values returned from the session dictionary but never decref'ing them. There was a comment indicating that it was intentional, but the reasoning was, I believe, faulty and it resulted in a legitimate memory leak. Switching everything to PythonObject based classes solves both the compatibility issues as well as the resource leak issues. llvm-svn: 252536
* Remove a debug print statement.Zachary Turner2015-11-071-1/+0
| | | | llvm-svn: 252384
* Python 3 - Use __bool__() instead of __nonzero__() for truthiness.Zachary Turner2015-11-072-1/+38
| | | | | | | | | | | | | | | | | | | | | | | Python has a complicated mechanism of checking an objects truthity. This involves a number of steps, which end with calling two private methods on an object (if they are implemented). In Python 2 these two methods are `__nonzero__` and `__len__`, and in Python 3 they are `__bool__` and `__len__`. Because we *also* define a __len__ method for certain iterable types, this was triggering a situation in Python 3 where `__nonzero__` wasn't defined, so it was calling `__len__`, which was returning 0 (for example an SBDebugger with no targets), and as a result the truthosity was determined to be False. We fix this by correctly using ` __bool__` for Python 3, and leave the behavior under Python 2 unchanged. Note that this fix is only implemented in the SWIG generation python script, and not the SWIG generation shell script. Someone more familiar than me with shell scripts will need to fix them to support this for Python 3 if desired. llvm-svn: 252382
* [swig] Remove check_lldb_swig_executable_file_exists.Bruce Mitchener2015-11-061-33/+21
| | | | | | | | | | | | | | | | | Summary: Code that tried to find swig and then split the path into a separate path and filename is being removed. The invoking build system always provides the location of swig and we don't need to split it into 2 pieces only to recombine it a short time later. Reviewers: zturner, domipheus Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14415 llvm-svn: 252330
* [swig] Start of pylint on python build scripts.Bruce Mitchener2015-11-053-1059/+1053
| | | | | | | | | | | | | | | | | | | | | | | Summary: This does a broad first pass on cleaning up a lot of the noise when using pylint on these scripts. It mostly addresses issues of: * Mixed tabs and spaces. * Trailing whitespace. * Semicolons where they aren't needed. * Incorrect whitespace around () and []. * Superfluous parentheses. There will be subsequent patches with further changes that build upon these. Reviewers: zturner, domipheus Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14375 llvm-svn: 252244
* Revert "Python 3 - Don't add the _d suffix to the symlink on Windows."Zachary Turner2015-11-041-4/+2
| | | | | | | | | | | | This reverts commit e59c95ca936f5a0a8abb987b8605fd8bf82b03b6. This was a mistake on my part. The real problem was with my environment. I was using a release interpreter to try to load my debug extension module. I noticed this after I finally managed to get into my extension module's init method, and then it segfaulted with heap errors due to mismatched CRT (debug vs. release) llvm-svn: 252030
* Python 3 - Don't add the _d suffix to the symlink on Windows.Zachary Turner2015-11-041-2/+4
| | | | | | | | | | | In Python 2, a debug extension module required an _d suffix, so for example the extension module `_lldb` would be backed by the file `_lldb_d.pyd` if built in debug mode, and `_lldb.pyd` if built in release mode. In Python 2, although undocumented, this seems to no longer be the case, and even for a debug extension module, the interpreter will only look for the `_lldb.pyd` name. llvm-svn: 252026
* Revert part of r239007 related to creating the Python symlink.Zachary Turner2015-11-021-9/+0
| | | | | | | | | | | | | | | This has apparently been broken since June, but only on non-Windows. Perhaps nobody noticed it because if the symlink is already there it won't try to re-create it, and nobody ever tried doing a clean build. In any case, I will let the original author attempt to fix this if he is still interested. the problem is that in the normal case of not setting BUILD_SHARED_LIBS and simply running ninja, it would link _lldb.so to a non-existent location, creating a dangling symlink. llvm-svn: 251840
* Rename argdumper to lldb-argdumperTodd Fiala2015-10-292-13/+13
| | | | | | http://reviews.llvm.org/D14169 llvm-svn: 251616
* [SBValue] Add a method GetNumChildren(uint32_t max)Siva Chandra2015-10-211-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Along with this, support for an optional argument to the "num_children" method of a Python synthetic child provider has also been added. These have been added with the following use case in mind: Synthetic child providers currently have a method "has_children" and "num_children". While the former is good enough to know if there are children, it does not give any insight into how many children there are. Though the latter serves this purpose, calculating the number for children of a data structure could be an O(N) operation if the data structure has N children. The new method added in this change provide a middle ground. One can call GetNumChildren(K) to know if a child exists at an index K which can be as large as the callers tolerance can be. If the caller wants to know about children beyond K, it can make an other call with 2K. If the synthetic child provider maintains state about it counting till K previosly, then the next call is only an O(K) operation. Infact, all calls made progressively with steps of K will be O(K) operations. Reviewers: vharron, clayborg, granata.enrico Subscribers: labath, lldb-commits Differential Revision: http://reviews.llvm.org/D13778 llvm-svn: 250930
* Run py2to3 on lldb/scripts folder.Zachary Turner2015-10-192-19/+19
| | | | | | | This mostly fixes some print statements, but there were also some instances of dict.iteritems() lingering that this found. llvm-svn: 250762
* Python: follow python guidelines for header usageSaleem Abdulrasool2015-10-191-1/+5
| | | | | | | Python requires that Python.h is included before any std header. Not doing so results in conflicts with standards macros such as `_XOPEN_SOURCE`. NFC. llvm-svn: 250673
* Make swig generation python scripts python 3 compatible.Zachary Turner2015-10-161-26/+26
| | | | llvm-svn: 250532
* Convert SWIG typemap string operations to PythonObjects.Zachary Turner2015-10-161-32/+45
| | | | llvm-svn: 250530
* Update SWIG typemaps to use `PythonFile`.Zachary Turner2015-10-161-12/+18
| | | | | | | | Using the Python native C API is non-portable across Python versions, so this patch changes them to use the `PythonFile` class which hides the version specific differences behind a single interface. llvm-svn: 250525
* Change swig interface files to use PythonDataObjects.Zachary Turner2015-10-142-82/+85
| | | | llvm-svn: 250303
* Simple readline functionality for interactive python on linux.Ryan Brown2015-10-062-6/+55
| | | | | | Differential Revision: http://reviews.llvm.org/D13268 llvm-svn: 249478
* Update swig generation scripts to support Python 3.Zachary Turner2015-10-062-31/+35
| | | | llvm-svn: 249467
* Convert "long" input to "long long" in typemap for lldb::tid_t.Siva Chandra2015-09-041-1/+1
| | | | | | | | | | | | Summary: lldb::tid_t is 64 bit, but "long" need not always be 64 bit. Reviewers: chying, clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D12650 llvm-svn: 246885
* We want Python int or long to both be usable as-a tid_t for API purposes. ↵Enrico Granata2015-09-021-0/+12
| | | | | | Introduce a typemap to this effect llvm-svn: 246709
* [Python] Allow PyLong values in integer lists (when converting to C lists)Siva Chandra2015-07-011-0/+32
| | | | | | | | | | | | | | Test Plan: dotest.py -p TestSBData Reviewers: clayborg, granata.enrico Reviewed By: clayborg, granata.enrico Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10821 llvm-svn: 241208
* [LLDBSwigPythonCallTypeScript] Remove redundant call to type summary func.Siva Chandra2015-06-251-2/+0
| | | | | | | | | | | | Reviewers: clayborg, granata.enrico Reviewed By: clayborg, granata.enrico Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10625 llvm-svn: 240698
OpenPOWER on IntegriCloud