summaryrefslogtreecommitdiffstats
path: root/lldb
Commit message (Collapse)AuthorAgeFilesLines
* Lock accesses to OptionValueFileSpecList objectsFrederic Riss2019-04-2313-30/+56
| | | | | | | | | | | | | | | | | | | | | | | | Before a Debugger gets a Target, target settings are routed to a global set of settings. Even without this, some part of the LLDB which exist independently of the Debugger object (the Module cache, the Symbol vendors, ...) access directly the global default store for those settings. Of course, if you modify one of those global settings while they are being read, bad things happen. We see this quite a bit with FileSpecList settings. In particular, we see many cases where one debug session changes target.exec-search-paths while another session starts up and it crashes when one of those accesses invalid FileSpecs. This patch addresses the specific FileSpecList issue by adding locking to OptionValueFileSpecList and never returning by reference. Reviewers: clayborg Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D60468 llvm-svn: 359028
* [Reproducers] Limit logging to calls that cross the API boundary.Jonas Devlieghere2019-04-232-101/+93
| | | | | | | | | | | | | | | | | | | | We recently moved API logging into the instrumentation macros. This made that logging is now consistent and abstracted behind a macro for every API functions, independent of the reproducers. It also means we have a lot more output. While this is a good thing, it also meant a lot more noise in the log, from things that aren't always equally interesting, such as the copy constructor for example. To improve usability, we should increase the signal-to-noise ratio. I propose to achieve this by only logging API functions that cross the API boundary. This is a divergence of what we had before, where a select number of functions were logged, irregardless of the API boundary, a concept that was introduced for the reproducers. However, I believe this is in line with the purpose of the API log. Differential revision: https://reviews.llvm.org/D60984 llvm-svn: 359016
* Revert "[EditLineTest] Not always TERM is available, e.g. on some bots."Davide Italiano2019-04-231-13/+3
| | | | | | | This was a speculative fix trying to placate some bots, but it's ultimately just a bot configuration problem and not a code problem. llvm-svn: 359011
* [Docs] Add missing leading slashJonas Devlieghere2019-04-231-5/+5
| | | | llvm-svn: 359005
* [Docs] Add 301 redirects for old URLsJonas Devlieghere2019-04-232-0/+8
| | | | llvm-svn: 359004
* Move postfix expression code out of the NativePDB pluginPavel Labath2019-04-232-233/+246
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The NativePDB plugin contains code to convert "programs" describing the layout of function frames into dwarf (for easier interaction with the rest of lldb). This functionality is useful for the Breakpad plugin too, as it contains the same kind of expressions (because breakpad info is generated from pdb files). In this patch, I move the core classes of this code into a common place, where it can be used from both files. Previously, these were the details of the implementation, but here I am exposing them (instead of just a single "string->string" conversion function), as breakpad will need to use these in a slightly different way. The reason for that is that breakpad files generated from dwarf expressions use a slightly different syntax, although most of the core code can be reused with a bit of thought. This is also the reason why I am not moving the parsing or dwarf generation bits, as they will need to be generalized a bit before they're usable for both scenarios. This patch should be NFC, modulo renaming the moved entities to more neutral names. The reason I am moving this to the "Symbol" library, is because both customers will be "Symbol"Files, and also the unwinding code lives in the Symbol library. From a purely dependency standpoint this code will probably be standalone, and so it could be moved all the way to Utility, but that seems too low for this kind of functionality. Reviewers: jasonmolenda, amccarth, clayborg, JDevlieghere, aleksandr.urakov Subscribers: aprantl, markmentovai, lldb-commits Differential Revision: https://reviews.llvm.org/D60599 llvm-svn: 358976
* modify-python-lldb: Remove \a-removing codePavel Labath2019-04-235-23/+19
| | | | | | instead, remove \a directly from the interface files. llvm-svn: 358967
* FuncUnwinders: remove "current_offset" from function argumentsPavel Labath2019-04-239-117/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This argument was added back in 2010 (r118882) to support the ability to unwind from functions whose eh_frame entry does not cover the entire range of the function. However, due to the caching happening in FuncUnwinders, this solution is very fragile. FuncUnwinders will cache the plan it got from eh_frame regardless of the value of the current_offset, so our ability to unwind from a given function depended what was the value of "current_offset" the first time that this function was called. Furthermore, since the "image show-unwind" command did not know what's the right offset to pass, this created an unfortunate situation where "image show-unwind" would show no valid plans for a function, even though they were available and being used. In this patch I implement the feature slightly differently. Instead of giving just a base address to the eh_frame unwinder, I give it the entire range we are interested in. Then, I change the unwinder to return the first plan that covers (even partially) that range. This way even a partial plan will be returned, regardless of the address in the function where we are stopped at. This solution is still not 100% correct, as it will not handle a function which is covered by two independent fde entries. However, I don't expect anybody will write this kind of functions, and this wasn't handled by the previous implementation either. If this is ever needed in the future. The eh_frame unwinder can be extended to return "composite" unwind plans created by merging sevelar fde entries. I also create a test which triggers this scenario. As doing this is virtually impossible without hand-written assembly, the test only works on x86 linux. Reviewers: jasonmolenda, clayborg Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D60829 llvm-svn: 358964
* UnwindPlan: pretty-print dwarf expressionsPavel Labath2019-04-233-4/+62
| | | | | | | | | | | | | | | | Summary: Previously we were printing the dwarf expressions in unwind rules simply as "dwarf-expr". This patch uses the existing dwarf-printing capabilities in lldb to enhance this dump output, and print the full decoded dwarf expression. Reviewers: jasonmolenda, clayborg Subscribers: aprantl, lldb-commits Differential Revision: https://reviews.llvm.org/D60949 llvm-svn: 358959
* yamlify TestMiniDumpUUID binariesPavel Labath2019-04-2319-34/+183
| | | | | | | | | | | | | | Summary: Instead of checking in raw minidump binaries, check in their yaml form, and call yaml2obj in the test. Reviewers: clayborg Subscribers: javed.absar, lldb-commits Differential Revision: https://reviews.llvm.org/D60948 llvm-svn: 358957
* One small tweak to LocateExecutableScriptingResources - IJason Molenda2019-04-231-2/+2
| | | | | | | | | was still stat'ing the possibly-dSYM FileSpec before I (more cheaply) checked the filepath for telltale dSYM components. <rdar://problem/50086007> llvm-svn: 358939
* Add a small check to PlatformDarwin::LoadScriptingResourceForModuleJason Molenda2019-04-231-3/+6
| | | | | | | | | | | | | | | | | which reads the python files in a dSYM bundle, to check that the SymbolFile is actually a dSYM bundle filepath; delay any fetching of the ScriptInterpreter until after we've done that check. When debugging a binary without a dSYM on darwin systems, the SymbolFile we fetch is actually the ObjectFile -- so we would do an unnecessary trip into Python land and stat around the filesystem looking for a python file to read in. There's no reason to do any of this unless the SymbolFile's file path includes the .dSYM bundle telltale path components. <rdar://problem/50065315> llvm-svn: 358938
* Fix a bug in my change to ModulesDidLoad in r357955.Jason Molenda2019-04-221-5/+3
| | | | | | | | | | | | | In the process of hoisting the LoadScriptingResourceForModule out of Target::ModuleAdded and into Target::ModulesDidLoad, I had ModulesDidLoad fetching the Target's entire image list and look for scripting resources in those -- instead of only looking for scripting resources in the modules that had been added to the target's image list. <rdar://problem/50065315> llvm-svn: 358929
* [Docs] Move API docs to the front pageJonas Devlieghere2019-04-222-6/+7
| | | | | | | | | | | This moves the links to the C++ and Python API docs up to the main page. As of now the links are still broken [1], but at least this will prevent the additional frustration of searching for the links only to find out they're broken. [1] http://lists.llvm.org/pipermail/lldb-dev/2019-April/014992.html llvm-svn: 358928
* Rename C++ TestGlobalVariables.py to have a distinct name from C version.Adrian Prantl2019-04-221-0/+0
| | | | llvm-svn: 358924
* [EditLineTest] Not always TERM is available, e.g. on some bots.Davide Italiano2019-04-221-3/+13
| | | | llvm-svn: 358918
* [Reproducers] Fix lifetime issueJonas Devlieghere2019-04-222-2/+2
| | | | | | | | | | Deallocating the data recorder in during the ::Keep() operation causes problems down the line when exiting the debugger. The command interpreter still holds a pointer to the now deallocated object and has no way to know it no longer exists. This is exactly what the m_record flag was meant for, although it wasn't hooked up properly either. llvm-svn: 358916
* [NativePDB] Add anonymous namespaces supportAleksandr Urakov2019-04-226-11/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds anonymous namespaces support to the native PDB plugin. I had to reference from the main function variables of the types that are inside of the anonymous namespace to include them in debug info. Without the references they are not included. I think it's because they are static, then are visible only in the current translation unit, so they are not needed without any references to them. There is also the problem case with variables of types that are nested in template structs. For now I've left FIXME in the test because this case is not related to the change. Reviewers: zturner, asmith, labath, stella.stamenova, amccarth Reviewed By: amccarth Subscribers: zloyrobot, aprantl, teemperor, lldb-commits, leonid.mashinskiy Tags: #lldb Differential Revision: https://reviews.llvm.org/D60817 llvm-svn: 358873
* Minidump: yamlify module-related unit testsPavel Labath2019-04-216-134/+60
| | | | | | | | | | | | | The tests reading the untouched module list are now not using any lldb code (as module list loading lives in llvm now), so they can be removed. The "filtering" of the module list remains (and probably will remain) an lldb concept, so I keep those tests, but replace the checked-in binaries with their yaml equivalents. The binaries which are no longer referenced by any tests have been removed. llvm-svn: 358850
* @skipIfLinux flaky lldb-mi testsPavel Labath2019-04-213-0/+3
| | | | llvm-svn: 358848
* Make TestVSCode_step pass reliablyPavel Labath2019-04-211-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The test was failing occasionally (1% of runs or so), because of unpredictable timings between the two threads spawned by the test. If the second thread hit the breakpoint right as we were stepping out of the function on the first thread, we would still be stuck at the inner frame when the process stopped. This would cause errors like: File "/home/worker/lldb-x86_64-debian/lldb-x86_64-debian/llvm/tools/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py", line 67, in test_step self.assertEqual(x1, x3, 'verify step out variable') AssertionError: 2 != 1 : verify step out variable AFAICT, lldb-vscode is doing the right thing here, and the problem is that the test is not taking this sequence of events into account. Since the test is about testing stepping, it does not seem necessary to have threads in the inferior at all, so I just rewrite the test to execute the code we're supposed to step through directly on the main thread. Reviewers: clayborg, jgorbe Subscribers: jfb, lldb-commits Differential Revision: https://reviews.llvm.org/D60608 llvm-svn: 358847
* modify-python-lldb.py: Remove docstring formatting codePavel Labath2019-04-213-79/+60
| | | | | | | | | | | The strings have been already cleaned up in r358683, so this code is not doing anything anymore. While comparing the outputs before and after removing the formatting code, I've found a couple of docstrings that managed to escape my perl script in r358683, so I format them manually with this patch. llvm-svn: 358846
* [Tests] Split float test into float and doublesJonas Devlieghere2019-04-194-18/+76
| | | | | | | | As I was waiting for the test suite to complete at 99% I noticed this test taking quite a bit of time. Since it's easy to split I just went ahead and did so. llvm-svn: 358792
* [Docs] Add more info about building the docsJonas Devlieghere2019-04-191-15/+27
| | | | | | Including the C++ and Python reference. llvm-svn: 358777
* This test doesn't need to be run for all debug formats.Jim Ingham2019-04-191-0/+1
| | | | llvm-svn: 358776
* [Docs] Make Doxygen functionalJonas Devlieghere2019-04-194-36/+11
| | | | | | | | | This fixes the doxygen configuration to be functional again. I removed the customer header and footer, as well as the no-longer-existent style sheet. I also widened the scope of the documentation, from just the public API to include the private interfaces as well. llvm-svn: 358773
* [Python] Simplify the code. NFCI.Davide Italiano2019-04-184-24/+8
| | | | llvm-svn: 358721
* [crashlog] Strip trailing `\n` from check_output return.Davide Italiano2019-04-181-1/+1
| | | | | | | | Generally having spurious `\n` doesn't matter, but here the returning string is a command which is executed, so we want to strip it. Pointed out by Jason. llvm-svn: 358717
* [CodeComplete] Remove obsolete isOutputBinary().Sam McCall2019-04-181-1/+1
| | | | | | | | | | | | | | | | Summary: It's never set to true. Its only effect would be to set stdout to binary mode. Hopefully we have better ways of doing this by now :-) Reviewers: hokein Subscribers: jkorous, arphaman, kadircet, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60871 llvm-svn: 358696
* [Docs] Add LLDB botsJonas Devlieghere2019-04-182-0/+21
| | | | llvm-svn: 358693
* [CMake] Emit LLDB.framework.dSYM to avoid potential name collision with ↵Stefan Granitz2019-04-181-0/+4
| | | | | | | | | | | | | | | | | | driver's lldb.dSYM Summary: Emit framework's dSYM bundle as LLDB.framework.dSYM instead of LLDB.dSYM, because the latter could conflict with the driver's lldb.dSYM when emitted in the same directory on case-insensitive file systems. Requires https://reviews.llvm.org/D60862 Reviewers: friss, beanz, bogner Subscribers: mgorny, lldb-commits, #lldb Tags: #lldb Differential Revision: https://reviews.llvm.org/D60863 llvm-svn: 358686
* Clean up docstrings in swig interface filesPavel Labath2019-04-1855-1824/+1563
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch removes the "//----" frames and "///" leading lines from docstring comments. We already have code doing transformations like this in modify-python-lldb.py, but that's a script I'd like to remove. Instead of running these transformations everytime we run swig, we can just perform equivalent on its input once. This patch can be reproduced (e.g. for downstream merges) with the following "sweet" perl command: perl -i -p -e 'BEGIN{ $/ = undef;} s:(" *\n) *//-----*\n:\1:gs; s:^( *)/// ?:\1:gsm; s:^ *//------*\n( *\n)?( *"):\2:gsm; s: *$::gsm; s:\n *"\):"):gsm' scripts/interface/*.i This command produces nearly equivalent python files to those produced by the relevant code in modify-python-lldb.py. The only difference I noticed is that here I am slightly more agressive in removing trailing newlines from docstring comments (the python script seems to leave newlines in class-level docstrings). Reviewers: amccarth, clayborg, jingham, aprantl Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D60498 llvm-svn: 358683
* [lldb] [test] Mark three more tests flakey/xfail on NetBSDMichal Gorny2019-04-182-0/+3
| | | | llvm-svn: 358660
* [Shell] Simplify Extracting Python VersionJonas Devlieghere2019-04-181-2/+1
| | | | | | | Instead of parsing the Python version with a fairly convoluted regex, just print the major and minor version and call it a day. llvm-svn: 358635
* [lldb] Don't filter variable list when doing a lookup by mangled name in ↵Kuba Mracek2019-04-184-1/+66
| | | | | | | | SymbolFileDWARF::FindGlobalVariables Differential Revision: https://reviews.llvm.org/D60737 llvm-svn: 358629
* [Cmake] Add missing dependency for running tests.Davide Italiano2019-04-171-0/+3
| | | | | | | This is needed now that we marked lldb-test as EXCLUDE_ALL, to make sure `ninja lldb-test-deps` doesn't fail. llvm-svn: 358625
* [crashlog] Use the right path for dsymforUUID and remove an unnecessary import.Davide Italiano2019-04-171-6/+1
| | | | | | <rdar://problem/49925960> llvm-svn: 358615
* [CMake] Remove Apple-specific version logic.Frederic Riss2019-04-173-38/+1
| | | | | | | | | | | | We were using the LLDB-Info.plist as the canonical holder of the version number, but there is really no good reason to do this. If anything the plist should be generated using the information provided to CMake. For now just remove the logic extracting the version from the plist and rely on LLDB_VERSION_STRING. llvm-svn: 358604
* Clear the output string passed to GetHostName()Aaron Smith2019-04-172-0/+8
| | | | | | | | LLVM's wchar to UTF8 conversion routine expects an empty string to store the output. GetHostName() on Windows is sometimes called with a non-empty string which triggers an assert. The simple fix is to clear the output string before the conversion. llvm-svn: 358550
* [tools] Only build lldb-test when needed.Davide Italiano2019-04-161-1/+5
| | | | llvm-svn: 358533
* [Process] Fix linux arm64 single step compilation failureAlex Langford2019-04-161-0/+1
| | | | | | | | This was updated in r356703 to use llvm::sys::RetryAfterSignal, which comes from llvm/Support/Errno.h. The header wasn't added, so it fails if you compile for arm64/aarch64. llvm-svn: 358530
* [tools] Make vscode and lldb-instr optional.Davide Italiano2019-04-165-2/+16
| | | | | | | | | | | | | | | | Summary: Saves some build times, and they're not part of the usual developer workflow. Reviewers: JDevlieghere, friss Subscribers: mgorny, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D60780 llvm-svn: 358528
* [debugserver] Relax the codesigning identity checkFrederic Riss2019-04-161-11/+7
| | | | | | | | | | | | | In an effort to help new LLDB developers, we added checks and messaging around the selection of your codesigning identity on macOS. While helpful, it is not actually correct. It's perfectly valid to codesign with an identity that is not named lldb_codesign. Currently this fails the build. This patch keeps a warning that informs developers how to setup lldb_codesign and how to pass it to cmake, but it allows the build to proceed with a different identity. llvm-svn: 358525
* Fix symtab-macho.test broken by r358500Pavel Labath2019-04-162-2/+2
| | | | | | Put the correct UUID string into the breakpad file. llvm-svn: 358508
* Breakpad: Match the new UUID algorithm in minidumpsPavel Labath2019-04-168-32/+101
| | | | | | | | | | | | | | | D59433 and D60501 changed the way UUIDs are computed from minidump files. This was done to synchronize the U(G)UID representation with the native tools of given platforms, but it created a mismatch between minidumps and breakpad files. This updates the breakpad algorithm to match the one found in minidumps, and also adds a couple of tests which should fail if these two ever get out of sync. Incidentally, this means that the module id in the breakpad files is almost identical to our notion of UUIDs, so the computation algorithm can be somewhat simplified. llvm-svn: 358500
* test/PECOFF: Remove REQUIRES: system-windowsPavel Labath2019-04-162-2/+2
| | | | | | | These tests run fine on non-windows platforms too. Instead I add REQUIRES: lld, as that is what they really require. llvm-svn: 358499
* Fix typo in ArmUnwindInfo::GetUnwindPlanRaphael Isemann2019-04-161-1/+1
| | | | | | | | | | | | | | | | | | | Summary: As reported in LLVM bug 41486, the check `(byte1 & 0xf8) == 0xc0` is wrong. We want to check for `11010nnn`, so the proper value we want to compare against is `0xd0` (`0xc0` would check for the value `11000nnn` which we already checked for above as described in the bug report). Reviewers: #lldb, jasonmolenda Reviewed By: #lldb, jasonmolenda Subscribers: jasonmolenda, javed.absar, kristof.beyls, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D60655 llvm-svn: 358479
* Correctly check if a warning message lacks a trailing new lineRaphael Isemann2019-04-161-3/+3
| | | | | | | | | | | | | | | | Summary: Fixes LLVM bug 41489. Reviewers: clayborg Reviewed By: clayborg Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D60653 llvm-svn: 358477
* [ASTImporter] Regression test to ensure that we handling importing of ↵Shafik Yaghmour2019-04-153-0/+36
| | | | | | | | | | | | | anonymous enums correctly Summary: https://reviews.llvm.org/D51633 added error handling in the ASTImporter.cpp which uncovered an underlying bug in which we used the wrong name when handling naming conflicts. This could cause a segmentation fault when attempting to cast an int to an enum during expression parsing. This test should pass once https://reviews.llvm.org/D59665 is committed. Differential Revision: https://reviews.llvm.org/D59667 llvm-svn: 358462
* Prevent unnecessary conversion from StringRef to C-string [NFC]Raphael Isemann2019-04-141-1/+1
| | | | | | | | | There is an alternative method to GetConstCStringWithLength that takes a StringRef. GetConstCStringWithLength also calls this method in the end, so directly calling the StringRef saves us from a unnecessary conversion to a C-string. llvm-svn: 358357
OpenPOWER on IntegriCloud