Commit Graph

737 Commits

Author SHA1 Message Date
Todd Fiala d434a1d3e0 prepare_bindings.py: enable static bindings
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
2015-11-18 08:52:33 +00:00
Todd Fiala 9af81570c7 Added --find-swig option to allow searching for swig in path or other likely locations.
llvm-svn: 253346
2015-11-17 17:13:06 +00:00
Todd Fiala 84c72b6d75 Add Pythonic language binding wrapper generation script.
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
2015-11-17 07:17:38 +00:00
Jim Ingham 055a08a488 Add the ability (through the SB API & command line) to specify an address
breakpoint as "file address" so that the address breakpoint will track that
module even if it gets loaded in a different place.  Also fixed the Address
breakpoint resolver so that it handles this tracking correctly.

llvm-svn: 253308
2015-11-17 03:39:13 +00:00
Zachary Turner eddf19f995 Insert the SWIG version into LLDB's __init__.py
The goal here is to allow us to add skip / xfail decorators
based on SWIG version.

llvm-svn: 253262
2015-11-16 22:40:20 +00:00
Zachary Turner 32ac147b00 Python3 - Fix some issues related to `PythonFile` class.
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
2015-11-16 22:40:12 +00:00
Bruce Mitchener 60cd65aac2 Allow to override python-config executable name from command line
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
2015-11-15 01:56:21 +00:00
Zachary Turner b359b10725 Delete `PyObjectToString` and use `PythonObject::Str()`.
The latter function, from PythonDataObjects, is Python 3 ready and
the former was not.

llvm-svn: 252992
2015-11-13 01:24:25 +00:00
Zachary Turner 5b1ffdf674 Finish PyCallable -> PythonCallable conversion.
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
2015-11-12 20:11:02 +00:00
Zachary Turner 02bf92d226 Fix non-Windows build after r252906.
llvm-svn: 252909
2015-11-12 17:01:48 +00:00
Zachary Turner b58fb2f47a Begin converting uses of PyCallable to PythonCallable.
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
2015-11-12 16:23:16 +00:00
Zachary Turner b8058a5e6e Remove `FindSessionDictionary` and rely on PythonDataObjects.
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
2015-11-11 21:07:29 +00:00
Zachary Turner caab921f8a Convert python-wrapper.swig to use PythonDataObjects.
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
2015-11-11 19:42:35 +00:00
Zachary Turner d4870df9bf Python 3 - Use six in our embedded Python glue code.
llvm-svn: 252767
2015-11-11 17:59:57 +00:00
Zachary Turner 7d7814ae8a Symlink the `six` module during swig generation.
llvm-svn: 252764
2015-11-11 17:59:34 +00:00
Greg Clayton fe68904fa6 Fixed TypeMemberFunctionImpl to not use clang types directly but use the new 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
2015-11-10 17:47:04 +00:00
Zachary Turner 88ab3c70e6 Use PythonDataObjects in swig helper functions.
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
2015-11-09 23:23:52 +00:00
Enrico Granata 7123e2b5d7 Add SBType::IsAnonymousType() and relative plumbing in the debugger internals
For language that support such a thing, this API allows to ask whether a type is anonymous (i.e. has been given no name)

Comes with test case

llvm-svn: 252390
2015-11-07 02:06:57 +00:00
Zachary Turner 37a0fc483b Remove a debug print statement.
llvm-svn: 252384
2015-11-07 01:12:53 +00:00
Zachary Turner c22811bbcc Python 3 - Use __bool__() instead of __nonzero__() for truthiness.
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
2015-11-07 01:08:25 +00:00
Jim Ingham 0fcdac363c Make the language specifier to "break set" actually filter the names by their language. So for
instance:

break set -l c++ -r Name

will only break on C++ symbols that match Name, not ObjC or plain C symbols.  This also works
for "break set -n" and there are SB API's to pass this as well.

llvm-svn: 252356
2015-11-06 22:48:59 +00:00
Bruce Mitchener ddcd2de0d1 [swig] Remove check_lldb_swig_executable_file_exists.
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
2015-11-06 18:53:29 +00:00
Bruce Mitchener a18231a5e9 [swig] Start of pylint on python build scripts.
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
2015-11-05 23:57:33 +00:00
Jason Molenda 8ee4bff5ed Update for tvos or watchos builds.
llvm-svn: 252234
2015-11-05 23:42:18 +00:00
Zachary Turner 9858899148 Don't access class members inside of `__del__`.
Apparently this doesn't work as the attribute doesn't exist anymore.

llvm-svn: 252091
2015-11-04 23:03:10 +00:00
Zachary Turner ff836df6a4 Revert "Python 3 - Don't add the _d suffix to the symlink on Windows."
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
2015-11-04 01:26:48 +00:00
Zachary Turner b20ef35645 Python 3 - Don't add the _d suffix to the symlink on Windows.
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
2015-11-04 01:03:57 +00:00
Zachary Turner a7cd16b252 Revert part of r239007 related to creating the Python symlink.
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
2015-11-02 22:13:13 +00:00
Todd Fiala 15c0fbaae1 Rename argdumper to lldb-argdumper
http://reviews.llvm.org/D14169

