summaryrefslogtreecommitdiffstats
path: root/lldb
Commit message (Collapse)AuthorAgeFilesLines
...
* [FormatManager] Provide only one variant of EnableCategory.Davide Italiano2019-12-031-11/+2
| | | | All the callers pass a single language anyway.
* [DataVisualization] Simplify. NFCI.Davide Italiano2019-12-031-2/+1
|
* [TypeCategory] Nothing passes down a list of languages.Davide Italiano2019-12-032-9/+4
| | | | | | | | | | | | Summary: This should allow further simplifications, but it's a first step. Reviewers: teemperor, jingham, friss Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70983
* [EditLine] Fix RecallHistory to make it go in the right direction.Jonas Devlieghere2019-12-032-30/+82
| | | | | | | | | | | | | | | | | | | The naming used by editline for the history operations is counter intuitive to how it's used in lldb for the REPL. - The H_PREV operation returns the previous element in the history, which is newer than the current one. - The H_NEXT operation returns the next element in the history, which is older than the current one. This exposed itself as a bug in the REPL where the behavior of up- and down-arrow was inverted. This wasn't immediately obvious because of how we save the current "live" entry. This patch fixes the bug and introduces and enum to wrap the editline operations that match the semantics of lldb. Differential revision: https://reviews.llvm.org/D70932
* [lldb/Reproducer] Add version checkJonas Devlieghere2019-12-035-4/+53
| | | | | | | | | | | | | | | | | | | To ensure a reproducer works correctly, the version of LLDB used for capture and replay must match. Right now the reproducer already contains the LLDB version. However, this is purely informative. LLDB will happily replay a reproducer generated with a different version of LLDB, which can cause subtle differences. This patch adds a version check which compares the current LLDB version with the one in the reproducer. If the version doesn't match, LLDB will refuse to replay. It also adds an escape hatch to make it possible to still replay the reproducer without having to mess with the recorded version. This might prove useful when you know two versions of LLDB match, even though the version string doesn't. This behavior is triggered by passing a new flag -reproducer-skip-version-check to the lldb driver. Differential revision: https://reviews.llvm.org/D70934
* [lldb] Remove unneeded semicolon in IOHandlerCursesGUIPavel Labath2019-12-031-1/+1
|
* [lldb] Use llvm range functions in LineTable.cppPavel Labath2019-12-031-6/+2
| | | | to avoid needing to declare iterators everywhere.
* [LLDB] Disable MSVC warning C4190: ↵Alexandre Ganea2019-12-032-0/+24
| | | | | | 'LLDBSwigPythonBreakpointCallbackFunction' has C-linkage specified, but returns UDT 'llvm::Expected<bool>' which is incompatible with C Differential Revision: https://reviews.llvm.org/D70830
* [lldb][NFC] Move Curses interface implementation to own fileRaphael Isemann2019-12-036-4051/+4106
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: The IOHandler class source file is currently around 4600 LOC. However only 200 of these lines are concerned with the actual IOHandler class and the rest are the implementations for Editline, IOHandlerConfirm and the Curses interface. All these large features also cause that the IOHandler (which is in Core) has a large set of dependencies on other parts of LLDB. This patch splits out the code for the curses interface into its own file. This way the simple IOHandler code is no longer buried in-between much larger functionalities. Next up is splitting out the other IOHandlers into their own files and then move them to more appropriate parts of LLDB. Reviewers: labath, clayborg, JDevlieghere Reviewed By: labath Subscribers: mgorny, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70946
* Revert "[LiveDebugValues] Introduce entry values of unmodified params"Djordje Todorovic2019-12-032-59/+15
| | | | This reverts commit rG4cfceb910692 due to LLDB test failing.
* [lldb][NFC] Extract searching for function SymbolContexts out of ↵Raphael Isemann2019-12-032-92/+116
| | | | | | | | | | ClangExpressionDeclMap::LookupFunction This code was just creating a new SymbolContextList with any found functions in the front and orders them by how close they are to the current frame. This refactors this code into its own function to make this more obvious. Doesn't do any other changes to the code, so this is NFC.
* [lldb] Remove all remaining tabs from TestReturnValue.pyRaphael Isemann2019-12-031-5/+5
| | | | | | I assumed this was just a single typo, but it seems we actually have a whole bunch of tabs in this file which cause Python to complain about mixing tabs and spaces.
* [lldb][NFC] Test going up/down one line in the multiline expression editorRaphael Isemann2019-12-031-0/+67
|
* Fixup 6d18e53: xfail TestShowLocationDwarf5.py properlyDiana Picus2019-12-031-1/+1
| | | | Forgot to squash this...
* [lldb] Remove tab from TestReturnValue.pyRaphael Isemann2019-12-031-1/+1
| | | | | | | | | Mixing tabs and spaces makes Python exit with this error: File "llvm/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py", line 23 return (self.getArchitecture() == "aarch64" and self.getPlatform() == "linux") ^ TabError: inconsistent use of tabs and spaces in indentation
* [lldb] Move register info "augmentation" from gdb-remote into ABIPavel Labath2019-12-035-154/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously the ABI plugin exposed some "register infos" and the gdb-remote code used those to fill in the missing bits. Now, the "filling in" code is in the ABI plugin itself, and the gdb-remote code just invokes that. The motivation for this is two-fold: a) the "augmentation" logic is useful outside of process gdb-remote. For instance, it would allow us to avoid repeating the register number definitions in minidump code. b) It gives more implementation freedom to the ABI classes. Now that these "register infos" are essentially implementation details, classes can use other methods to obtain dwarf/eh_frame register numbers -- for instance they can consult llvm MC layer. Since the augmentation code was not currently tested anywhere, I took the opportunity to create a simple test for it. Reviewers: jasonmolenda, clayborg, tatyana-krasnukha Subscribers: aprantl, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70906
* [LiveDebugValues] Introduce entry values of unmodified paramsDjordje Todorovic2019-12-032-15/+59
| | | | | | | | | | | | | | | | | | | | | The idea is to remove front-end analysis for the parameter's value modification and leave it to the value tracking system. Front-end in some cases marks a parameter as modified even the line of code that modifies the parameter gets optimized, that implies that this will cover more entry values even. In addition, extending the support for modified parameters will be easier with this approach. Since the goal is to recognize if a parameter’s value has changed, the idea at very high level is: If we encounter a DBG_VALUE other than the entry value one describing the same variable (parameter), we can assume that the variable’s value has changed and we should not track its entry value any more. That would be ideal scenario, but due to various LLVM optimizations, a variable’s value could be just moved around from one register to another (and there will be additional DBG_VALUEs describing the same variable), so we have to recognize such situation (otherwise, we will lose a lot of entry values) and salvage the debug entry value. Differential Revision: https://reviews.llvm.org/D68209
* Mark some tests as xfail on AArch64 LinuxDiana Picus2019-12-0310-5/+36
| | | | | | | | | I have either opened new bug reports for these tests, or added links to existing bugs. This should help make the lldb-aarch64-ubuntu buildbot green (there will still be some unexpected passes that someone should look into, but those can be handled later).
* [lldb][NFC] Remove ThreadSafeSTLVector and ThreadSafeSTLMap and their use in ↵Raphael Isemann2019-12-034-217/+47
| | | | | | | | | | | | | | | | | | | | | | ValueObjectSynthetic Summary: ThreadSafeSTLVector and ThreadSafeSTLMap are not useful for achieving any degree of thread safety in LLDB and should be removed before they are used in more places. They are only used (unsurprisingly incorrectly) in `ValueObjectSynthetic::GetChildAtIndex`, so this patch replaces their use there with a simple mutex with which we guard the related data structures. This doesn't make ValueObjectSynthetic::GetChildAtIndex any more thread-safe, but on the other hand it at least allows us to get rid of the ThreadSafeSTL* data structures without changing the observable behaviour of ValueObjectSynthetic (beside that it is now a few bytes smaller). Reviewers: labath, JDevlieghere, jingham Reviewed By: labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70845
* [LLDB] [test] Try to fix the test from 7d019d1a3b when run on Windows.Martin Storsjö2019-12-021-2/+2
|
* [lldb/CMake] Add in_call_stack to the utilities packageJonas Devlieghere2019-12-021-1/+2
| | | | | A subset of the examples are shipped as python packages. Include the in_call_stack utility.
* [lldb/CMake] Simplify logic for adding example Python packages (NFC)Jonas Devlieghere2019-12-021-26/+24
| | | | | | | This simplifies the CMake logic for adding the Python examples to the Python package. It unifies the use of create_python_package by adding the NOINIT option and removes the `target` argument, which is always `finish_swig`.
* [LLDB] Set the right address size on output DataExtractors from ObjectFileMartin Storsjö2019-12-022-1/+62
| | | | | | | | | | | | | | | | | | | | | If filling in a DataExtractor from an ObjectFile, e.g. via the ReadSectionData method, the output DataExtractor gets the address size from the m_data member. ObjectFile's m_data member is initialized without knowledge about the address size (so the address size is set based on the host's sizeof(void*), and at that point within ObjectFile's constructor, virtual methods implemented in subclasses (like GetAddressByteSize()) can't be called, therefore fix it up when filling in external DataExtractors. This makes sure that line tables from executables with a different address size are parsed properly; previously this tripped up DWARFDebugLine::LineTable::parse for 32 bit executables on a 64 bit host, as the address size in the line table (4) didn't match the one set in the DWARFDataExtractor. Differential Revision: https://reviews.llvm.org/D70848
* [lldb] Fix TestFormattersSBAPI testAntónio Afonso2019-12-021-7/+10
| | | | | | | | | | | | | | | | | Summary: This test was broken in two ways: * Using the wrong API (e.g.: format = instead of SetFormat) * The hex checker was only checking "01" which will pass with 0x0000001 Reviewers: clayborg, lanza, wallace Reviewed By: clayborg Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70884
* [lldb][NFC] Don't calculate member indices in ↵Raphael Isemann2019-12-021-2/+0
| | | | | | DWARFASTParserClang::ParseChildMembers We keep counting members and then don't do anything with the computed result.
* [lldb][NFC] Use raw_ostream instead of Stream in Baton::GetDescriptionRaphael Isemann2019-12-028-49/+56
| | | | | Removing raw_ostream here is getting us closer to removing LLDB's Stream class.
* [lldb][NFC] Make Stream's IndentLevel an unsigned integers.Raphael Isemann2019-12-023-11/+13
| | | | | We expect it to be always positive values and LLVM/Clang's IndentLevel values are already unsigned integers, so we should do the same.
* [lldb][NFC] Add 'breakpoint command list' testRaphael Isemann2019-12-022-0/+62
| | | | | | The command has zero test coverage and I'll have to touch the code formatting the output commands, so let's start by adding a test for it.
* [LLDB] [ARM] Use r11 as frame pointer on Windows on ARMMartin Storsjö2019-11-294-2/+152
| | | | | | | Extend EmulateMOVRdRm to identify "mov r11, sp" in thumb mode as setting the frame pointer, if r11 is the frame pointer register. Differential Revision: https://reviews.llvm.org/D70797
* [lldb][NFC] Remove unused ClangASTContext::GetBasicType(ConstString)Raphael Isemann2019-11-292-7/+0
|
* [lldb][NFC] Remove ClangASTContext::GetBuiltinTypeForEncodingAndBitSize overloadRaphael Isemann2019-11-294-59/+41
|
* [lldb][NFC] Explicitly ask for a ClangASTContext in ClangASTSourceRaphael Isemann2019-11-295-31/+25
| | | | | | | | | | | ClangASTSource currently takes a clang::ASTContext and keeps that around, but a lot of LLDB's functionality for doing operations on a clang::ASTContext is in its ClangASTContext twin class. We currently constantly recompute the respective ClangASTContext from the clang::ASTContext while we instead could just pass and store a ClangASTContext in the ClangASTSource. This also allows us to get rid of a bunch of unreachable error checking for cases where recomputation fails for some reason.
* [lldb][NFC] Early exit in ClangASTContext::CreateInstanceRaphael Isemann2019-11-291-41/+41
|
* [lldb] Fix windows build for 38870afPavel Labath2019-11-291-1/+1
|
* [lldb][NFC] Simplify regex_chars in CommandCompletionsRaphael Isemann2019-11-291-4/+1
|
* [lldb][NFC] Remove dead logging code from ↵Raphael Isemann2019-11-291-70/+1
| | | | | | | | | DWARFASTParserClang::CompleteRecordType This code is behind a `if (log)` that is always a nullptr as the initializer was commented out. One could uncomment the initializer code, but then this logging code just leads to a deadlock as it tries to aquire the module lock. This removes the logging code until I get this working again.
* [lldb] Remove FileSpec->CompileUnit inheritancePavel Labath2019-11-2922-76/+82
| | | | | | | | | | | | | | | | | | | | | | | Summary: CompileUnit is a complicated class. Having it be implicitly convertible to a FileSpec makes reasoning about it even harder. This patch replaces the inheritance by a simple member and an accessor function. This avoid the need for casting in places where one needed to force a CompileUnit to be treated as a FileSpec, and does not add much verbosity elsewhere. It also fixes a bug where we were wrongly comparing CompileUnit& and a CompileUnit*, which compiled due to a combination of this inheritance and the FileSpec*->FileSpec implicit constructor. Reviewers: teemperor, JDevlieghere, jdoerfert Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70827
* [lldb][NFC] Fix header guard comment in ThreadSafeDenseMap.hRaphael Isemann2019-11-291-1/+1
|
* [lldb] NFC: refactor CompileUnit::ResolveSymbolContextKonrad Kleine2019-11-284-91/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I found the above named method hard to read because it had a) many nested blocks, b) one return statement at the end with some logic involved, c) a duplicated while-loop with just small differences in it. I decided to refactor this function by employing an early exit strategy. In order to capture the logic in the return statement and to not have it repeated more than once I chose to implement a very small lamda function that captures all the variables it needs. I also replaced the two while-loops with just one. This is a non-functional change (NFC). Reviewers: jdoerfert, teemperor Reviewed By: teemperor Subscribers: labath, teemperor, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70774
* [LLDB] On Windows, force error message formatting to EnglishAlexandre Ganea2019-11-281-1/+10
| | | | | | This fixes the Utility/StatusTest.ErrorWin32 unit test on non-English locales. Differential Revision: https://reviews.llvm.org/D70442
* [LLDB] Fix wrong argument in CommandObjectThreadStepWithTypeAndScopeAlexandre Ganea2019-11-281-1/+1
| | | | Differential Revision: https://reviews.llvm.org/D70448
* [lldb][NFC] Remove CompilerDeclContext::IsClangRaphael Isemann2019-11-284-13/+9
| | | | | | | This method is only used in ClangASTContext. Also removes the includes we only needed for the ClangASTContext RTTI check in the CompilerDecl[Context].cpp files.
* [lldb][NFC] Remove unused variable in ClangASTSource::CompleteTypeRaphael Isemann2019-11-281-1/+0
| | | | | Now that CompilerDeclContext is a trivial class, Clang started warning that this unused variable is in fact unused. Let's remove it.
* [lldb][NFC] Simplify CompilerDecl and CompilerDeclContext initializationRaphael Isemann2019-11-282-10/+6
|
* [lldb][NFC] Remove unused CompilerDecl::IsClangRaphael Isemann2019-11-282-6/+0
|
* [lldb] refactor FileSpec::EqualPavel Labath2019-11-281-13/+3
| | | | | The logic of this function was quite hard to follow. Replace it with a much simpler, equivalent, implementation.
* [lldb] Add FileSpec::Equal unit testsPavel Labath2019-11-281-0/+20
| | | | this is in preparation of a refactor of this method.
* [lldb] Simplify and improve FileSpecTestPavel Labath2019-11-281-24/+24
| | | | | | | | | | | | | | | | | | Summary: A most of these tests create FileSpecs with a hardcoded style. Add utility functions which create a file spec of a given style to simplify things. While in there add SCOPED_TRACE messages to tests which loop over multiple inputs to ensure it's clear which of the inputs failed. Reviewers: teemperor Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D70814
* Revert "[lldb] NFC: refactor CompileUnit::ResolveSymbolContext"Raphael Isemann2019-11-284-71/+90
| | | | | | This reverts commit 373e2a4f69d623e59329ff801f261d8b299e12d2. This broke breakpoint setting.
* [lldb][NFC] Remove unused STLUtil include and STLUtil.h headerRaphael Isemann2019-11-282-27/+0
|
OpenPOWER on IntegriCloud