summaryrefslogtreecommitdiffstats
path: root/lldb/include
Commit message (Collapse)AuthorAgeFilesLines
...
* [lldb][NFC] Fix documentation of CompletionRequest::AddCompletionRaphael Isemann2019-09-231-1/+2
| | | | llvm-svn: 372569
* [lldb][NFC] Make cursor char position unsigned in CompletionRequestRaphael Isemann2019-09-231-3/+3
| | | | | | | This was only an 'int' because to fit into the old API which is gone by now. llvm-svn: 372568
* [lldb] Make cursor index in CompletionRequest unsignedRaphael Isemann2019-09-231-3/+3
| | | | | | | | | | | | The fact that index==-1 means "no arguments" is not obvious and only used in one place from what I can tell. Also fixes several warnings about using the cursor index as if it was a size_t when comparing. Not fully NFC as we now also correctly update the partial argument list when injecting the fake empty argument in the CompletionRequest constructor. llvm-svn: 372566
* [lldb][NFC] Remove argument prefix checking boilerplate when adding completionsRaphael Isemann2019-09-231-0/+18
| | | | llvm-svn: 372561
* [lldb] Reduce some dangerous boilerplate with CompletionRequest::ShiftArgumentsRaphael Isemann2019-09-231-0/+7
| | | | | | | | | | | | | We should in general not allow external code to fiddle with the internals of CompletionRequest, but until this is gone let's at least provide a utility function that makes this less dangerous. This also now correct updates the partially parsed argument list, but it doesn't seem to be used by anything that is behind one of the current shift/SetCursorIndex calls, so this doesn't seeem to fix any currently used completion. llvm-svn: 372556
* [lldb] Process formatters in reverse-chronological orderJan Kratochvil2019-09-202-39/+27
| | | | | | | | | | | | If one reverts D66398 then the TestDataFormatterStdList does fail - as the C++ formatters are initialized in the opposite order. But the current state of trunk does not mind the order for C++ formatters. It is using now a single std::vector as suggested by Pavel Labath. Differential Revision: https://reviews.llvm.org/D66654 llvm-svn: 372424
* Doxygenify comments.Adrian Prantl2019-09-201-34/+41
| | | | llvm-svn: 372411
* Move decl completion out of the ASTImporterDelegate and document it [NFC]Raphael Isemann2019-09-201-29/+25
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: The ASTImporterDelegate is currently responsible for both recording and also completing types. This patch moves the actual completion and recording code outside the ASTImporterDelegate to reduce the amount of responsibilities the ASTImporterDelegate has to fulfill. As I anyway had to touch the code when moving I also documented and refactored most of it (e.g. no more asserts that we call the deporting start/end function always as a pair). Note that I had to make the ASTImporterDelegate and it's related functions public now so that I can move out the functionality in another class (that doesn't need to be in the header). Reviewers: shafik, aprantl, martong, a.sidorin Reviewed By: martong Subscribers: rnkovacs, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D61478 llvm-svn: 372385
* [NFC] Move dumping into GDBRemotePacketJonas Devlieghere2019-09-161-0/+4
| | | | | | | | This moves the dumping logic from the GDBRemoteCommunicationHistory class into the GDBRemotePacket so that it can be reused from the reproducer command object. llvm-svn: 372028
* [lldb] Remove SetCount/ClearCount from FlagsRaphael Isemann2019-09-161-26/+0
| | | | | | | | | | | | | | | | | | Summary: These functions are only used in tests where we should test the actual flag values instead of counting all bits for an approximate check. Also these popcount implementation aren't very efficient and doesn't seem to be optimised to anything fast. Reviewers: davide, JDevlieghere Reviewed By: davide, JDevlieghere Subscribers: abidh, JDevlieghere, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67540 llvm-svn: 372018
* [lldb] Code cleanup: FormattersContainer.h: Use range-based for loops.Jan Kratochvil2019-09-141-12/+9
| | | | | | | Suggested for an other loop by Pavel Labath in: https://reviews.llvm.org/D66654#inline-605808 llvm-svn: 371922
* [Reproducer] Move GDB Remote Packet into Utility. (NFC)Jonas Devlieghere2019-09-133-46/+113
| | | | | | | | | | | | | | To support dumping the reproducer's GDB remote packets, we need the (de)serialization logic to live in Utility rather than the GDB remote plugin. This patch renames StreamGDBRemote to GDBRemote and moves the relevant packet code there. Its uses in the GDBRemoteCommunicationHistory and the GDBRemoteCommunicationReplayServer are updated as well. Differential revision: https://reviews.llvm.org/D67523 llvm-svn: 371907
* [Reproducer] Include the this pointer in the API log.Jonas Devlieghere2019-09-131-10/+10
| | | | | | | | | | | | | | | The new centralized way of doing API logging through the reproducer macros is lacking a way to easily correlate instances of API objects. Logging the this pointer makes that significantly easier. For methods this is now always passed as the first argument, similar to the self argument in Python. This patch also adds a test case for API logging, which uncovered that we were not quoting strings. Differential revision: https://reviews.llvm.org/D67538 llvm-svn: 371885
* [lldb][NFC] Remove ArgEntry::ref memberRaphael Isemann2019-09-131-1/+1
| | | | | | | | | | | The StringRef should always be identical to the C string, so we might as well just create the StringRef from the C-string. This might be slightly slower until we implement the storage of ArgEntry with a string instead of a std::unique_ptr<char[]>. Until then we have to do the additional strlen on the C string to construct the StringRef. llvm-svn: 371842
* [lldb][NFC] Make ArgEntry::quote private and provide a getterRaphael Isemann2019-09-131-1/+2
| | | | llvm-svn: 371823
* [Target] Move InferiorCall to ProcessAlex Langford2019-09-131-0/+5
| | | | | | | | | | | | | | | | | | | Summary: InferiorCall is only ever used in Process, and it is not specific to POSIX. By moving it to Process, we can remove all dependencies on plugins from Process. Moving InferiorCall to Process seems to achieve this quite well. Additionally, the name InferiorCall is a little vague now, so we rename it something a bit more specific. Reviewers: JDevlieghere, clayborg, compnerd, labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67472 llvm-svn: 371796
* [Reproducer] Move the command loader into the reproducer (NFC)Jonas Devlieghere2019-09-111-0/+13
| | | | | | | | This just moves the CommandLoader utility into the reproducer namespace and makes it accessible outside the API layer. This is setting things up for a bigger change. llvm-svn: 371689
* [Reproducer] Move GDB Remote Provider into Reproducer (NFC)Jonas Devlieghere2019-09-111-0/+27
| | | | | | | | | | | | | | Originally the idea was for providers to be defined close to where they are used. While this helped designing the providers in such a way that they don't depend on each other, it also means that it's not possible to access them from a central place. This proved to be a problem for some providers and resulted in them living in the reproducer class. The ProcessGDBRemote provider is the last remaining exception. This patch makes things consistent and moves it into the reproducer like the other providers. llvm-svn: 371685
* [DWARF] Evaluate DW_OP_entry_valueVedant Kumar2019-09-111-2/+22
| | | | | | | | | | | | Add support for evaluating DW_OP_entry_value. This involves parsing DW_TAG_call_site_parameter and wiring the information through to the expression evaluator. rdar://54496008 Differential Revision: https://reviews.llvm.org/D67376 llvm-svn: 371668
* [Status] Add a LLDB_ERRORF macro for error reporting (similar to LLDB_LOGF)Vedant Kumar2019-09-111-0/+7
| | | | llvm-svn: 371667
* [Function] Factor out GetCallEdgeForReturnAddress, NFCVedant Kumar2019-09-101-0/+5
| | | | | | | Finding the call edge in a function which corresponds to a particular return address is a generic/useful operation. llvm-svn: 371543
* Implement DW_OP_convertAdrian Prantl2019-09-102-23/+10
| | | | | | | | | | | | | | | | | | | | | | This patch adds basic support for DW_OP_convert[1] for integer types. Recent versions of LLVM's optimizer may insert this opcode into DWARF expressions. DW_OP_convert is effectively a type cast operation that takes a reference to a base type DIE (or zero) and then casts the value at the top of the DWARF stack to that type. Internally this works by changing the bit size of the APInt that is used as backing storage for LLDB's DWARF stack. I managed to write a unit test for this by implementing a mock YAML object file / module that takes debug info sections in yaml2obj format. [1] Typed DWARF stack. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1 <rdar://problem/48167864> Differential Revision: https://reviews.llvm.org/D67369 llvm-svn: 371532
* [Utility] Replace `lldb_private::CleanUp` by `llvm::scope_exit`Jonas Devlieghere2019-09-101-42/+0
| | | | | | | | | This removes the CleanUp class and replaces its usages with llvm's ScopeExit, which has similar semantics. Differential revision: https://reviews.llvm.org/D67378 llvm-svn: 371474
* [Symbol] Give ClangASTContext a PersistentExpressionState instead of a ↵Alex Langford2019-09-091-8/+4
| | | | | | | | | | | | | | | ClangPersistentVariables ClangASTContext doesn't use m_persistent_variables in a way specific to ClangPersistentVariables. Therefore, it should hold a unique pointer to PersistentExpressionState instead of a ClangPersistentVariablesUP. This also prevents you from pulling in a plugin header when including ClangASTContext.h Doing this exposed an implicit dependency in ObjCLanguage that was corrected by including ClangModulesDeclVendor.h llvm-svn: 371470
* [Core] Remove use of ClangASTContext in DumpDataExtractorAlex Langford2019-09-062-0/+5
| | | | | | | | | | | | | Summary: DumpDataExtractor uses ClangASTContext in order to get the proper llvm fltSemantics for the type it needs so that it can dump floats in a more precise way. However, there's no reason that this behavior needs to be specific ClangASTContext. Instead, I think it makes sense to ask TypeSystems for the float semantics for a type of a given size. Differential Revision: https://reviews.llvm.org/D67239 llvm-svn: 371258
* [lldb] Small optimization of FormatMap::Delete and FormatMap::GetJan Kratochvil2019-09-061-2/+2
| | | | llvm-svn: 371234
* [lldb][NFC] Remove Args::StripSpacesRaphael Isemann2019-09-061-4/+0
| | | | | | This just reimplemented llvm::StringRef::[r/l]trim(). llvm-svn: 371181
* [lldb][NFC] Remove unused Args::GetArgumentQuoteCharAtIndexRaphael Isemann2019-09-061-1/+0
| | | | llvm-svn: 371176
* [Disassembler] Simplify a few methods (NFC)Jonas Devlieghere2019-09-041-0/+2
| | | | | | | Use early returns to highlight preconditions and make the code easier to follow. llvm-svn: 370994
* Upstream macCatalyst support in debugserver and the macOS dynamic loaderAdrian Prantl2019-09-043-0/+7
| | | | | | | | | | | plugin. Unfortunately the test is currently XFAILed because of missing changes to the clang driver. Differential Revision: https://reviews.llvm.org/D67124 llvm-svn: 370931
* [lldb] Limit the amount of zeroes we use for padding when printing small floatsRaphael Isemann2019-09-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: We got a radar that printing small floats is not very user-friendly in LLDB as we print them with up to 100 leading zeroes before starting to use scientific notation. This patch changes this by already using scientific notation when we hit 6 padding zeroes by default and moves this value into a target setting so that users can just set this number back to 100 if they for some reason preferred the old behaviour. This new setting is influencing how we format data, so that's why we have to reset the data visualisation cache when it is changed. Note that we have always been using scientific notation for large numbers because it seems that the LLVM implementation doesn't support printing out the padding zeroes for them. I would have fixed that if it was trivial, but looking at the LLVM implementation for this it seems that this is not as trivial as it sounds. I would say we look into this if we ever get a bug report about someone wanting to have a large amount of trailing zeroes in their numbers instead of using scientific notation. Fixes rdar://39744137 Reviewers: #lldb, clayborg Reviewed By: clayborg Subscribers: JDevlieghere, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67001 llvm-svn: 370880
* [lldb] Early exit in RangeDataVector:FindEntryIndexesThatContainRaphael Isemann2019-09-041-6/+8
| | | | | | | | | | | | | | | | | | | Summary: We currently spend a lot of time in this function (around 27% of the br-by-regex benchmark in lldb-bench) by just iterating over all the ranges. We already sorted these ranges by their base address, we we can actually just stop checking ranges as soon as we find one that has a higher base address. Reviewers: labath Reviewed By: labath Subscribers: amccarth, arphaman, JDevlieghere, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67123 llvm-svn: 370879
* Code cleanup: Change FormattersContainer::KeyType from SP to rvalueJan Kratochvil2019-09-044-25/+33
| | | | | | | | | | | There is now std::shared_ptr passed around which is expensive for manycore CPUs. Most of the times (except for 3 cases) it is now just std::moved with no CPU locks needed. It also makes it possible to sort the keys (which is now not needed much after D66398). Differential revision: https://reviews.llvm.org/D67049 llvm-svn: 370863
* [lldb][NFC] Remove unused overload of File::ReadRaphael Isemann2019-09-031-30/+0
| | | | | | | | | | | | | | | | Summary: It's neither used or tested here and in swift-lldb, so let's get rid of it. Reviewers: #lldb, davide Reviewed By: #lldb, davide Subscribers: davide, JDevlieghere, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67116 llvm-svn: 370802
* [lldb] Small optimization of FormatMap::DeleteJan Kratochvil2019-09-011-1/+1
| | | | llvm-svn: 370612
* [lldb] Unify target checking in CommandObjectRaphael Isemann2019-08-311-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: We currently have several CommandObjects that manually reimplement the checking for a selected target or a target in the execution context (which is the selected target when they are invoked). This patch removes all these checks and replaces them by setting the eCommandRequiresTarget flag that Pavel suggested. With this flag we are doing the same check but without having to duplicate this code in all these CommandObjects. I also added a `GetSelectedTarget()` variant of the `GetSelectedOrDummyTarget()` function to the CommandObject that checks that the flag is set and then returns a reference to the target. I didn't rewrite all the `target` variables from `Target *` to `Target &` in this patch as last time this change caused a lot of merge conflicts in Swift and I would prefer having that in a separate NFC commit. Reviewers: labath, clayborg Reviewed By: labath, clayborg Subscribers: clayborg, JDevlieghere, jingham, amccarth, abidh, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66863 llvm-svn: 370571
* [lldb][NFC] Move Clang-specific flags to ClangUserExpressionRaphael Isemann2019-08-301-16/+0
| | | | | | | | | LLVMUserExpression doesn't use these variables and they are all specific to Clang. Also removes m_const_object as this was actually never used by anyone (and Clang didn't report it as we assigned it in the constructor which seems to count as use). llvm-svn: 370440
* Remove DWARFExpression::LocationListSizePavel Labath2019-08-291-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: The only reason for this function's existance is so that we could pass the correct size into the DWARFExpression constructor. However, there is no harm in passing the entire data extractor into the DWARFExpression, since the same code is performing the size determination as well as the subsequent parse. So, if we get malformed input or there's a bug in the parser, we'd compute the wrong size anyway. Additionally, reducing the number of entry points into the location list parsing machinery makes it easier to switch the llvm debug_loc(lists) parsers. While inside, I added a couple of tests for invalid location list handling. Reviewers: JDevlieghere, clayborg Subscribers: aprantl, javed.absar, kristof.beyls, lldb-commits Differential Revision: https://reviews.llvm.org/D66789 llvm-svn: 370373
* [lldb][NFC] Refactor and document ClangASTContext::IsOperatorRaphael Isemann2019-08-281-1/+1
| | | | | | Should make it clearer what actually is going on in there. llvm-svn: 370201
* [lldb][NFC] Update documentation of Handle[Argument]CompletionRaphael Isemann2019-08-281-12/+2
| | | | | | | We no longer have return values or any of the mentioned arguments in these functions since the introduction of CompletionRequest. llvm-svn: 370174
* Revert "[lldb] Move redundant persistent variable counter to ↵Adrian Prantl2019-08-272-2/+8
| | | | | | | | | | | | ClangPersistentVariables" This reverts commit r367842 since it wasn't quite as NFC as advertised and broke Swift support. See https://reviews.llvm.org/D46083 for the rationale behind the original functionality. rdar://problem/54619322 llvm-svn: 370126
* [ASTImporter] Fix name conflict handling with different strategiesGabor Marton2019-08-271-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are numorous flaws about the name conflict handling, this patch attempts fixes them. Changes in details: * HandleNameConflict return with a false DeclarationName Hitherto we effectively never returned with a NameConflict error, even if the preceding StructuralMatch indicated a conflict. Because we just simply returned with the parameter `Name` in HandleNameConflict and that name is almost always `true` when converted to `bool`. * Add tests which indicate wrong NameConflict handling * Add to ConflictingDecls only if decl kind is different Note, we might not indicate an ODR error when there is an existing record decl and a enum is imported with same name. But there are other cases. E.g. think about the case when we import a FunctionTemplateDecl with name f and we found a simple FunctionDecl with name f. They overload. Or in case of a ClassTemplateDecl and CXXRecordDecl, the CXXRecordDecl could be the 'templated' class, so it would be false to report error. So I think we should report a name conflict error only when we are 100% sure of that. That is why I think it should be a general pattern to report the error only if the kind is the same. * Fix failing ctu test with EnumConstandDecl In ctu-main.c we have the enum class 'A' which brings in the enum constant 'x' with value 0 into the global namespace. In ctu-other.c we had the enum class 'B' which brought in the same name ('x') as an enum constant but with a different enum value (42). This is clearly an ODR violation in the global namespace. The solution was to rename the second enum constant. * Introduce ODR handling strategies Reviewers: a_sidorin, shafik Differential Revision: https://reviews.llvm.org/D59692 llvm-svn: 370045
* [lldb] Allow partial completions to fix directory completion.Raphael Isemann2019-08-271-0/+8
| | | | | | | | | | | | On the command line we usually insert a space after a completion to indicate that the completion was successful. After the completion API refactoring, this also happens with directories which essentially breaks file path completion (as adding a space terminates the path and starts a new arg). This patch restores the old behavior by again allowing partial completions. Also extends the iohandler and SB API tests as the implementation for this is different in Editline and SB API. llvm-svn: 370043
* DWARFExpression: Simplify class interfacePavel Labath2019-08-271-16/+2
| | | | | | | | | | | | | | | | | Summary: The DWARFExpression methods have a lot of arguments. This removes two of them by removing the ability to slice the expression via two offset+size parameters. This is a functionality that it is not always needed, and when it is, we already have a different handy way of slicing a data extractor which we can use instead. Reviewers: JDevlieghere, clayborg Subscribers: aprantl, lldb-commits Differential Revision: https://reviews.llvm.org/D66745 llvm-svn: 370027
* [lldb][NFC] Remove dead code that handles situations where LLDB has no dummy ↵Raphael Isemann2019-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | target Summary: We always have a dummy target, so any error handling regarding a missing dummy target is dead code now. Also makes the CommandObject methods that return Target& to express this fact in the API. This patch just for the CommandObject part of LLDB. I'll migrate the rest of LLDB in a follow-up patch that's WIP. Reviewers: labath Reviewed By: labath Subscribers: abidh, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66737 llvm-svn: 369939
* Postfix: move more code out of the PDB pluginPavel Labath2019-08-261-1/+5
| | | | | | | | | | | | | | | | Summary: Previously we moved the code which parses a single expression out of the PDB plugin, because that was useful for DWARF expressions in breakpad. However, FPO programs are used in breakpad files too (when unwinding on windows), so this completes the job, and moves the rest of the FPO parser too. Reviewers: amccarth, aleksandr.urakov Subscribers: aprantl, markmentovai, rnk, lldb-commits Differential Revision: https://reviews.llvm.org/D66634 llvm-svn: 369894
* [lldb] Construct the dummy target when the first Debugger object is constructedRaphael Isemann2019-08-261-1/+2
| | | | | | | | | | | | | | | | | | | | | Summary: We should always have a dummy target, so we might as well construct it directly when we create a Debugger object. The idea is that if this patch doesn't cause any problems that we can get rid of all the logic that handles situations where we don't have a dummy target (as all that code is currently untested as there seems to be no way to have no dummy target in LLDB). Reviewers: labath, jingham Reviewed By: labath, jingham Subscribers: jingham, abidh, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66581 llvm-svn: 369885
* [lldb][NFC] Add ProcessInfo::GetNameAsStringRef to simplify some codeRaphael Isemann2019-08-261-7/+3
| | | | llvm-svn: 369880
* [Symbol] Decouple clang from DeclVendorAlex Langford2019-08-233-2/+5
| | | | | | | | | | Summary: This removes DeclVendor's dependency on clang (and ClangASTContext). DeclVendor has no need to know about specific TypeSystems. Differential Revision: https://reviews.llvm.org/D66628 llvm-svn: 369735
* Add missing dot.Adrian Prantl2019-08-221-1/+1
| | | | llvm-svn: 369712
OpenPOWER on IntegriCloud