llvm-svn: 251616
2015-10-29 05:07:12 +00:00
Enrico Granata 9e9cf54eb2 Add calls to the SB API to access the multi-language formatter category feature
llvm-svn: 251376
2015-10-27 01:10:35 +00:00
Siva Chandra 9ac7a6c51f [SBValue] Add a method GetNumChildren(uint32_t max)
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
2015-10-21 19:28:08 +00:00
Sean Callanan 3e7e915dca Added support for the "--repl" argument to LLDB.
This makes LLDB launch and create a REPL, specifying no target so that the REPL
can create one for itself.  Also added the "--repl-language" option, which
specifies the language to use.  Plumbed the relevant arguments and errors
through the REPL creation mechanism.

llvm-svn: 250773
2015-10-20 00:23:46 +00:00
Zachary Turner 1756e05688 Run py2to3 on lldb/scripts folder.
This mostly fixes some print statements, but there were also some
instances of dict.iteritems() lingering that this found.

llvm-svn: 250762
2015-10-19 23:45:25 +00:00
Saleem Abdulrasool a8bf774b96 Python: follow python guidelines for header usage
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
2015-10-19 01:16:17 +00:00
Zachary Turner 5f3fd800f7 Make some more of the LLDB/SWIG/Python glue Python 3 aware.
Mostly this is just converting some print statements to print
functions.

llvm-svn: 250533
2015-10-16 17:52:32 +00:00
Zachary Turner 5c3a198266 Make swig generation python scripts python 3 compatible.
llvm-svn: 250532
2015-10-16 17:52:12 +00:00
Zachary Turner 7d6d218e12 Convert SWIG typemap string operations to PythonObjects.
llvm-svn: 250530
2015-10-16 17:51:49 +00:00
Zachary Turner eda01c3175 Update SWIG typemaps to use `PythonFile`.
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
2015-10-16 16:39:18 +00:00
Jason Molenda 59e847f997 I've been seeing a problem with xcodebuilds on macosx for
a few days now where compiler-rt gets an error when trying
to run its install step (related to not being able to find
an ios version of a dylib), breaking the lldb build.  I
don't know if I'm the only one seeing this or if everyone has
been doing the same hack I've been doing - removing the
compiler-rt project from the default checkout.

It's only used for the ASAN test case.  So I'm temporarily
checking in my hackaround of not checking out compiler-rt
by default, I'll try to get back and look at what's actually
happening in the compiler-rt install step that is causing
the problems when built as a part of lldb.

llvm-svn: 250487
2015-10-16 01:27:21 +00:00
Zachary Turner 60c24f70fe Change swig interface files to use PythonDataObjects.
llvm-svn: 250303
2015-10-14 16:59:32 +00:00
Adrian McCarthy 1d34f74470 Fix TestTargetAPI.py test for users who use Swig 3.0.5 or greater.
DifferentialRevision: http://reviews.llvm.org/D13679
llvm-svn: 250188
2015-10-13 17:54:15 +00:00
Todd Fiala 9b7d5fd0b0 Support RHEL 7 and similar systems that use architecture-specific Python lib dirs
This change commits: http://reviews.llvm.org/D13625

llvm-svn: 250093
2015-10-12 20:12:27 +00:00
Jim Ingham ee205c43f7 Add a doc string for ReturnFromFrame.
llvm-svn: 250082
2015-10-12 19:02:08 +00:00
Ryan Brown 702c4b865e Simple readline functionality for interactive python on linux.
Differential Revision: http://reviews.llvm.org/D13268

llvm-svn: 249478
2015-10-06 22:21:08 +00:00
Zachary Turner 6532c6a1e7 Update swig generation scripts to support Python 3.
llvm-svn: 249467
2015-10-06 21:11:28 +00:00
Greg Clayton b3788eaf99 SBTarget::Attach(SBAttachInfo &) was changed to not be asynchronous back in February and this affected Xcode's abililty to cancel an attach to process by name.
Added the ability to specify if an attach by name should be synchronous or not in SBAttachInfo and ProcessAttachInfo.

<rdar://problem/22821480>

llvm-svn: 249361
2015-10-05 22:58:37 +00:00
Greg Clayton 886c7d42df A little more cleanup in the build script that creates a list of archive directories to make things more clear.
llvm-svn: 247329
2015-09-10 19:46:25 +00:00
Greg Clayton a865b80c5a Removed debug prints that I accidentally left in.
llvm-svn: 247227
2015-09-10 00:57:34 +00:00
Greg Clayton a93877b9dc On MacOSX, revamp the way we link against the llvm/clang .a files by making a text file that contains all .a filenames and use that when linking in Xcode.
llvm-svn: 247224
2015-09-10 00:48:44 +00:00
Greg Clayton 140038a4ee Fix the build-llvm.pl to not create one monster .a file from all of the llvm and clang .a files. We now just make a file list which we pass to the linker.
llvm-svn: 247202
2015-09-09 22:35:25 +00:00