summaryrefslogtreecommitdiffstats
path: root/lldb/source
Commit message (Collapse)AuthorAgeFilesLines
* [LLDB] Implement interactive command interruptionAdrian McCarthy2017-09-214-14/+90
| | | | | | | | | | | | | | | | | | | | | The core of this change is the new CommandInterpreter::m_command_state, which models the state transitions for interactive commands, including an "interrupted" state transition. In general, command interruption requires cooperation from the code executing the command, which needs to poll for interruption requests through CommandInterpreter::WasInterrupted(). CommandInterpreter::PrintCommandOutput() implements an optionally interruptible printing of the command output, which for large outputs was likely the longest blocking part. (ex. target modules dump symtab on a complex binary could take 10+ minutes) patch by lemo Differential Revision: https://reviews.llvm.org/D37923 llvm-svn: 313904
* Fix warning caused by new clang::BuiltinType::Float16 added in r312794Ted Woodward2017-09-201-0/+1
| | | | llvm-svn: 313799
* Signal polling is supported with pselect (re-land r313704 without a Windows ↵Eugene Zemtsov2017-09-201-4/+0
| | | | | | | | | breakage) Older Android API levels don't have ppoll, but LLDB works just fine, since on Android it always uses pselect anyway. llvm-svn: 313726
* Rollback r313704 because of the Windows build breakEugene Zemtsov2017-09-201-0/+4
| | | | llvm-svn: 313707
* Signal polling is supported with pselectEugene Zemtsov2017-09-201-4/+0
| | | | | | | Older Android API levels don't have ppoll, but LLDB works just fine, since on Android it always uses pselect anyway. llvm-svn: 313704
* Re-land r313210 - Fix for bug 34532 - A few rough corners related to ↵Adrian McCarthy2017-09-194-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | post-mortem debugging (core/minidump) The main change is to avoid setting the process state as running when debugging core/minidumps (details in the bug). Also included a few small, related fixes around how the errors propagate in this case. Fixed the FreeBSD/Windows break: the intention was to keep Process::WillResume() and Process::DoResume() "in-sync", but this had the unfortunate consequence of breaking Process sub-classes which don't override WillResume(). The safer approach is to keep Process::WillResume() untouched and only override it in the minidump and core implementations. patch by lemo Bug: https://bugs.llvm.org/show_bug.cgi?id=34532 Differential Revision: https://reviews.llvm.org/D37651 llvm-svn: 313655
* Use ThreadLauncher to launch TaskPool threadsFrancis Ricci2017-09-194-4/+15
| | | | | | | | | | | | | | | | | | Summary: This allows for the stack size to be configured, which isn't possible with std::thread. Prevents overflowing the stack when performing complex operations in the task pool on darwin, where the default pthread stack size is only 512kb. This also moves TaskPool from Utility to Host. Reviewers: labath, tberghammer, clayborg Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D37930 llvm-svn: 313637
* Revert "Fix for bug 34532 - A few rough corners related to post-mortem ↵Adrian McCarthy2017-09-183-18/+2
| | | | | | | | | | debugging (core/minidump)" Broke Windows and FreeBSD (at least). This reverts commit 628ca7052b4a5dbace0f6205409113e12c8a78fa. llvm-svn: 313540
* Revert "Use ThreadLauncher to launch TaskPool threads"Francis Ricci2017-09-181-12/+1
| | | | | | This reverts commit r313537 because it fails to link on linux buildbots llvm-svn: 313539
* Use ThreadLauncher to launch TaskPool threadsFrancis Ricci2017-09-181-1/+12
| | | | | | | | | | | | | | | | Summary: This allows for the stack size to be configured, which isn't possible with std::thread. Prevents overflowing the stack when performing complex operations in the task pool on darwin, where the default pthread stack size is only 512kb. Reviewers: labath, tberghammer, clayborg Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D37930 llvm-svn: 313537
* Fix Linux remote debugging after r313442Tamas Berghammer2017-09-181-1/+2
| | | | | | | | | On Linux lldb-server sends an OK response to qfThreadInfo if no process is started yet. I don't know why would LLDB issue a qfThreadInfo packet before starting a process but creating a fake thread ID in case of an OK or Error respoinse sounds bad anyway so lets not do it. llvm-svn: 313525
* Fix compatibility with OpenOCD debug stub.Vadim Chugunov2017-09-162-7/+5
| | | | | | | | OpenOCD sends register classes as two separate <feature> nodes, fixed parser to process both of them. OpenOCD returns "l" in response to "qfThreadInfo", so IsUnsupportedResponse() was false and we were ending up without any threads in the process. I think it's reasonable to assume that there's always at least one thread. llvm-svn: 313442
* More precise c library feature detection for Android.Eugene Zemtsov2017-09-162-2/+2
| | | | llvm-svn: 313436
* Remove a couple of warnings pointed out by Ted Woodward.Jim Ingham2017-09-151-5/+11
| | | | llvm-svn: 313371
* Wire up the breakpoint name help string.Jim Ingham2017-09-154-7/+41
| | | | llvm-svn: 313327
* Add new files to the cmake lists.Jim Ingham2017-09-142-0/+3
| | | | llvm-svn: 313293
* Make breakpoint names real entities.Jim Ingham2017-09-1418-558/+1827
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When introduced, breakpoint names were just tags that you could apply to breakpoints that would allow you to refer to a breakpoint when you couldn't capture the ID, or to refer to a collection of breakpoints. This change makes the names independent holders of breakpoint options that you can then apply to breakpoints when you add the name to the breakpoint. It adds the "breakpoint name configure" command to set up or reconfigure breakpoint names. There is also full support for then in the SB API, including a new SBBreakpointName class. The connection between the name and the breakpoints sharing the name remains live, so if you reconfigure the name, all the breakpoint options all change as well. This allows a quick way to share complex breakpoint behavior among a bunch of breakpoints, and a convenient way to iterate on the set. You can also create a name from a breakpoint, allowing a quick way to copy options from one breakpoint to another. I also added the ability to make hidden and delete/disable protected names. When applied to a breakpoint, you will only be able to list, delete or disable that breakpoint if you refer to it explicitly by ID. This feature will allow GUI's that need to use breakpoints for their own purposes to keep their breakpoints from getting accidentally disabled or deleted. <rdar://problem/22094452> llvm-svn: 313292
* Remove uses of std::auto_ptr, it's going away in C++17.Benjamin Kramer2017-09-145-14/+5
| | | | | | | std::unique_ptr is pretty much a drop-in replacement here. Also remove nullptr checks that are doing nothing. llvm-svn: 313265
* Fix for bug 34532 - A few rough corners related to post-mortem debugging ↵Adrian McCarthy2017-09-133-2/+18
| | | | | | | | | | | | | | | | | | (core/minidump) The main change is to avoid setting the process state as running when debugging core/minidumps (details in the bug). Also included a few small, related fixes around how the errors propagate in this case. patch by lemo Bug: https://bugs.llvm.org/show_bug.cgi?id=34532 Differential Revision: https://reviews.llvm.org/D37651 llvm-svn: 313210
* [lldb] Adjust UpdateExternalModuleListIfNeeded method for the case of *.dwoAlexander Shaposhnikov2017-09-121-1/+23
| | | | | | | | | | | | | | | | | | | | | | | When LLDB loads "external" modules it looks at the presence of DW_AT_GNU_dwo_name. However, when the already created module (corresponding to .dwo itself) is being processed, it will see the presence of DW_AT_GNU_dwo_name (which contains the name of dwo file) and will try to call ModuleList::GetSharedModule again. In some cases (i.e. for empty files) Clang 4.0 generates a *.dwo file which has DW_AT_GNU_dwo_name, but no DW_AT_comp_dir. In this case the method ModuleList::GetSharedModule will fail and the warning will be printed. To workaround this issue, one can notice that in this case we don't actually need to try to load the already loaded module (corresponding to .dwo). Test plan: make check-all Differential revision: https://reviews.llvm.org/D37295 llvm-svn: 313083
* Plugins: fix resolution ambiguity in PDB pluginSaleem Abdulrasool2017-09-091-22/+24
| | | | | | | | | A clang change caused the inclusion of `llvm::Type` and `lldb_private::Type` to be pulled into the global namespace due to the `using namespace llvm;` and `using namespace lldb_private;`. Explicitly qualify the `Type` to resolve the ambiguity. NFC llvm-svn: 312841
* Fix for bug 34510 - Minidump target does not resolve new symbols correctlyAdrian McCarthy2017-09-072-4/+0
| | | | | | | | | | | | | | | | Even though the content of the minidump does not change in a debugging session, frames can't be indiscriminately be cached since modules and symbols can be explicitly added after the minidump is loaded. The fix is simple, just let the base Thread::ClearStackFrames() do its job. submitted by amccarth on behalf of lemo Bug: https://bugs.llvm.org/show_bug.cgi?id=34510 Differential Revision: https://reviews.llvm.org/D37527 llvm-svn: 312735
* Fix DW_FORM_strp parsingJan Kratochvil2017-09-051-4/+4
| | | | | | Differential revision: https://reviews.llvm.org/D37441 llvm-svn: 312562
* [ABI] Rewrite RegisterIsCalleeSaved.Davide Italiano2017-09-041-46/+11
| | | | | | | | | | | | | | | | | | The goal of this patch is twofold: First, it removes a wrong comment (at least, not correctly describing what the function does). Then, it rewrites the function to use a StringSwitch where the registers are enumerated explicitly instead of being computed programmatically. Other than being much shorter, it's much easier to read (and given the ABI won't change anytime soon, I don't think there's need to generalize). While here, I added an assert that the register name is always empty, as the previous implementation of the function assumed so. Differential Revision: https://reviews.llvm.org/D37420 llvm-svn: 312501
* [UUID] Reimplement comparison operators more canonically. NFCI.Davide Italiano2017-09-031-8/+4
| | | | llvm-svn: 312457
* [Interpreter] Simplify else after return. NFCI.Davide Italiano2017-09-031-3/+2
| | | | llvm-svn: 312454
* [Core/Value] Remove dead code that hasn't been touched in years. NFC.Davide Italiano2017-09-031-25/+0
| | | | llvm-svn: 312453
* FreeBSD: attach to pid from different cwdEd Maste2017-09-031-1/+8
| | | | | | | | | | | | attach by pid worked when running from the directory from which the target was launched, but failed from a different directory. Use the kern.proc.pathname sysctl to locate the target, falling back to the original case of the target's argv[0] if that fails. Based on a patch from Vignesh Balu. Differential Revision: https://reviews.llvm.org/D32271 llvm-svn: 312430
* [TypeSystem] Reduce code duplication merging two almost identical functions.Davide Italiano2017-08-311-14/+9
| | | | llvm-svn: 312267
* Now a ppc64le binary is correctly detected:Eugene Zemtsov2017-08-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (lldb) target create "tst" Current executable set to 'tst' (powerpc64le). (lldb) disassemble -n main tst`main: tst[0x7b0] <+0>: addis 2, 12, 2 tst[0x7b4] <+4>: addi 2, 2, 30544 tst[0x7b8] <+8>: mflr 0 Wihout the patch, the endianess was incorrect: (lldb) target create "tst" Current executable set to 'tst' (powerpc64). (lldb) disassemble -n main tst`main: tst[0x7b0] <+0>: .long 0x02004c3c ; unknown opcode tst[0x7b4] <+4>: rlwimi 23, 3, 8, 8, 28 tst[0x7b8] <+8>: lhzu 16, 2172(2) tst[0x7bc] <+12>: .long 0x100001f8 ; unknown opcode Simple binary used is identified as: $ file tst tst: ELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=17a8fa2b24ce2837ba6625fabb34e6b29c6c5db7, not stripped Patch by Gustavo Serra Scalet <gustavo.scalet@eldorado.org.br> Differential Revision: https://reviews.llvm.org/D36804 llvm-svn: 312151
* [IPv6] Fix a bug in the IPv6 listen behaviorChris Bieneman2017-08-291-3/+8
| | | | | | | | | | The socket bind address should either be localhost or anyaddress. This bug in the listen behavior was preventing lldb-server from opening sockets for non-localhost connections. The added test verifies that opening an anyaddress socket works and has a non-zero port assignment. This should resolve PR34183. llvm-svn: 312008
* update xpc service name.Jason Molenda2017-08-291-1/+1
| | | | llvm-svn: 311978
* Add support for the DWP debug info formatTamas Berghammer2017-08-2513-14/+317
| | | | | | | | | | | | | | | | | | | | Summary: The DWP (DWARF package) format is used to pack multiple dwo files generated by split-dwarf into a single ELF file to make distributing them easier. It is part of the DWARFv5 spec and can be generated by dwp or llvm-dwp from a set of dwo files. Caviats: * Only the new version of the dwp format is supported (v2 in GNU numbering schema and v5 in the DWARF spec). The old version (v1) is already deprecated but binutils 2.24 still generates that one. * Combining DWP files with module debugging is not yet supported. Subscribers: emaste, mgorny, aprantl Differential Revision: https://reviews.llvm.org/D36062 llvm-svn: 311775
* When parsing the DBGSourcePathRemapping plist entriesJason Molenda2017-08-242-1/+39
| | | | | | | | | | | | in a dSYM, and it's a version 2 DBGSourcePathRemapping, in addition to the build/source paths specified, add build/source paths with the last two filename components removed. This more generic remapping can sometimes help lldb to find the correct source file in complex projects. <rdar://problem/33973545> llvm-svn: 311622
* Log whether we found a step out plan or not.Jim Ingham2017-08-231-2/+6
| | | | llvm-svn: 311590
* Process: fix FXSAVE on x86Saleem Abdulrasool2017-08-232-4/+2
| | | | | | | | | The FXSAVE member `ftw` (FPU Tag Word) was given the wrong size (8-bit) instead of the correct width (16-bit) as per the x87 Programmer's Manual. Adjust this to ensure that we print out the complete value for the register. llvm-svn: 311579
* ObjC: fix some -Wpedantic warnings by removing ';'Saleem Abdulrasool2017-08-231-3/+3
| | | | | | Remove some stray ';' that were in the source code. NFC. llvm-svn: 311577
* [lldb] Correctly escape newlines and backslashes in the JSON serializerKuba Mracek2017-08-221-2/+3
| | | | | | | | JSON serializer fails to escape newlines and backslashes. Let's fix that. Differential Revision: https://reviews.llvm.org/D34322 llvm-svn: 311483
* [cmake] Explicitly link dependency libraries in the Host libraryMichal Gorny2017-08-211-1/+15
| | | | | | | | | | | | | | | | | | | | | | Add explicit linkage to the necessary system libraries in the Host library. Otherwise, the library fails to build with -Wl,--as-needed. The system libraries ended up being listed on the linker command-line before the static libraries needing them, resulting in --as-needed stripping them. Listing the dependent libraries explicitly is the canonical way of declaring libraries in CMake. It guarantees that the system library dependencies will be correctly propagated to reverse dependencies. The code used to link libraries reuses existing EXTRA_LIBS variable, copying code from other parts of LLDB. We might eventually remove the direct use of system libraries in the programs; however, I would prefer if we focused on fixing the build regressions in 5.0 branch first, and went further after the release. Differential Revision: https://reviews.llvm.org/D36885 llvm-svn: 311354
* [Plugins/ObjC] Remove more semicolons to placate -Wpedantic. NFCI.Davide Italiano2017-08-191-3/+3
| | | | llvm-svn: 311245
* [Plugins/ObjC] Remove unneded semicolon(s) to placate GCC -Wpedantic.Davide Italiano2017-08-191-4/+4
| | | | llvm-svn: 311244
* Commiting Christopher Brook's patch forJason Molenda2017-08-181-1/+2
| | | | | | | | "Prevent negative chars from being sign-extended into isprint and isspace which take and int and crash if the int is negative" https://reviews.llvm.org/D36620 llvm-svn: 311207
* [cmake] Add explicit linkage from Core to cursesMichal Gorny2017-08-171-0/+10
| | | | | | | | | | | | | | | | | | | | | | | The Core library calls functions provided by the curses library. Add an appropriate explicit LINK_LIBS to ${CURSES_LIBRARIES} to propagate the dependency correctly within the build system. It seems that so far the linkage was handled by some kind of implicit magic LLDB_SYSTEM_LIBS variable. However, it stopped working for unittests as the curses libraries are passed before the LLDBCore library, resulting in `-Wl,--as-needed` stripping the yet-unused library before it is required by LLDBCore, and effectively breaking the build. I think it's better to focus on listing all the dependencies explicitly and let CMake propagate them rather than trying to figure out why this hack stopped working. This is also more consistent with LLVM where the curses linkage in LLVMSupport is expressed directly in the library rather than deferred to the final programs. Differential Revision: https://reviews.llvm.org/D36358 llvm-svn: 311122
* convert hard tabs to spaces in PlatformOpenBSD.cppEd Maste2017-08-161-1/+1
| | | | | | | Another case of this was responsible for the whitespace conflict in D34776. llvm-svn: 311003
* Make i386-*-freebsd expression work on JIT pathEd Maste2017-08-1611-31/+59
| | | | | | | | | | | | | | | | * Enable i386 ABI creation for freebsd * Added an extra argument in ABISysV_i386::PrepareTrivialCall for mmap syscall * Unlike linux, the last argument of mmap is actually 64-bit(off_t). This requires us to push an additional word for the higher order bits. * Prior to this change, ktrace dump will show mmap failures due to invalid argument coming from the 6th mmap argument. Patch by Karnajit Wangkhem Differential Revision: https://reviews.llvm.org/D34776 llvm-svn: 311002
* Remove the DWARFExpression -> Clang ExpressionParser dependencyTamas Berghammer2017-08-169-52/+37
| | | | | | | | It was completly unused and broke the part of the encapsulation that common code shouldn't depend on specific plugins or language specific features. llvm-svn: 311000
* Update NSArray/NSDictionary/NSSet formatters to handle newJason Molenda2017-08-153-467/+546
| | | | | | | | | macOS 10.13 - High Sierra - internal layouts. Patch by Sean Callanan. <rdar://problem/33282015> llvm-svn: 310959
* [LLDB][MIPS] Fix process load/unload on android.Nitesh Jain2017-08-144-8/+25
| | | | | | | | | | | | To detect the correct function name based on the list of available symbols instead of the SDK version Reviewers: tberghammer, clayborg Subscribers: jaydeep, bhushan, lldb-commits Differential Revision: https://reviews.llvm.org/D36445 llvm-svn: 310856
* [LLDB][MIPS] Set the Section's file address forNitesh Jain2017-08-141-2/+4
| | | | | | | | | | | | ELF section to LLDB_INVALID_ADDRESS if SHF_ALLOC is not set. Reviewers: labath, clayborg Subscribers: jaydeep, bhushan, lldb-commits Differential Revision: https://reviews.llvm.org/D35784 llvm-svn: 310855
* Report inferior signals as signals, not exceptions, on FreeBSDEd Maste2017-08-104-50/+12
| | | | | | | | | | | | | | | | | | | | | This is the FreeBSD equivalent of r238549. This serves 2 purposes: * LLDB should handle inferior process signals SIGSEGV/SIGILL/SIGBUS/ SIGFPE the way it is suppose to be handled. Prior to this fix these signals will neither create a coredump, nor exit from the debugger or work for signal handling scenario. * eInvalidCrashReason need not report "unknown crash reason" if we have a valid si_signo llvm.org/pr23699 Patch by Karnajit Wangkhem Differential Revision: https://reviews.llvm.org/D35223 llvm-svn: 310591
OpenPOWER on IntegriCloud