summaryrefslogtreecommitdiffstats
path: root/lldb/tools/driver
Commit message (Collapse)AuthorAgeFilesLines
...
* [driver] Some NFC cleanupJonas Devlieghere2018-11-282-30/+33
| | | | | | | This patch includes some small things I noticed while refactoring the driver but didn't want to include in that patch. llvm-svn: 347817
* [Reproducers] Improve reproducer API and add unit tests.Jonas Devlieghere2018-11-271-1/+3
| | | | | | | | | | | | | | | | | | | When I landed the initial reproducer framework I knew there were some things that needed improvement. Rather than bundling it with a patch that adds more functionality I split it off into this patch. I also think the API is stable enough to add unit testing, which is included in this patch as well. Other improvements include: - Refactor how we initialize the loader and generator. - Improve naming consistency: capture and replay seems the least ambiguous. - Index providers by name and make sure there's only one of each. - Add convenience methods for creating and accessing providers. Differential revision: https://reviews.llvm.org/D54616 llvm-svn: 347716
* [Driver] Use libOption with tablegen.Jonas Devlieghere2018-11-274-646/+585
| | | | | | | | | | | | | This patch modifies the lldb driver to use libOption for option parsing. It allows us to decouple option parsing from option processing which is important when arguments affect initialization. This was previously not possible because the debugger need to be initialized as some option interpretation (like the scripting language etc) was handled by the debugger, rather than in the driver. Differential revision: https://reviews.llvm.org/D54692 llvm-svn: 347709
* Add GDB remote packet reproducer.Jonas Devlieghere2018-11-131-10/+27
| | | | llvm-svn: 346780
* Remove an early-return from Driver::ParseArgs thatJason Molenda2018-10-261-4/+0
| | | | | | | | | | was added as a part of D52604 / r343348. If the lldb driver is run without any arguments, .lldbinit file reading was not enabled. <rdar://problem/45570242> llvm-svn: 345422
* [Driver] Remove unused declarations and "include" directivesTatyana Krasnukha2018-09-282-9/+1
| | | | llvm-svn: 343357
* Clean-up usage of OptionDefinition arraysTatyana Krasnukha2018-09-282-87/+61
| | | | | | Differential Revision: https://reviews.llvm.org/D52604 llvm-svn: 343348
* Invert dependency between lldb-framework and lldb-suiteAlex Langford2018-07-171-1/+1
| | | | | | | | | | | | | | | | | Summary: Currently, if you build lldb-framework the entire framework doesn't actually build. In order to build the entire framework, you need to actually build lldb-suite. This abstraction doesn't feel quite right because lldb-framework truly does depend on lldb-suite (liblldb + related tools). In this change I want to invert their dependency. This will mean that lldb and finish_swig will depend on lldb-framework in a framework build, and lldb-suite otherwise. Instead of adding conditional logic everywhere to handle this, I introduce LLDB_SUITE_TARGET to handle it. Differential Revision: https://reviews.llvm.org/D49406 llvm-svn: 337311
* Move pretty stack trace printer into driver.Jonas Devlieghere2018-07-171-0/+7
| | | | | | | | | | | | We used to have a pretty stack trace printer in SystemInitializerCommon. This was disabled on Apple because we didn't want the library to be setting signal handlers, as this was causing issues when loaded into Xcode. However, I think it's useful to have this for the LLDB driver, so I moved it up to use the PrettyStackTraceProgram in the driver's main. Differential revision: https://reviews.llvm.org/D49377 llvm-svn: 337261
* Allow specifying an exit code for the 'quit' commandRaphael Isemann2018-07-112-4/+15
| | | | | | | | | | | | | | | | | | | Summary: This patch adds the possibility to specify an exit code when calling quit. We accept any int, even though it depends on the user what happens if the int is out of the range of what the operating system supports as exit codes. Fixes rdar://problem/38452312 Reviewers: davide, jingham, clayborg Reviewed By: jingham Subscribers: clayborg, jingham, lldb-commits Differential Revision: https://reviews.llvm.org/D48659 llvm-svn: 336824
* Introduce lldb-framework CMake target and centralize its logicAlex Langford2018-06-181-9/+1
| | | | | | | | | | | | | Summary: In this patch I aim to do the following: 1) Create an lldb-framework target that acts as the target that handles generating LLDB.framework. Previously, liblldb acted as the target for generating the framework in addition to generating the actual lldb library. This made the target feel overloaded. 2) Centralize framework generation as much as it makes sense to do so. 3) Create a target lldb-suite, which depends on every tool and library that makes liblldb fully functional. One result of having this target is it makes tracking dependencies much clearer. Differential Revision: https://reviews.llvm.org/D48060 llvm-svn: 334968
* Delete some dead codeAlex Langford2018-06-081-1/+0
| | | | llvm-svn: 334320
* Fix LLVM_LINK_LLVM_DYLIB build (pr35053)Pavel Labath2017-10-311-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: r316368 broke this build when it introduced a reference to a pthread function to the Utility module. This caused cmake to generate an incorrect link line (wrong order of libs) because it did not see the dependency from Utility to the system libraries. Instead these libraries were being manually added to each final target. This changes moves the dependency management from the individual targets to the lldbUtility module, which is consistent with how llvm does it. The final targets will pick up these libraries as they will be a part of the link interface of the module. Technically, some of these dependencies could go into the host module, as that's where most of the os-specific code is, but I did not try to investigate which ones. Reviewers: zturner, sylvestre.ledru Subscribers: lldb-commits, mgorny Differential Revision: https://reviews.llvm.org/D39246 llvm-svn: 316997
* Fix the SIGINT handlersAdrian McCarthy2017-09-201-5/+5
| | | | | | | | | | | | | | | | | 1. Fix a data race (g_interrupt_sent flag usage was not thread safe, signals can be handled on arbitrary threads) 2. exit() is not signal-safe, replaced it with the signal-safe equivalent _exit() (This differs from the patch on Phabrictor because I had to add `#include <atomic>` to get the definition of `std::atomic_flag`.) patch by lemo Differential Revision: https://reviews.llvm.org/D37926 llvm-svn: 313785
* Clean up lldb-types.hPavel Labath2017-07-181-0/+1
| | | | | | | | | | | | | | | | | | | | Summary: It defined a couple of types (condition_t) which we don't use anymore, as we have c++11 goodies now. I remove these definitions. Also it unnecessarily included a couple of headers which weren't necessary for it's operation. I remove these, and place the includes in the relevant files (usually .cpp, usually in Host code) which use them. This allows us to reduce namespace pollution in most of the lldb files which don't need the OS-specific definitions. Reviewers: zturner, jingham Subscribers: ki.stfu, lldb-commits Differential Revision: https://reviews.llvm.org/D35113 llvm-svn: 308304
* [Windows] Remove the #include <eh.h> hack.Zachary Turner2017-03-031-1/+0
| | | | | | | | | | Prior to MSVC 2015 we had to manually include this header any time we were going to include <thread> or <future> due to a bug in MSVC's STL implementation. This has been fixed in MSVC for some time now, and we require VS 2015 minimum, so we can remove this across all subprojects. llvm-svn: 296906
* Finish breaking the dependency from Utility.Zachary Turner2017-02-161-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D29964 llvm-svn: 295368
* [cmake] Remove VERSION property from executable targetsPavel Labath2017-02-011-3/+0
| | | | | | | | | | | | | | | | Summary: Currently, in the default configuration, the "install" target will install all llvm executables unversioned, except for three lldb tools which will be installed versioned (with a non-versioned symlink). This rectifies that situation. Reviewers: beanz, sylvestre.ledru, mgorny Subscribers: ki.stfu, lldb-commits Differential Revision: https://reviews.llvm.org/D29126 llvm-svn: 293803
* [CMake] Add accurate dependency specificationsChris Bieneman2017-01-311-11/+17
| | | | | | | | | | | | | | | | | Summary: This patch adds accurate dependency specifications to the mail LLDB libraries and tools. In all cases except lldb-server, these dependencies are added in addition to existing dependencies (making this low risk), and I performed some code cleanup along the way. For lldb-server I've cleaned up the LLVM dependencies down to just the minimum actually required. This is more than lldb-server actually directly references, and I've left a todo in the code to clean that up. Reviewers: labath, zturner Subscribers: lldb-commits, danalbert, srhines, ki.stfu, mgorny, jgosnell Differential Revision: https://reviews.llvm.org/D29333 llvm-svn: 293686
* Another windows build fixPavel Labath2017-01-061-0/+1
| | | | llvm-svn: 291234
* Make lldb -Werror clean for -Wstring-conversionDavid Blaikie2017-01-061-6/+3
| | | | | | | | | Also found/fixed one bug identified by this warning in RenderScriptx86ABIFixups.cpp where a string literal was being used in an effort to provide a name for an instruction/register, but was instead being passed as the bool 'isVolatile' parameter. llvm-svn: 291198
* [CMake] Refactor LLDB libraries and tools to be componentsChris Bieneman2016-12-151-3/+1
| | | | | | In LLVM's CMake we have a convention that components have both a build and an install target. Making LLDB follow this convention will allow LLDB to take advantage of the LLVM_DISTRIBUTION_COMPONENTS build option from LLVM. llvm-svn: 289879
* Fix build for mingw.Hafiz Abid Qadeer2016-12-151-2/+2
| | | | | | | | | | | | Summary: I was building lldb using cross mingw-w64 toolchain on Linux and observed some issues. This is first patch in the series to fix that build. It mostly corrects the case of include files and adjusts some #ifdefs from _MSC_VER to _WIN32 and vice versa. I built lldb on windows with VS after applying this patch to make sure it does not break the build there. Reviewers: zturner, labath, abidh Subscribers: ki.stfu, mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D27759 llvm-svn: 289821
* Replace __ANDROID_NDK__ with __ANDROID__Pavel Labath2016-12-021-2/+0
| | | | | | | | | | | | | | | | | | | | Summary: This replaces all the uses of the __ANDROID_NDK__ define with __ANDROID__. This is a preparatory step to remove our custom android toolchain file and rely on the standard android NDK one instead, which does not provide this define. Instead I rely, on __ANDROID__, which is set by the compiler. I haven't yet removed the cmake variable with the same name, as we will need to do something completely different there -- NDK toolchain defines CMAKE_SYSTEM_NAME to Android, while our current one pretends it's linux. Reviewers: tberghammer, zturner Subscribers: danalbert, srhines, mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D27305 llvm-svn: 288494
* Fixup r284466 - try to unbreak NetBSDPavel Labath2016-10-181-3/+4
| | | | | | | NetBSD does not have getopt as well - we need to apply the workaround there too. FreeBSD seems to be fine though. llvm-svn: 284469
* [cmake] Make dependencies of lldb libraries private, take 2Pavel Labath2016-10-181-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The dependencies of our libraries (only liblldb, really) we marked as public, which caused all their dependencies to be repeated when linking any executables to them. This is a problem because then all the .a files could end up being linked twice, once to liblldb and once again to to the executable linking against liblldb (lldb, lldb-mi). As it turns out, our build actually depends on this behavior: - on windows, lldb does not have getopt, so it pulls it from inside liblldb, even though getopt is not a part of the exported interface of liblldb (maybe some of the bsd variants have this problem as well) - lldb-mi uses llvm, which again is not exported by liblldb This change does not actually fix these problems (that is going to be a hard one), but it does make them explicit by moving this magic from add_lldb_library to the places the executable targets are defined. That way, I can link the additional .a files only on targets that really need it, and the other targets can build cleanly and make sure we don't regress further. It also fixes the LLVM_LINK_LLVM_DYLIB build on linux. Reviewers: zturner, beanz Subscribers: ki.stfu, lldb-commits, mgorny Differential Revision: https://reviews.llvm.org/D25680 llvm-svn: 284466
* Fix typo in lldb --helpEd Maste2016-09-211-1/+1
| | | | | | | | Patch by Yacine Belkadi Differential Revision: https://reviews.llvm.org/D12158 llvm-svn: 282123
* *** This commit represents a complete reformatting of the LLDB source codeKate Stone2016-09-064-1396/+1257
| | | | | | | | | | | | | | | | | | | | | | | *** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
* Don't disable stdin buffering on WindowsAdrian McCarthy2016-04-141-6/+5
| | | | | | | | Disabling buffering exposes a bug in the MS VS 2015 CRT implementation of fgets, where you sometimes have to hit Enter twice, depending on if the input had an odd or even number of characters. This was hidden until a few days ago by the Python initialization which was re-enabling buffering on the streams. A few days ago, Enrico make the Python initialization on-demand, which exposed this problem. llvm-svn: 266384
* [Driver] Fix a segfault in signal handlersPavel Labath2016-04-111-2/+6
| | | | | | | | | | | | | | | Summary: If we recieve a SIGCONT or SIGTSTP, while the driver is shutting down (which, sometimes, we do, for reasons which are not completely clear to me), we would crash to due a null pointer dereference. Guard against this situation. Reviewers: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D18965 llvm-svn: 265958
* Update the INFOPLIST_FILE setting in the xcode project fileJason Molenda2016-03-241-1/+1
| | | | | | | | so that the lldb command line binary's version #'s are updated correctly. <rdar://problem/25346711> llvm-svn: 264353
* Unicode support on Win32.Zachary Turner2016-03-221-30/+47
| | | | | | | | | | | | | Win32 API calls that are Unicode aware require wide character strings, but LLDB uses UTF8 everywhere. This patch does conversions wherever necessary when passing strings into and out of Win32 API calls. Patch by Cameron Differential Revision: http://reviews.llvm.org/D17107 Reviewed By: zturner, amccarth llvm-svn: 264074
* Delete the custom implementation of signal() on Windows.Zachary Turner2016-03-183-55/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The Windows SDK provides a version of signal() that is much more limited compared to other platforms. It only supports about 5-6 signal values. LLDB uses signals for a number of things, most notably to handle Ctrl+C so we can gracefully shut down. The portability solution to this on Windows has been to provide a hand-rolled implementation of `signal` using the name `signal` so that you could write code that simply calls signal directly and it would work. But this introduces a multiply defined symbol with the builtin version and depending on how you included header files, you could get yourself into a situation where you had linker errors. To make matters worse, it led to a ton of compiler warnings. Worst of all though is that this custom implementation of signal was, in fact, identical for the purposes of handling Ctrl+C as the builtin implementation of signal. So it seems to have literally not been serving any useful purpose. This patch deletes all the custom signal() functions for Windows, and includes the signal.h system header, so that any calls to signal now go to the actual version provided by the Windows SDK. Differential Revision: http://reviews.llvm.org/D18287 llvm-svn: 263858
* This patch stops lldb from loading a .lldbinit file from the currentJason Molenda2016-02-192-10/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | working directory by default -- a typical security problem that we need to be more conservative about. It adds a new target setting, target.load-cwd-lldbinit which may be true (always read $cwd/.lldbinit), false (never read $cwd/.lldbinit) or warn (warn if there is a $cwd/.lldbinit and don't read it). The default is set to warn. If this is met with unhappiness, we can look at changing the default to true (to match current behavior) on a different platform. This does not affect reading of ~/.lldbinit - that will still be read, as before. If you run lldb in your home directory, it will not warn about the presence of a .lldbinit file there. I had to add two SB API - SBHostOS::GetUserHomeDirectory and SBFileSpec::AppendPathComponent - for the lldb driver code to be able to get the home directory path in an OS neutral manner. The warning text is There is a .lldbinit file in the current directory which is not being read. To silence this warning without sourcing in the local .lldbinit, add the following to the lldbinit file in your home directory: settings set target.load-cwd-lldbinit false To allow lldb to source .lldbinit files in the current working directory, set the value of this variable to true. Only do so if you understand and accept the security risk. <rdar://problem/24199163> llvm-svn: 261280
* Silence some clang warningsSaleem Abdulrasool2016-02-151-1/+2
| | | | | | Silences -Wmissing-brace and -Wformat-pedantic warnings from clang on Linux. NFC. llvm-svn: 260914
* Remove autoconf support from source directories.Eugene Zelenko2016-01-281-36/+0
| | | | | | Differential revision: http://reviews.llvm.org/D16662 llvm-svn: 259098
* Wrap Notes in --help output to 80 columnsEd Maste2015-12-161-7/+13
| | | | llvm-svn: 255774
* Add more autotools/gmake NetBSD glueBruce Mitchener2015-11-151-2/+1
| | | | | | | | | | | | | | Summary: This diff approaches building the project natively on NetBSD with the autoconf/gmake framework. Patch by Kamil Rytarowski. Thanks! Reviewers: emaste, clayborg Subscribers: tberghammer, joerg, brucem, lldb-commits Differential Revision: http://reviews.llvm.org/D14531 llvm-svn: 253153
* Added support for the "--repl" argument to LLDB. Sean Callanan2015-10-202-77/+123
| | | | | | | | | 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
* cmake fixes for lldb target.Todd Fiala2015-09-161-0/+10
| | | | | | | | | | | ninja lldb now does the following: * forces the python post-build step to fire, which sets up the python lldb module properly. * on Darwin and Linux, requires the lldb-server target to be built. * on Darwin, requires the debugserver target to be built. See http://reviews.llvm.org/D12899 for details. llvm-svn: 247810
* [cmake] Remove LLVM_NO_RTTI.Bruce Mitchener2015-09-031-1/+0
| | | | | | | | | | | | | | Summary: This doesn't exist in other LLVM projects any longer and doesn't do anything. Reviewers: chaoren, labath Subscribers: emaste, tberghammer, lldb-commits, danalbert Differential Revision: http://reviews.llvm.org/D12586 llvm-svn: 246749
* Make command files specified to the driver actually print theirJim Ingham2015-07-082-11/+11
| | | | | | | | | | results if the -Q option is not provided. Also took out the quietly option from AddInitialCommand, we don't use that to set this option, we use the override set by the -Q option. <rdar://problem/21232087> llvm-svn: 241652
* Remove unused editline includesPavel Labath2015-06-051-10/+0
| | | | | | LLDB included editline in a couple of places, not respecting LLDB_DISABLE_LIBEDIT. As far as I can tell, these includes are not used, so I am removing them. llvm-svn: 239199
* Fixed a ton of gcc compile warningsVince Harron2015-05-131-4/+0
| | | | | | | | | | Removed some unused variables, added some consts, changed some casts to const_cast. I don't think any of these changes are very controversial. Differential Revision: http://reviews.llvm.org/D9674 llvm-svn: 237218
* Work around lack of %zd printf format specifier in MSVC libs.Adrian McCarthy2015-03-301-2/+2
| | | | llvm-svn: 233569
* Removed an unused global variable.Hafiz Abid Qadeer2015-03-121-5/+0
| | | | | | | | | | This variable "g_debugger_name" is not used anywhere. It also causes a warning. I was first going to change its type to fix the warning then noticed that it is not being used. So removing it. Committed as Obvious. llvm-svn: 232043
* Correctly quote arguments in LLDB driverPavel Labath2015-03-051-12/+18
| | | | | | | | | | | | | | Summary: LLDB driver was simply tacking quotes around the strings in lldb commands, hoping that will work. This changes it to properly escape quotes and backslashes. Reviewers: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D8083 llvm-svn: 231394
* Resubmit "[CMake] Change lldbAPI to be a CMake OBJECT library."Zachary Turner2015-02-241-1/+1
| | | | | | | | | | This resubmits r230380. The primary cause of the failure was actually just a warning, which we can disable at the CMake level in a followup patch on the LLVM side. The other thing which was actually an error on the bot should be able to be fixed with a clean. llvm-svn: 230389
* Revert "[CMake] Change lldbAPI to be a CMake OBJECT library."Zachary Turner2015-02-241-1/+1
| | | | | | | This reverts commit r230380. It causes CMake to fail on certain machines with an error about needing to use string(STRIP_GENEX). llvm-svn: 230382
* [CMake] Change lldbAPI to be a CMake OBJECT library.Zachary Turner2015-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | An OBJECT library is a special type of CMake library that produces no archive, has no link interface, and no link inputs. It is like a regular archive, just without the physical output. To link against an OBJECT library, you reference it in the *source* file list of a library using the special syntax $<TARGET_OBJECTS:lldbAPI>. This will cause every object file to be passed to the linker independently, as opposed to a single archive being passed to the linker. This is *extremely* important on Windows. lldbAPI exports all of the SB classes using __declspec(dllexport). Unfortunately for technical reasons it is not possible (well, extremely difficult) to get the linker to propagate a __declspec(dllexport) attribute from a symbol in an object file in an archive to a DLL that links against that archive. The solution to this is for the DLL to link the object files directly. So lldbAPI must be an OBJECT library. This fixes an issue that has been present since the duplicated lldbAPI file lists were removed, which would cause linker failures. As a side effect, this also makes LLDB_DISABLE_PYTHON=1 work again on Windows, which was previously totally broken. llvm-svn: 230380
OpenPOWER on IntegriCloud