summaryrefslogtreecommitdiffstats
path: root/lldb/source
Commit message (Collapse)AuthorAgeFilesLines
* [lldb] NFC modernize codebase with modernize-use-nullptrKonrad Kleine2019-05-23234-1422/+1448
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: NFC = [[ https://llvm.org/docs/Lexicon.html#nfc | Non functional change ]] This commit is the result of modernizing the LLDB codebase by using `nullptr` instread of `0` or `NULL`. See https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html for more information. This is the command I ran and I to fix and format the code base: ``` run-clang-tidy.py \ -header-filter='.*' \ -checks='-*,modernize-use-nullptr' \ -fix ~/dev/llvm-project/lldb/.* \ -format \ -style LLVM \ -p ~/llvm-builds/debug-ninja-gcc ``` NOTE: There were also changes to `llvm/utils/unittest` but I did not include them because I felt that maybe this library shall be updated in isolation somehow. NOTE: I know this is a rather large commit but it is a nobrainer in most parts. Reviewers: martong, espindola, shafik, #lldb, JDevlieghere Reviewed By: JDevlieghere Subscribers: arsenm, jvesely, nhaehnle, hiraditya, JDevlieghere, teemperor, rnkovacs, emaste, kubamracek, nemanjai, ki.stfu, javed.absar, arichardson, kbarton, jrtc27, MaskRay, atanasyan, dexonsmith, arphaman, jfb, jsji, jdoerfert, lldb-commits, llvm-commits Tags: #lldb, #llvm Differential Revision: https://reviews.llvm.org/D61847 llvm-svn: 361484
* DWARFASTParserClang: Reduce indentationPavel Labath2019-05-231-1507/+1495
| | | | | | by two levels via early returns. llvm-svn: 361471
* DWARF: Don't compute address ranges for type unitsPavel Labath2019-05-237-116/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Type units don't describe any code, so they should never be the result of any address lookup queries. Previously, we would compute the address ranges for the type units for via the line tables they reference because the type units looked a lot like line-tables-only compile units. However, this is not correct, as the line tables are only referenced from type units so that other declarations can use the file names contained in them. In this patch I make the BuildAddressRangeTable function virtual, and implement it only for compile units. Testing this was a bit tricky, because the behavior depends on the order in which we add things to the address range map. This rarely caused a problem with DWARF v4 type units, as they are always added after all CUs. It happened more frequently with DWARF v5, as there clang emits the type units first. However, this is still not something that it is required to do, so for testing I've created an assembly file where I've deliberately sandwiched a compile unit between two type units, which should isolate us from both changes in how the compiler emits the units and changes in the order we process them. Reviewers: clayborg, aprantl, JDevlieghere Subscribers: jdoerfert, lldb-commits Differential Revision: https://reviews.llvm.org/D62178 llvm-svn: 361465
* Simplify `GetName`+`AppendTypeName` by `DWARFDIE`Jan Kratochvil2019-05-234-168/+131
| | | | | | | | | | | | | | | In D61502#1503247 @clayborg suggested that DWARFUnit *+dw_offset_t can be now replaced by DWARFDIE. It is moved from DWARFDebugInfoEntry to DWARFDIE as noted by @clayborg. I have also removed return type as (1) it was wrong in one case and (2) no existing caller used the return type. I also refactored the deep nesting noted by @JDevlieghere. Differential Revision: https://reviews.llvm.org/D62211 llvm-svn: 361463
* [Reproducer] Pass FileSpec by const-ref. (NFC)Jonas Devlieghere2019-05-231-1/+1
| | | | | | | Fix two functions where we were passing FileSpecs by value, while we could pass by const reference. llvm-svn: 361459
* [Utility] Modernize C-style catsJonas Devlieghere2019-05-2311-204/+229
| | | | | | | | Replaces the remaining C-style casts with explicit casts in Utility. The motivation is that they are (1) easier to spot and (2) don't have multiple meanings. llvm-svn: 361458
* [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE ↵Omair Javaid2019-05-231-3/+3
| | | | | | | | | | extensions This patch updates assembler attributes for AArch64 targets so we can disassemble newer instructions supported in ISA version 8.5 and SVE extensions. Differential Revision: https://reviews.llvm.org/D62235 llvm-svn: 361451
* Ack, added DWARFTypeUnit to the wrong target...Jim Ingham2019-05-231-1/+3
| | | | | | LLDB -> liblldbcore.a llvm-svn: 361447
* Expression: correct relocation model for WindowsSaleem Abdulrasool2019-05-221-10/+4
| | | | | | | | | | | The Windows Code Generation model cannot generation code with the PIC relocation model - all code is implicitly position independent due to the DLL load slide that occurs if it is not loaded at the preferred base address. Invert the condition and inline the single use of the variable. This should also aid the WASM target. This significantly improves the state of the (swift) repl on Windows (and should aid in expression evaluation on Windows). llvm-svn: 361443
* [Target] Protect Processes' language runtimes map with a mutexAlex Langford2019-05-221-10/+22
| | | | | | | | | | | | | Summary: From what I understand, it's possible for multiple threads to request a specific language runtime (e.g. CPPLanguageRuntime). This leads to a data race. Reviewers: jingham, JDevlieghere, compnerd, clayborg Differential Revision: https://reviews.llvm.org/D62169 llvm-svn: 361442
* Actaully lock accesses to OptionValueFileSpecList objectsFrederic Riss2019-05-221-1/+3
| | | | | | | | The patch in r359029 missed a few accessors and mutators. This patch also changes the lock to a recursive one as OptionValueFileSpecList::Clear() can be invoked from some of the other methods. llvm-svn: 361440
* [EditLine] Rewrite GetHistoryFilePathJonas Devlieghere2019-05-221-13/+18
| | | | | | | | | | | | | | | | | | | | Rewrite the GetHistoryFilePath implementation without relying on FileSpec in the spirit of our discussion in D61994. It changes LLDBs behavior in two ways: 1. We now only use the -widehistory suffix when LLDB is built with wchar support, instead of as the fallback from when the ~/.lldb directory isn't writable. 2. When the ~/.lldb directory isn't writable, we don't write any history files at all. Previously we would write them to the user's home directory (with the incorrect wide suffix), polluting ~ with a different file for every IO handler. Differential revision: https://reviews.llvm.org/D62216 llvm-svn: 361412
* Add AST loggingGabor Marton2019-05-222-0/+23
| | | | | | | | | | | | | | | | Summary: Log the AST of the TU associated with LLDB's `expr` command, once a declaration is completed Reviewers: shafik Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D62061 llvm-svn: 361362
* DWARFDebugInfoEntry: remove unused variablePavel Labath2019-05-221-4/+1
| | | | llvm-svn: 361361
* DWARF: Introduce DWARFTypeUnit classPavel Labath2019-05-2210-47/+111
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch introduces the DWARFTypeUnit class, and teaches lldb to parse type units out of both the debug_types section (DWARF v4), and from the regular debug_info section (DWARF v5). The most important piece of functionality - resolving DW_AT_signatures to connect type forward declarations to their definitions - is not implemented here, but even without that, a lot of functionality becomes available. I've added tests for the commands that start to work after this patch. The changes in this patch were greatly inspired by D61505, which in turn took over changes from D32167. Reviewers: JDevlieghere, clayborg, aprantl Subscribers: mgorny, jankratochvil, lldb-commits Differential Revision: https://reviews.llvm.org/D62008 llvm-svn: 361360
* Delete unnecessary copy ctorsFangrui Song2019-05-225-42/+0
| | | | llvm-svn: 361358
* [Symbol] Remove dead codeAlex Langford2019-05-221-55/+0
| | | | llvm-svn: 361337
* [FileSystem] Fix regression in FileSystem::ResolveJonas Devlieghere2019-05-211-8/+12
| | | | | | | | | | | | | | | | When I moved the resolve code from FileSpec to the FileSystem class, I introduced a regression. If you compare the two implementations, you'll notice that if the path doesn't exist, we should only reverse the effects of makeAbsolute, not the effects of tilde expansion. As a result, the logic to create the ~/.lldb directory broke, because we would resolve the path before creating it. Because the directory didn't exist yet, we'd call create_directories on the unresolved path, which failed. Differential revision: https://reviews.llvm.org/D62219 llvm-svn: 361321
* Fix LLDB warnings when compiling with Clang 8.0Alexandre Ganea2019-05-218-25/+66
| | | | | | Differential Revision: https://reviews.llvm.org/D62021 llvm-svn: 361295
* Remove `SymbolFileDWARF *` when there is already `DWARFUnit *`Jan Kratochvil2019-05-218-249/+186
| | | | | | | | | | | | | | In D61502#1503247 @clayborg suggested that SymbolFileDWARF *dwarf2Data is really redundant in all the calls with also having DWARFUnit *cu. So remove it. One `SymbolFileDWARF *` nullptr check (DWARFDebugInfoEntry::GetDIENamesAndRanges) could be removed, other two nullptr checks (DWARFDebugInfoEntry::GetName and DWARFDebugInfoEntry::AppendTypeName) need to stay in place (now for `DWARFUnit *`). Differential Revision: https://reviews.llvm.org/D62011 llvm-svn: 361277
* DWARF: Port debug_addr over to DWARFContextPavel Labath2019-05-219-48/+20
| | | | llvm-svn: 361232
* DWARF: Introduce DWARFUnitHeader classPavel Labath2019-05-215-147/+168
| | | | | | | | | | | | | | | | | | | Summary: This patch introduces the DWARFUnitHeader class. Its purpose (and its structure, to the extent it was possible to make it) is the same as its LLVM counterpart -- to extract the unit header information before we actually construct the unit, so that we know which kind of units to construct. This is needed because as of DWARF5, type units live in the .debug_info section, which means it's not possible to statically determine the type of units in a given section. Reviewers: aprantl, clayborg, JDevlieghere Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D62073 llvm-svn: 361224
* [CMake] Correct some dependenciesAlex Langford2019-05-212-1/+1
| | | | | | Symbol doesn't depend on CPlusPlusLanguage, but Expressiond does. llvm-svn: 361216
* DWARF: Port most of other sections over to DWARFContextPavel Labath2019-05-209-126/+80
| | | | | | | | This moves the sections from SymbolFileDWARF to DWARFContext, where it was trivial to do so. A couple of sections are still left in SymbolFileDWARF. These will be handled by separate patches. llvm-svn: 361127
* minidump: Remove checked-in files used for testing MemoryList handlingPavel Labath2019-05-201-0/+4
| | | | | | | Now that yaml2obj supports this stream, we can use the yaml form instead. llvm-svn: 361126
* Revert "Fix IPv6 support on lldb-server platform"Alex Langford2019-05-181-1/+1
| | | | | | | | | | | This reverts commit c28f81797084b8416ff5be4f9e79000a9741ca6a. This reverts commit 7e79b64642486f510f7872174eb831df68d65b84. Looks like there is more work to be done on this patch. I've spoken to the author and for the time being we will revert to keep the buildbots green. llvm-svn: 361086
* [CommandInterpreter] Refactor SourceInitFileJonas Devlieghere2019-05-172-88/+113
| | | | | | | | | | | | | | | | | | | | | | I was looking at the current implementation of SourceInitFile and there were a few things that made this function hard to read: * The code to find the ~/.lldbinit file is duplicated across the cwd and non-cwd branch. * The ./.lldbinit is once computed by resolving .lldbinit and once by resolving ./.lldbinit. * It wasn't clear to me what happened when you're sourcing the .lldbinit file in the current working directory. Apparently we do nothing when we property to control that is set to warn (makes sense) and we don't care when the property is set to true (debatable). * There were at least two branches where the status of the CommandReturnObject were not set. This patch attempts to simplify that code. Differential revision: https://reviews.llvm.org/D61994 llvm-svn: 361080
* Fix IPv6 support on lldb-server platformAlex Langford2019-05-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a general fix for the ConnectionFileDescriptor class but my main motivation was to make lldb-server working with IPv6. The connect URI can use square brackets ([]) to wrap the interface part of the URI (e.g.: <scheme>://[<interface>]:<port>). For IPv6 addresses this is a must since its ip can include colons and it will overlap with the port colon otherwise. The URIParser class parses the square brackets correctly but the ConnectionFileDescriptor doesn't generate them for IPv6 addresses making it impossible to connect to the gdb server when using this protocol. How to reproduce the issue: $ lldb-server p --server --listen [::1]:8080 ... $ lldb (lldb) platform select remote-macosx (lldb) platform connect connect://[::1]:8080 (lldb) platform process -p <pid> error: unable to launch a GDB server on 'computer' The server was actually launched we were just not able to connect to it. With this fix lldb will correctly connect. I fixed this by wrapping the ip portion with []. Differential Revision: https://reviews.llvm.org/D61833 Patch by António Afonso <antonio.afonso@gmail.com> llvm-svn: 361079
* [EditLine] Check string pointers before dereferencing them.Davide Italiano2019-05-171-2/+3
| | | | | | | | | Get*AtIndex() can return nullptr. This only happens in the swift REPL support, so it's hard to test upstream. <rdar://problem/50875178> llvm-svn: 361078
* [CommandInterpreter] Fix trailing blanks after `all` or [0-9]+ for btStella Stamenova2019-05-171-4/+4
| | | | | | The change that was committed for this used \\s to match spaces which does not work correctly on all platforms. Using [:space:] makes the test pass on both Linux and Windows llvm-svn: 361064
* minidump: Use MemoryList parsing code from llvmPavel Labath2019-05-173-42/+23
| | | | llvm-svn: 361010
* Make DWARFContext dwo-aware and port debug_info sections overPavel Labath2019-05-179-34/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The previous attempt and moving section handling over to DWARFContext (D59611) failed because it did not take into account the dwo sections correctly. All DWARFContexts (even those in SymbolFileDWARFDwo) used the main module for loading the sections, but in the dwo scenario some sections should come from the dwo file. This patch fixes that by making the DWARFContext aware of whether it a dwo context or a regular one. A dwo context gets two sections lists, and it knows where to look for a particular type of a section. This isn't fully consistent with how the llvm DWARFContext behaves, because that one leaves it up to the user to know whether it should ask for a dwo section or not. However, for the time being, it seems useful to have a single entity which knows how to peice together the debug info in dwo and non-dwo scenarios. The rough roadmap for the future is: - port over the rest of the sections to DWARFContext - find a way to get rid of SymbolFileDWARFDwo/Dwp/DwpDwo. This will likely involve adding the ability for the DWARFContext to spawn dwo sub-contexts, similarly to how it's done in llvm. - get rid of the special handling of the "dwo" contexts by making sure everything knows whether it should ask for the .dwo version of the section or not (similarly to how llvm's DWARFUnits do that) To demonstrate how the DWARFContext should behave in this new world, I port the debug_info section (which is debug_info.dwo in the dwo file) handling to DWARFContext. The rest of the sections will come in subsequent patches. Reviewers: aprantl, clayborg, JDevlieghere Subscribers: zturner, lldb-commits Differential Revision: https://reviews.llvm.org/D62012 llvm-svn: 361000
* [CommandInterpreter] Accept blanks after `all` or [0-9]+ for bt.Davide Italiano2019-05-171-4/+4
| | | | | | | | | | | Previously "bt all " would've failed as the regex didn't match them. Over the shoulder review by Jonas Devlieghere. <rdar://problem/50824935> llvm-svn: 360966
* [Target] Stop linking against lldbPluginObjCLanguageAlex Langford2019-05-162-2/+1
| | | | llvm-svn: 360945
* Factor out switch statement into a helper function (NFC)Adrian Prantl2019-05-162-10/+22
| | | | | | This addresses post-commit review feedback for https://reviews.llvm.org/D62015. llvm-svn: 360930
* Make sure GetObjectDescription falls back to the Objective-C runtime.Adrian Prantl2019-05-161-27/+29
| | | | | | | | | | | | | This fixes an unintended regression introduced by https://reviews.llvm.org/D61451 by making sure the Objective-C runtime is also tried when the "correct" language runtime failed to return an object description. rdar://problem/50791055 Differential Revision: https://reviews.llvm.org/D62015 llvm-svn: 360929
* [IRExecutionUnit] Remove static_assertJonas Devlieghere2019-05-161-2/+0
| | | | | | This doesn't make sense on platforms other than 64 bit. llvm-svn: 360916
* DWARFContext: Return empty data extractors instead of null pointersPavel Labath2019-05-164-27/+23
| | | | | | | | | | | | | | | | | | | | | | | Summary: There are several reasons for doing this: - generally, there's no reason to differentiate between a section being absent and it being present, but empty - it matches more closely what llvm DWARF parser is doing (which also doesn't differentiate the two cases) - SymbolFileDWARF also doesn't differentiate the two cases, which makes porting the rest of sections easier - it fixes a bug in how the return-null-if-empty logic was implemented (it returned nullptr only the second time we tried to get the debug_aranges section), which meant that we hit an assert when trying to parse an empty-but-present section Reviewers: JDevlieghere, clayborg, aprantl Subscribers: zturner, lldb-commits Differential Revision: https://reviews.llvm.org/D61942 llvm-svn: 360874
* DWARF: Add ability to reference debug info coming from multiple sectionsPavel Labath2019-05-1616-55/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds the ability to precisely address debug info in situations when a single file can have more than one debug-info-bearing sections (as is the case with type units in DWARF v4). The changes here can be classified into roughly three categories: - the code which addresses a debug info by offset gets an additional argument, which specifies the section one should look into. - the DIERef class also gets an additional member variable specifying the section. This way, code dealing with DIERefs can know which section is the object referring to. - the user_id_t encoding steals one bit from the dwarf_id field to store the section. This means the total number of separate object files (apple .o, or normal .dwo) is limited to 2 billion, but that is fine as it's not possible to hit that number without switching to DWARF64 anyway. This patch is functionally equivalent to (and inspired by) the two patches (D61503 and D61504) by Jan Kratochvil, but there are differences in the implementation: - it uses an enum instead of a bool flag to differentiate the sections - it increases the size of DIERef struct instead of reducing the amount of addressable debug info - it sets up DWARFDebugInfo to store the units in a single vector instead of two. This sets us up for the future in which type units can also live in the debug_info section, and I believe it's cleaner because there's no need for unit index remapping There are no tests with this patch as this is essentially NFC until we start parsing type units from the debug_types section. Reviewers: JDevlieghere, clayborg, aprantl Subscribers: arphaman, jankratochvil, lldb-commits Differential Revision: https://reviews.llvm.org/D61908 llvm-svn: 360872
* Simplify Triple::ppc64{,le} checks with Triple::isPPC64()Fangrui Song2019-05-165-25/+14
| | | | | | | | | | While here, update some ppc64le specific check to isPPC64(), if it applies to big-endian as well, in the hope that it will ease the support of big-endian if people are interested in this area. The big-endian variant is used by at least FreeBSD, Gentoo Linux, Adélie Linux, and Void Linux. llvm-svn: 360868
* Simplify ArchSpec::IsMIPS()Fangrui Song2019-05-1610-66/+15
| | | | llvm-svn: 360865
* Permit cross-CU referencesJan Kratochvil2019-05-1513-131/+110
| | | | | | | | | | | | | | So far dw_offset_t was global for the whole SymbolFileDWARF but with .debug_types the same dw_offset_t may mean two different things depending on its section (=CU). So references now return whole new referenced DWARFDIE instead of just dw_offset_t. This means that some functions have to now handle 16 bytes instead of 8 bytes but I do not see that anywhere performance critical. Differential Revision: https://reviews.llvm.org/D61502 llvm-svn: 360795
* Delete unnecessary copy ctors/copy assignment operatorsFangrui Song2019-05-1513-104/+0
| | | | | | It's the simplest and gives the cleanest semantics. llvm-svn: 360762
* [ASTImporter] Use llvm::Expected and Error in the importer APIGabor Marton2019-05-155-43/+106
| | | | | | | | | | | | | | | | | | | | | | Summary: This is the final phase of the refactoring towards using llvm::Expected and llvm::Error in the ASTImporter API. This involves the following: - remove old Import functions which returned with a pointer, - use the Import_New functions (which return with Err or Expected) everywhere and handle their return value - rename Import_New functions to Import This affects both Clang and LLDB. Reviewers: shafik, teemperor, aprantl, a_sidorin, balazske, a.sidorin Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits, lldb-commits Tags: #clang, #lldb Differential Revision: https://reviews.llvm.org/D61438 llvm-svn: 360760
* DWARF: s/CompileUnit/Unit/ in DWARFFormValuePavel Labath2019-05-155-59/+51
| | | | | | | | The class has been converted to use DWARFUnit, but a number of uses of the words compile unit remained. This removes all such references Get/SetCompileUnit becomes Get/SetUnit, and m_cu becomes m_unit. llvm-svn: 360754
* Replace assert with static_assert here applicable.Jonas Devlieghere2019-05-154-10/+11
| | | | | | | Replaces assert() with static_assert() if the condition is can be evaluated at compile time. llvm-svn: 360753
* Mark private unimplemented functions as deletedJonas Devlieghere2019-05-151-2/+2
| | | | | | | Applies modernize-use-equals-delete to the LLDB code base and removes the now redundant comments. llvm-svn: 360751
* [Target] Generalize some behavior in ThreadAlex Langford2019-05-152-13/+23
| | | | | | | | | | Summary: I don't think there's a good reason for this behavior to be considered ObjC-specific. We can generalize this. Differential Revision: https://reviews.llvm.org/D61776 llvm-svn: 360741
* DWARF/NFC: Centralize DIERef conversionsPavel Labath2019-05-143-40/+24
| | | | | | | | | | | | | apple and manual indexing code were creating a DIERef in a bunch of places. Though the code itself is not much, it is also easy to simplify by factoring out the DIERef creation. In HashedNameToDIE I create a conversion operator from DIEInfo to DIERef, and in ManualDWARFIndex I just create the DIERef in a global variable up-front. This also reduces the diff in follow-up patches which change how DIERefs are constructed. llvm-svn: 360669
* typedef enum -> enumFangrui Song2019-05-1411-63/+45
| | | | | | | | Reviewed By: labath Differential Revision: https://reviews.llvm.org/D61883 llvm-svn: 360654
OpenPOWER on IntegriCloud