aboutsummaryrefslogtreecommitdiff
path: root/lldb/test
AgeCommit message (Collapse)AuthorFilesLines
2022-10-25[lldb] Automatically unwrap parameter packs in template argument accessorsJonas Devlieghere2-1/+45
When looking at template arguments in LLDB, we usually care about what the user passed in his code, not whether some of those arguments where passed as a variadic parameter pack. This patch extends all the C++ APIs to look at template parameters to take an additional 'expand_pack' boolean that automatically unwraps the potential argument packs. The equivalent SBAPI calls have been changed to pass true for this parameter. A byproduct of the patch is to also fix the support for template type that have only a parameter pack as argument (like the OnlyPack type in the test). Those were not recognized as template instanciations before. The added test verifies that the SBAPI is able to iterate over the arguments of a variadic template. The original patch was written by Fred Riss almost 4 years ago. Differential revision: https://reviews.llvm.org/D51387 (cherry picked from commit b706f56133a77f9d7c55270ac24ff59e6fce3fa4)
2022-07-26[lldb] Disable TestStackFromStdModule.pyAugusto Noronha1-0/+1
TestStackFromStdModule.py started failing due to f4fb72e6d4ce (https://reviews.llvm.org/D128146), with a clang assertion failure: assert(isa<InjectedClassNameType>(Decl->TypeForDecl))
2022-07-26[trace][intel pt] Introduce wall clock time for each trace itemWalter Erquinigo3-34/+42
- Decouple TSCs from trace items - Turn TSCs into events just like CPUs. The new name is HW clock tick, wich could be reused by other vendors. - Add a GetWallTime that returns the wall time that the trace plug-in can infer for each trace item. - For intel pt, we are doing the following interpolation: if an instruction takes less than 1 TSC, we use that duration, otherwise, we assume the instruction took 1 TSC. This helps us avoid having to handle context switches, changes to kernel, idle times, decoding errors, etc. We are just trying to show some approximation and not the real data. For the real data, TSCs are the way to go. Besides that, we are making sure that no two trace items will give the same interpolation value. Finally, we are using as time 0 the time at which tracing started. Sample output: ``` (lldb) r Process 750047 launched: '/home/wallace/a.out' (x86_64) Process 750047 stopped * thread #1, name = 'a.out', stop reason = breakpoint 1.1 frame #0: 0x0000000000402479 a.out`main at main.cpp:29:20 26 }; 27 28 int main() { -> 29 std::vector<int> vvv; 30 for (int i = 0; i < 100; i++) 31 vvv.push_back(i); 32 (lldb) process trace start -s 64kb -t --per-cpu (lldb) b 60 Breakpoint 2: where = a.out`main + 1689 at main.cpp:60:23, address = 0x0000000000402afe (lldb) c Process 750047 resuming Process 750047 stopped * thread #1, name = 'a.out', stop reason = breakpoint 2.1 frame #0: 0x0000000000402afe a.out`main at main.cpp:60:23 57 map<int, int> m; 58 m[3] = 4; 59 -> 60 map<string, string> m2; 61 m2["5"] = "6"; 62 63 std::vector<std::string> vs = {"2", "3"}; (lldb) thread trace dump instructions -t -f -e thread #1: tid = 750047 0: [379567.000 ns] (event) HW clock tick [48599428476224707] 1: [379569.000 ns] (event) CPU core changed [new CPU=2] 2: [390487.000 ns] (event) HW clock tick [48599428476246495] 3: [1602508.000 ns] (event) HW clock tick [48599428478664855] 4: [1662745.000 ns] (event) HW clock tick [48599428478785046] libc.so.6`malloc 5: [1662746.995 ns] 0x00007ffff7176660 endbr64 6: [1662748.991 ns] 0x00007ffff7176664 movq 0x32387d(%rip), %rax ; + 408 7: [1662750.986 ns] 0x00007ffff717666b pushq %r12 8: [1662752.981 ns] 0x00007ffff717666d pushq %rbp 9: [1662754.977 ns] 0x00007ffff717666e pushq %rbx 10: [1662756.972 ns] 0x00007ffff717666f movq (%rax), %rax 11: [1662758.967 ns] 0x00007ffff7176672 testq %rax, %rax 12: [1662760.963 ns] 0x00007ffff7176675 jne 0x9c7e0 ; <+384> 13: [1662762.958 ns] 0x00007ffff717667b leaq 0x17(%rdi), %rax 14: [1662764.953 ns] 0x00007ffff717667f cmpq $0x1f, %rax 15: [1662766.949 ns] 0x00007ffff7176683 ja 0x9c730 ; <+208> 16: [1662768.944 ns] 0x00007ffff7176730 andq $-0x10, %rax 17: [1662770.939 ns] 0x00007ffff7176734 cmpq $-0x41, %rax 18: [1662772.935 ns] 0x00007ffff7176738 seta %dl 19: [1662774.930 ns] 0x00007ffff717673b jmp 0x9c690 ; <+48> 20: [1662776.925 ns] 0x00007ffff7176690 cmpq %rdi, %rax 21: [1662778.921 ns] 0x00007ffff7176693 jb 0x9c7b0 ; <+336> 22: [1662780.916 ns] 0x00007ffff7176699 testb %dl, %dl 23: [1662782.911 ns] 0x00007ffff717669b jne 0x9c7b0 ; <+336> 24: [1662784.906 ns] 0x00007ffff71766a1 movq 0x3236c0(%rip), %r12 ; + 24 (lldb) thread trace dump instructions -t -f -e -J -c 4 [ { "id": 0, "timestamp_ns": "379567.000000", "event": "HW clock tick", "hwClock": 48599428476224707 }, { "id": 1, "timestamp_ns": "379569.000000", "event": "CPU core changed", "cpuId": 2 }, { "id": 2, "timestamp_ns": "390487.000000", "event": "HW clock tick", "hwClock": 48599428476246495 }, { "id": 3, "timestamp_ns": "1602508.000000", "event": "HW clock tick", "hwClock": 48599428478664855 }, { "id": 4, "timestamp_ns": "1662745.000000", "event": "HW clock tick", "hwClock": 48599428478785046 }, { "id": 5, "timestamp_ns": "1662746.995324", "loadAddress": "0x7ffff7176660", "module": "libc.so.6", "symbol": "malloc", "mnemonic": "endbr64" }, { "id": 6, "timestamp_ns": "1662748.990648", "loadAddress": "0x7ffff7176664", "module": "libc.so.6", "symbol": "malloc", "mnemonic": "movq" }, { "id": 7, "timestamp_ns": "1662750.985972", "loadAddress": "0x7ffff717666b", "module": "libc.so.6", "symbol": "malloc", "mnemonic": "pushq" }, { "id": 8, "timestamp_ns": "1662752.981296", "loadAddress": "0x7ffff717666d", "module": "libc.so.6", "symbol": "malloc", "mnemonic": "pushq" } ] ``` Differential Revision: https://reviews.llvm.org/D130054
2022-07-26[lldb][ARM] Add tests for vpush/vpop D registersDavid Spickett2-0/+250
Previously we just checked via S regs and were not checking memory content after pushes. The vpush test confirms that the fix in https://reviews.llvm.org/D130307 is working. Memory will only be checked if an "after" state is provided. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D130468
2022-07-26[lldb][ARM] Misc improvements to TestEmulationsDavid Spickett1-3/+4
* Look for files that end width arm/thumb.dat, meaning we don't try to run, for example, vim swap files. * Print the name of the test that failed. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D130467
2022-07-26[lldb][AArch64] Add support for memory tags in core filesDavid Spickett4-0/+248
This teaches ProcessElfCore to recognise the MTE tag segments. https://www.kernel.org/doc/html/latest/arm64/memory-tagging-extension.html#core-dump-support These segments contain all the tags for a matching memory segment which will have the same size in virtual address terms. In real terms it's 2 tags per byte so the data in the segment is much smaller. Since MTE is the only tag type supported I have hardcoded some things to those values. We could and should support more formats as they appear but doing so now would leave code untested until that happens. A few things to note: * /proc/pid/smaps is not in the core file, only the details you have in "maps". Meaning we mark a region tagged only if it has a tag segment. * A core file supports memory tagging if it has at least 1 memory tag segment, there is no other flag we can check to tell if memory tagging was enabled. (unlike a live process that can support memory tagging even if there are currently no tagged memory regions) Tests have been added at the commands level for a core file with mte and without. There is a lot of overlap between the "memory tag read" tests here and the unit tests for MemoryTagManagerAArch64MTE::UnpackTagsFromCoreFileSegment, but I think it's worth keeping to check ProcessElfCore doesn't cause an assert. Depends on D129487 Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D129489
2022-07-25[lldb] Make compiler-rt an optional LLDB test dependencyJonas Devlieghere1-0/+4
Make compiler-rt an LLDB test dependency if the corresponding target exists. Similarly we already have `asan` and `tsan` as optional test dependencies, but we need the `compiler-rt` target when enabling compiler-rt trough LLVM_ENABLE_RUNTIMES.
2022-07-23[lldb] Adapt lldb tests to changes in 71cdb8c6f144Augusto Noronha2-3/+3
2022-07-22[lldb] Remote accidental logs left in TestGuiExpandThreadsTreeAugusto Noronha1-20/+0
2022-07-22[lldb] Disable TestGuiExpandThreadsTreeAugusto Noronha1-0/+21
2022-07-22[lldb][ARM] Invert emulation test assert messageDavid Spickett1-1/+1
Previously you got: AssertionError: False is not True : Emulation test succeeded. Which is a bit of a head scratcher. The message is used when the test fails, not when it succeeds.
2022-07-22[LLDB][ClangExpression] Allow expression evaluation from within C++ LambdasMichael Buch3-0/+228
This patch adds support for evaluating expressions which reference a captured `this` from within the context of a C++ lambda expression. Currently LLDB doesn't provide Clang with enough information to determine that we're inside a lambda expression and are allowed to access variables on a captured `this`; instead Clang simply fails to parse the expression. There are two problems to solve here: 1. Make sure `clang::Sema` doesn't reject the expression due to an illegal member access. 2. Materialize all the captured variables/member variables required to evaluate the expression. To address (1), we currently import the outer structure's AST context onto `$__lldb_class`, making the `contextClass` and the `NamingClass` match, a requirement by `clang::Sema::BuildPossibleImplicitMemberExpr`. To address (2), we inject all captured variables as locals into the expression source code. **Testing** * Added API test
2022-07-22[LLDB][Expression] Allow instantiation of IR Entity from ValueObjectMichael Buch3-0/+90
This is required in preparation for the follow-up patch which adds support for evaluating expressions from within C++ lambdas. In such cases we need to materialize variables which are not part of the current frame but instead are ivars on a 'this' pointer of the current frame.
2022-07-21[lldb] [gdb-remote] Fix process ID after following forked childMichał Górny1-2/+14
Update the process ID after handling fork/vfork to ensure that the process plugin reports the correct PID immediately. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D130037
2022-07-21[lldb/test] Fix flakyness in TestNonStop.test_stdioPavel Labath1-13/+12
The test was assuming that the output will come in two messages. The truth is that it will come in **at least** two messages.
2022-07-21[LLDB][ClangExpression] Fix initialization of static enum alias membersMichael Buch2-0/+19
`IntegerLiteral::Create` operates on integer types. For that reason when we parse DWARF into an AST, when we encounter a constant initialized enum member variable, we try to determine the underlying integer type before creating the `IntegerLiteral`. However, we currently don't desugar the type and for enum typedefs `dyn_cast<EnumType>` fails. In debug builds this triggers following assert: ``` Assertion failed: (type->isIntegerType() && "Illegal type in IntegerLiteral"), function IntegerLiteral, file Expr.cpp, line 892 ``` This patch turns the `dyn_cast<EnumType>` into a `getAs<EnumType>` which `dyn_cast`s the canonical type, allowing us to get to the underlying integer type. **Testing** * API test * Manual repro is fixed Differential Revision: https://reviews.llvm.org/D130213
2022-07-21[LLDB][DataFormatter] Add support for std::__map_const_iteratorMichael Buch2-1/+16
This patch adds support for formatting `std::map::const_iterator`. It's just a matter of adding `const_` to the existing regex. **Testing** * Added test case to existing API tests Differential Revision: https://reviews.llvm.org/D129962
2022-07-19[LLDB][NativePDB] Add MSInheritanceAttr when creating pointer type that is a ↵Zequan Wu2-0/+36
pointer to member. Differential Revision: https://reviews.llvm.org/D129807
2022-07-18Revert "Make hit point counts reliable for architectures that stop before ↵Jim Ingham12-1/+45
evaluation." This reverts commit 5778ada8e54edb2bc2869505b88a959d1915c02f. The watchpoint tests all stall on aarch64-ubuntu bots. Reverting till I can get my hands on an system to test this out.
2022-07-18When the module path for `command script import` is invalid, echo the path.Jim Ingham1-3/+4
We were just emitting "invalid module" w/o saying which module. That's not particularly helpful. Differential Revision: https://reviews.llvm.org/D129338
2022-07-18Make hit point counts reliable for architectures that stop before evaluation.Jim Ingham12-45/+1
Since we want to present the "new & old" values for watchpoint hits, on architectures, including the ARM family, that stop before the triggering instruction is run, we need to single step over the instruction before stopping for realz. This was incorrectly done directly in the StopInfoWatchpoint::ShouldStop. That causes problems if more than one thread stops "for a reason" at the same time as the watchpoint, since the other actions didn't expect the process to make progress in this part of the execution control machinery. The correct way to do this is to schedule the step over using ThreadPlans, and then to restore the stop info after that plan stops, so that the rest of the stop info actions can happen when all the other threads have handled their immediate actions as well. Differential Revision: https://reviews.llvm.org/D129814
2022-07-15[lldb] [llgs] Improve stdio forwarding in multiprocess+nonstopMichał Górny2-1/+55
Enable stdio forwarding when nonstop mode is enabled, and disable it once it is disabled. This makes it possible to cleanly handle stdio forwarding while running multiple processes in non-stop mode. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128932
2022-07-15[lldb] [test] Skip test_leave_nonstop on WindowsMichał Górny1-0/+1
2022-07-15[lldb] [llgs] Fix disabling non-stop modeMichał Górny1-0/+30
Stop all processes and clear notification queues when disabling non-stop mode. Ensure that no stop notifications are sent for processes stopped due to the mode switch. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128893
2022-07-15[lldb] [test] Skip test_stop_reason_while_running on WindowsMichał Górny1-0/+1
2022-07-15[lldb] [llgs] Fix `?` packet response for running threadsMichał Górny1-0/+20
Fix the response to `?` packet for threads that are running at the time (in non-stop mode). The previous code would wrongly send or queue an empty response for them. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128879
2022-07-15[lldb] [test] Skip TestNonStop → test_stdio on WindowsMichał Górny1-0/+1
2022-07-15[lldb] [llgs] Send process output asynchronously in non-stop modeMichał Górny1-0/+44
Introduce a new %Stdio notification category and use it to send process output asynchronously when running in non-stop mode. This is an LLDB extension since GDB does not use the 'O' packet for process output, just for replies to 'qRcmd' packets. Using the async notification mechanism implies that only the first output packet is sent immediately to the client. The client needs to request subsequent notifications (if any) using the new vStdio packet (that works pretty much like vStopped for the Stop notification queue). The packet handler in lldb-server tests is updated to handle the async stdio packets in addition to the regular O packets. However, due to the implications noted above, it can only handle the first output packet sent by the server. Subsequent packets need to be explicitly requested via vStdio. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128849
2022-07-15[lldb] [test] Skip new NonStop tests on WindowsMichał Górny1-0/+3
2022-07-15[lldb][AArch64] Enable int128 testDavid Spickett1-1/+1
Other 128 bit tests run on AArch64 fine, it's Arm (as in 32 bit Arm) that needs to be skipped.
2022-07-15Reland "[lldb] [llgs] Fix multi-resume bugs with nonstop mode"Michał Górny2-51/+125
Improve handling of multiple successive continue packets in non-stop mode. More specifically: 1. Explicitly send error response (instead of crashing on assertion) if the user attempts to resume the same process twice. Since we do not support thread-level non-stop mode, one needs to always stop the process explicitly before resuming another thread set. 2. Actually stop the process if "vCont;t" is delivered to a running process. Similarly, we only support stopping all the running threads simultaneously (via -1) and return an error in any other case. With this patch, running multiple processes simultaneously is still unsupported. The patch also employs a hack to avoid enabling stdio forwarding on "vCont;t" packet. Both of these issues are addressed by followup patches. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128710
2022-07-15Revert "[lldb] [llgs] Fix multi-resume bugs with nonstop mode"Michał Górny2-134/+51
This reverts commit f8605da8758fbae16410e4ed5493a39429fd73ec. This is causing buildbot failures and now I see that I have not updated the tests to use "stop" instead of "trap".
2022-07-15[lldb] [llgs] Fix multi-resume bugs with nonstop modeMichał Górny2-51/+134
Improve handling of multiple successive continue packets in non-stop mode. More specifically: 1. Explicitly send error response (instead of crashing on assertion) if the user attempts to resume the same process twice. Since we do not support thread-level non-stop mode, one needs to always stop the process explicitly before resuming another thread set. 2. Actually stop the process if "vCont;t" is delivered to a running process. Similarly, we only support stopping all the running threads simultaneously (via -1) and return an error in any other case. With this patch, running multiple processes simultaneously is still unsupported. The patch also employs a hack to avoid enabling stdio forwarding on "vCont;t" packet. Both of these issues are addressed by followup patches. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D128710
2022-07-15Reland "[lldb] Add support for using integral const static data members in ↵Andy Yankovsky6-0/+254
the expression evaluator" Reland 486787210d which broke tests on Arm and Windows. * Windows -- on Windows const static data members with no out-of-class definition do have valid addresses, in constract to other platforms (Linux, macos) where they don't. Adjusted the test to expect success on Windows and failure on other platforms. * Arm -- `int128` is not available on 32-bit ARM, so disable the test for this architecture.
2022-07-14[lldb] Print the enum values and their description in the help outputJonas Devlieghere1-0/+13
Print the enum values and their description in the help output for argument values. Until now, there was no way to get these values and their description. Example output: (lldb) help <description-verbosity> <description-verbosity> -- How verbose the output of 'po' should be. compact : Only show the description string full : Show the full output, including persistent variable's name and type Differential revision: https://reviews.llvm.org/D129707
2022-07-14Revert "[lldb] Add support for using integral const static data members in ↵Stella Stamenova6-251/+0
the expression evaluator" This reverts commit 486787210df5ce5eabadc90a7de353ae81101feb. This broke the windows lldb bot: https://lab.llvm.org/buildbot/#/builders/83/builds/21186
2022-07-14[lldb] Remove ELF .zdebug supportFangrui Song2-58/+3
clang 14 removed -gz=zlib-gnu support and ld.lld/llvm-objcopy removed zlib-gnu support recently. Remove lldb support by migrating away from llvm::object::Decompressor::isCompressedELFSection. The API has another user llvm-dwp, so it is not removed in this patch. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D129724
2022-07-14[lldb] Add support for using integral const static data members in the ↵Andy Yankovsky6-0/+251
expression evaluator This adds support for using const static integral data members as described by C++11 [class.static.data]p3 to LLDB's expression evaluator. So far LLDB treated these data members are normal static variables. They already work as intended when they are declared in the class definition and then defined in a namespace scope. However, if they are declared and initialised in the class definition but never defined in a namespace scope, all LLDB expressions that use them will fail to link when LLDB can't find the respective symbol for the variable. The reason for this is that the data members which are only declared in the class are not emitted into any object file so LLDB can never resolve them. Expressions that use these variables are expected to directly use their constant value if possible. Clang can do this for us during codegen, but it requires that we add the constant value to the VarDecl we generate for these data members. This patch implements this by: * parsing the constant values from the debug info and adding it to variable declarations we encounter. * ensuring that LLDB doesn't implicitly try to take the address of expressions that might be an lvalue that points to such a special data member. The second change is caused by LLDB's way of storing lvalues in the expression parser. When LLDB parses an expression, it tries to keep the result around via two mechanisms: 1. For lvalues, LLDB generates a static pointer variable and stores the address of the last expression in it: `T *$__lldb_expr_result_ptr = &LastExpression` 2. For everything else, LLDB generates a static variable of the same type as the last expression and then direct initialises that variable: `T $__lldb_expr_result(LastExpression)` If we try to print a special const static data member via something like `expr Class::Member`, then LLDB will try to take the address of this expression as it's an lvalue. This means LLDB will try to take the address of the variable which causes that Clang can't replace the use with the constant value. There isn't any good way to detect this case (as there a lot of different expressions that could yield an lvalue that points to such a data member), so this patch also changes that we only use the first way of capturing the result if the last expression does not have a type that could potentially indicate it's coming from such a special data member. This change shouldn't break most workflows for users. The only observable side effect I could find is that the implicit persistent result variables for const int's now have their own memory address: Before this change: ``` (lldb) p i (const int) $0 = 123 (lldb) p &$0 (const int *) $1 = 0x00007ffeefbff8e8 (lldb) p &i (const int *) $2 = 0x00007ffeefbff8e8 ``` After this change we capture `i` by value so it has its own value. ``` (lldb) p i (const int) $0 = 123 (lldb) p &$0 (const int *) $1 = 0x0000000100155320 (lldb) p &i (const int *) $2 = 0x00007ffeefbff8e8 ``` Reviewed By: Michael137 Differential Revision: https://reviews.llvm.org/D81471
2022-07-14jGetLoadedDynamicLibrariesInfos can inspect machos not yet loadedJason Molenda3-0/+113
jGetLoadedDynamicLibrariesInfos normally checks with dyld to find the list of binaries loaded in the inferior, and getting the filepath, before trying to parse the Mach-O binary in inferior memory. This allows for debugserver to parse a Mach-O binary present in memory, but not yet registered with dyld. This patch also adds some simple sanity checks that we're reading a Mach-O header before we begin stepping through load commands, because we won't have the sanity check of consulting dyld for the list of loaded binaries before parsing. Also adds a testcase. [This patch was reverted after causing a testsuite failure on a CI bot; I haven't been able to repro the failure outside the CI, but I have a theory that my sanity check on cputype which only matched arm64 and x86_64 - and the CI machine may have a watch simulator that is still using i386.] Differential Revision: https://reviews.llvm.org/D128956 rdar://95737734
2022-07-13[lldb] Add image dump pcm-info commandDave Lee3-0/+45
Add `pcm-info` to the `target module dump` subcommands. This dump command shows information about clang .pcm files. This command effectively runs `clang -module-file-info` and produces identical output. The .pcm file format is tightly coupled to the clang version. The clang embedded in lldb is not guaranteed to match the version of the clang executable available on the local system. There have been times when I've needed to view the details about a .pcm file produced by lldb's embedded clang, but because the clang executable was a slightly different version, the `-module-file-info` invocation failed. With this command, users can inspect .pcm files generated by lldb too. Differential Revision: https://reviews.llvm.org/D129456
2022-07-13[trace][intel pt] Support dumping the trace info in jsonymeng2-10/+50
Thanks to ymeng@fb.com for coming up with this change. `thread trace dump info` can dump some metrics that can be useful for analyzing the performance and quality of a trace. This diff adds a --json option for dumping this information in json format that can be easily understood my machines. Differential Revision: https://reviews.llvm.org/D129332
2022-07-13[trace][intel pt] Create a CPU change event and expose it in the dumperWalter Erquinigo2-10/+93
Thanks to fredzhou@fb.com for coming up with this feature. When tracing in per-cpu mode, we have information of in which cpu we are execution each instruction, which comes from the context switch trace. This diff makes this information available as a `cpu changed event`, which an additional accessor in the cursor `GetCPU()`. As cpu changes are very infrequent, any consumer should listen to cpu change events instead of querying the actual cpu of a trace item. Once a cpu change event is seen, the consumer can invoke GetCPU() to get that information. Also, it's possible to invoke GetCPU() on an arbitrary instruction item, which will return the last cpu seen. However, this call is O(logn) and should be used sparingly. Manually tested with a sample program that starts on cpu 52, then goes to 18, and then goes back to 52. Differential Revision: https://reviews.llvm.org/D129340
2022-07-13[trace] Add an option to save a compact trace bundleWalter Erquinigo2-10/+43
A trace bundle contains many trace files, and, in the case of intel pt, the largest files are often the context switch traces because they are not compressed by default. As a way to improve this, I'm adding a --compact option to the `trace save` command that filters out unwanted processes from the context switch traces. Eventually we can do the same for intel pt traces as well. Differential Revision: https://reviews.llvm.org/D129239
2022-07-13[trace][intel pt] Add a nice parser for the trace sizernofenko1-0/+56
Thanks to rnofenko@fb.com for coming up with these changes. This diff adds support for passing units in the trace size inputs. For example, it's now possible to specify 64KB as the trace size, instead of the problematic 65536. This makes the user experience a bit friendlier. Differential Revision: https://reviews.llvm.org/D129613
2022-07-13[LLDB] Fix TestConvenienceVariables.test AArch64/WindowsMuhammad Omair Javaid2-7/+2
This patch fixes TestConvenienceVariables.test for AArch64 Windows. Clang/LLD was unable to find printf apparently available as a macro definition in stdio.h.
2022-07-13[LLDB] Fix TestThreadAPI.py for AArch64/WindowsMuhammad Omair Javaid1-0/+2
This patch fixes TestThreadAPI for AArch64 windows by switching over to PDB debug info instead of DWARF. This is needed to step over library functions like printf as there is debug info mismatch between DWARF and PDB. PDB DWARF interworking is not fully supported by LLDB at the moment.
2022-07-13[LLDB] XFail TestLoadUnload.test_static_init_during_load AArch64/WindowsMuhammad Omair Javaid1-0/+1
This patch fixes marks TestLoadUnload.test_static_init_during_load as xfail for AArch64 windows. It is failing similar to Linux and already marked xfail for linux.
2022-07-13[LLDB] Fix pointers.test for AArch64/WindowsMuhammad Omair Javaid1-1/+1
pointers.test started failing again for AArch64 windows after D125509 This patch fixes the test to make it pass on AArch64 windows again. LLDB AArch64 Windows buildbot running at: https://lab.llvm.org/staging/#/builders/207
2022-07-12[lldb] Fix macOS Ventura version number checksJonas Devlieghere2-2/+2
Unlike Python 2 which reports 10.16 on any recent macOS, Python 3 correctly reports Ventura as macOS 13.
2022-07-12Reland "[LLDB][NFC] Decouple dwarf location table from DWARFExpression."Zequan Wu2-12/+12
This reland 227dffd0b6d78154516ace45f6ed28259c7baa48 and 562c3467a6738aa89203f72fc1d1343e5baadf3c with failed api tests fixed by keeping function base file addres in DWARFExpressionList.