Commit Graph

2855 Commits

Author SHA1 Message Date
Jim Ingham
d6cad39316 Clean up this test.
I don't know what the intent of parts of this test were.  We set a
bunch of breakpoints and ran from one to the other, doing "self.runCmd("thread backtrace")"
then continuing to the next one.  We didn't actually verify the contents of the backtrace,
nor that we hit the breakpoints we set in any particular order.  The only actual test was
to run sel_getName at two of these stops.

So I reduced the test to just stopping at the places where we were actually going to run
an expression, and tested the expression.

llvm-svn: 372196
2019-09-18 01:53:52 +00:00
Jim Ingham
f547cf12ee TestFoundationDisassembly.py is not dependent on debug information.
This test is about disassembling symbols in a framework without debug information.
So we don't need to run it once per debug info flavor.

llvm-svn: 372193
2019-09-18 00:40:49 +00:00
Jonas Devlieghere
20b52c33ba [ScriptInterpreter] Limit LLDB's globals to interactive mode.
Jim pointed out that the LLDB global variables should only be available
in interactive mode. When used from a command for example, their values
might be stale or not at all what the user expects. Therefore we want to
explicitly make these variables unavailable.

Differential revision: https://reviews.llvm.org/D67685

llvm-svn: 372192
2019-09-18 00:30:01 +00:00
Jonas Devlieghere
71b32e4175 [test] Fail gracefully if the regex doesn't match
This test is failing on the Fedora bot (staging). Rather than failing
with an IndexError, we should trigger an assert and dump the log when
the regex doesn't match.

llvm-svn: 372052
2019-09-16 23:49:42 +00:00
Jonas Devlieghere
61dc038f8d [test] Update TestAPILog to pass on Windows.
The pretty function macro is including __cdecl on Windows, which was
causing the pattern matching to fail. This should fix that.

llvm-svn: 371905
2019-09-13 22:14:59 +00:00
Jonas Devlieghere
a3e27633a8 [test] Print the log output on failure.
This ensures that if the assertion fails we dump the log content. This
should help me investigate what the output looks like on Windows, where
the test is failing.

llvm-svn: 371899
2019-09-13 21:15:03 +00:00
Jonas Devlieghere
449ca01bac [Reproducer] Include the this pointer in the API log.
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
2019-09-13 19:08:10 +00:00
Jason Molenda
0a39ef4704 The setUp/tearDown methods I added mssed up the test function; reorder.
Thanks to Ted Woodward for catching this one.

llvm-svn: 371795
2019-09-13 00:01:49 +00:00
Raphael Isemann
d23fab09a2 [lldb][NFC] Simplify makefiles also for breakpoint tests
These tests were temporarily missing when the big Makefile
simplification patch landed, so this just applies the same change
to these tests.

llvm-svn: 371738
2019-09-12 14:21:59 +00:00
Raphael Isemann
03a111dc46 [lldb] Remove duplicated breakpoint tests
After reverting the deletion of the functionalities/breakpoint tests,
we now have some tests twice in the test/ folder which breaks dotest:

* commands/breakpoint/basic
* functionalities/breakpoint/breakpoint_command

After looking over these tests, I think it makes sense to only
keep the original functionalities/ folder. The commands/breakpoint/basic
test are not exclusively testing the breakpoint command itself, so
they shouldn't be in commands/ in the first place. Note that these
folders have identical contents (beside small adjustments regarding
the Makefile which landed after the restructuring).

llvm-svn: 371734
2019-09-12 14:07:16 +00:00
Vedant Kumar
21d417dc18 [DWARF] Evaluate DW_OP_entry_value
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
2019-09-11 21:23:45 +00:00
Jason Molenda
9b27586e83 Ah, only skip this for embedded darwin targets.
llvm-svn: 371583
2019-09-11 01:03:24 +00:00
Jason Molenda
f0321c094d Skip a test in TestProcessIO.py when running against ios devices.
llvm-svn: 371582
2019-09-11 01:02:30 +00:00
Vedant Kumar
3ef7dbd665 [lldbtest] Add an "expected_cmd_failure" option to the filecheck helper
llvm-svn: 371544
2019-09-10 18:36:53 +00:00
Raphael Isemann
d9442afba1 [lldb] Readd missing functionalities/breakpoint tests
It seems when I restructured the test folders the functionalities/breakpoint
was deleted. This just reverts this change and re-adds the tests.

llvm-svn: 371512
2019-09-10 12:04:04 +00:00
Greg Clayton
4f68c226a5 Fix ELF core file memory reading for PT_LOAD program headers with no p_filesz
Prior to this fix, ELF files might contain PT_LOAD program headers that had a valid p_vaddr, and a valid file p_offset, but the p_filesz would be zero. For example in llvm-project/lldb/test/testcases/functionalities/postmortem/elf-core/thread_crash/linux-i386.core we see:

Program Headers:
Index   p_type           p_flags    p_offset           p_vaddr            p_paddr            p_filesz           p_memsz            p_align
======= ---------------- ---------- ------------------ ------------------ ------------------ ------------------ ------------------ ------------------
[    0] PT_NOTE          0x00000000 0x0000000000000474 0x0000000000000000 0x0000000000000000 0x0000000000001940 0x0000000000000000 0x0000000000000000
[    1] PT_LOAD          0x00000005 0x0000000000002000 0x0000000008048000 0x0000000000000000 0x0000000000000000 0x0000000000003000 0x0000000000001000
[    2] PT_LOAD          0x00000004 0x0000000000002000 0x000000000804b000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[    3] PT_LOAD          0x00000006 0x0000000000002000 0x000000000804c000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[    4] PT_LOAD          0x00000006 0x0000000000002000 0x0000000009036000 0x0000000000000000 0x0000000000000000 0x0000000000025000 0x0000000000001000
[    5] PT_LOAD          0x00000000 0x0000000000002000 0x00000000f63a1000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[    6] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f63a2000 0x0000000000000000 0x0000000000000000 0x0000000000800000 0x0000000000001000
[    7] PT_LOAD          0x00000000 0x0000000000002000 0x00000000f6ba2000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[    8] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f6ba3000 0x0000000000000000 0x0000000000000000 0x0000000000804000 0x0000000000001000
[    9] PT_LOAD          0x00000005 0x0000000000002000 0x00000000f73a7000 0x0000000000000000 0x0000000000000000 0x00000000001b1000 0x0000000000001000
[   10] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f7558000 0x0000000000000000 0x0000000000000000 0x0000000000002000 0x0000000000001000
[   11] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f755a000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   12] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f755b000 0x0000000000000000 0x0000000000000000 0x0000000000003000 0x0000000000001000
[   13] PT_LOAD          0x00000005 0x0000000000002000 0x00000000f755e000 0x0000000000000000 0x0000000000000000 0x0000000000019000 0x0000000000001000
[   14] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f7577000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   15] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f7578000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   16] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f7579000 0x0000000000000000 0x0000000000000000 0x0000000000002000 0x0000000000001000
[   17] PT_LOAD          0x00000005 0x0000000000002000 0x00000000f757b000 0x0000000000000000 0x0000000000000000 0x000000000001c000 0x0000000000001000
[   18] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f7597000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   19] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f7598000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   20] PT_LOAD          0x00000005 0x0000000000002000 0x00000000f7599000 0x0000000000000000 0x0000000000000000 0x0000000000053000 0x0000000000001000
[   21] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f75ec000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   22] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f75ed000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   23] PT_LOAD          0x00000005 0x0000000000002000 0x00000000f75ee000 0x0000000000000000 0x0000000000000000 0x0000000000176000 0x0000000000001000
[   24] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f7764000 0x0000000000000000 0x0000000000000000 0x0000000000006000 0x0000000000001000
[   25] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f776a000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   26] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f776b000 0x0000000000000000 0x0000000000000000 0x0000000000003000 0x0000000000001000
[   27] PT_LOAD          0x00000006 0x0000000000002000 0x00000000f778a000 0x0000000000000000 0x0000000000000000 0x0000000000002000 0x0000000000001000
[   28] PT_LOAD          0x00000004 0x0000000000002000 0x00000000f778c000 0x0000000000000000 0x0000000000002000 0x0000000000002000 0x0000000000001000
[   29] PT_LOAD          0x00000005 0x0000000000004000 0x00000000f778e000 0x0000000000000000 0x0000000000002000 0x0000000000002000 0x0000000000001000
[   30] PT_LOAD          0x00000005 0x0000000000006000 0x00000000f7790000 0x0000000000000000 0x0000000000000000 0x0000000000022000 0x0000000000001000
[   31] PT_LOAD          0x00000004 0x0000000000006000 0x00000000f77b3000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   32] PT_LOAD          0x00000006 0x0000000000006000 0x00000000f77b4000 0x0000000000000000 0x0000000000000000 0x0000000000001000 0x0000000000001000
[   33] PT_LOAD          0x00000006 0x0000000000006000 0x00000000ffa25000 0x0000000000000000 0x0000000000000000 0x0000000000022000 0x0000000000001000
Prior to this fix if users tried to read memory from one of these addresses like 0x8048000, they would end up incorrectly reading from the next memory region that actually had a p_filesz which would be 0x00000000f778c000 in this case. This fix correctly doesn't include program headers with zero p_filesz in the ProcessELFCore::m_core_aranges that is used to read memory. I found two cores files that have this same issue and added tests.

Differential Revision: https://reviews.llvm.org/D67370

llvm-svn: 371457
2019-09-09 21:45:49 +00:00
Aleksandr Urakov
6179c0eb0d [Windows] Add support of watchpoints to ProcessWindows
Summary:
This patch adds support of watchpoints to the old `ProcessWindows` plugin.

The `ProcessWindows` plugin uses the `RegisterContext` to set and reset
watchpoints. The `RegisterContext` has some interface to access watchpoints,
but it is very limited (e.g. it is impossible to retrieve the last triggered
watchpoint with it), that's why I have implemented a slightly different
interface in the `RegisterContextWindows`. Moreover, I have made the
`ProcessWindows` plugin responsible for search of a vacant watchpoint slot,
because watchpoints exist per-process (not per-thread), then we can place
the same watchpoint in the same slot in different threads. With this scheme
threads don't need to have their own watchpoint lists, and it simplifies
identifying of the last triggered watchpoint.

Reviewers: asmith, stella.stamenova, amccarth

Reviewed By: amccarth

Subscribers: labath, zturner, leonid.mashinskiy, abidh, JDevlieghere, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D67168

llvm-svn: 371166
2019-09-06 05:37:03 +00:00
Jonas Devlieghere
f5687d7c12 Remove bugreport command
The bugreport command exists to create domain-specific bug reports.
Currently it has one implementation for filing bugs on the unwinder. As
far as we can tell, it has never been of use. Although not exactly the
same as the reproducers, it's a bit confusing to have two parallel
command trees for (kind of) the same thing.

Differential revision: https://reviews.llvm.org/D65469

llvm-svn: 371132
2019-09-05 21:43:32 +00:00
Raphael Isemann
1677301969 [lldb][NFC] Add dimensions to pexpect tests failing on sanitizer bot
I'm still unable to reproduce this locally, so let's see if this
is enough to make the bots happy. The missing dimension parameter
seems to be the biggest difference between these tests and
TestIOHandlerCompletion.py which runs just fine on the same bot,
so that's the motivation for trying this out.

llvm-svn: 371077
2019-09-05 14:51:23 +00:00
Raphael Isemann
cbce3cef52 [lldb][NFC] Stabilize gui/basic test by waiting on prompt
We should wait on the GUI to exit before tearing down the test.

llvm-svn: 371028
2019-09-05 08:45:20 +00:00
Pavel Labath
35dfb2e8d7 [dotest] Remove top-level Makefile
This appears to be a really ancient  way of running the test suite. It
is also completely disfunctional now, and probably has been for a long
time.

llvm-svn: 371020
2019-09-05 07:38:55 +00:00
Pavel Labath
45e3ce8d76 [dotest] Centralize initialization commands even more
Summary:
In r367234 we introduced a central place to hold the set up commands for
the various ways we have of launching lldb. However, a number of
commands still remained outside of that.

This patch moves the remaining set up commands into this function, which
allows us to remove manual clang module path setting code in
TestBatchMode.

One unfortunate victim of this approach is TestSTTYBeforeAndAfter which,
due to how it launches lldb (pexpect->expect->lldb), fails get the
quoting right. It would be possible to fix the quoting there, it would be a bit
icky, and none of the commands in this list are really relevant for what this
test is doing, so I just remove the commands outright.

Reviewers: JDevlieghere, jankratochvil

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D67173

llvm-svn: 371019
2019-09-05 07:35:45 +00:00
Pavel Labath
59a1d998d9 [dotest] Delete trivial inline test makefiles
inline tests are able to generate these automatically

llvm-svn: 371015
2019-09-05 06:55:23 +00:00
Jonas Devlieghere
c40449f3c5 [test] Escape path to match the literal string
This test was failing when you had things like `+` in your build path.

llvm-svn: 370983
2019-09-04 21:18:46 +00:00
Jonas Devlieghere
85d6edb265 Revert "[test] Address TestConcurrentMany*.py flakiness on macOS"
This reverts my change to pseudo_barrier.h which isn't necessary anymore
after Fred's fix to debugserver and caused TestThreadStepOut to fail.

llvm-svn: 370963
2019-09-04 19:36:29 +00:00
Jonas Devlieghere
6eef8e01c7 [Python] Implement __next__ for value_iter
Python 3 iteration calls the next() method instead of next() and
value_iter only implemented the Python 2 version.

Differential revision: https://reviews.llvm.org/D67184

llvm-svn: 370954
2019-09-04 18:59:13 +00:00
Jonas Devlieghere
24223eb24c [Python] Implement truth testing for lldb.value
Python 3 calls __bool__() instead of __len__() and lldb.value only
implemented the __len__ method. This adds the __bool__() implementation.

Differential revision: https://reviews.llvm.org/D67183

llvm-svn: 370953
2019-09-04 18:59:10 +00:00
Adrian Prantl
2461061168 Upstream macCatalyst support in debugserver and the macOS dynamic loader
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
2019-09-04 17:23:15 +00:00
Frederic Riss
cc5b509b9e Workaround TestConcurrentMany* flakiness in a more pricipled way
The flakiness on our local machines seems to come for a race in the kernel
between task_suspend and the creation of the Mach exceptions for the threads
that hit breakpoints. The debugserver code is written with the assumption
that the kernel will be able to provide us with all the exceptions for a
given task once task_suspend returns. On machines with higher core counts,
this seems not to be the case. The first batch of exceptions we get after
task_suspend does not contain exceptions for all the threads that have hit
a breakpoint, thus they get misreprorted in the first stop packet.

Adding a 1ms timeout to the call that retrieves the batch of exceptions
seems to workaround the issue reliably on our machines, and it shoulnd't
impact standard debugging scenarios too much (a stop will incur an additional
1ms delay). We'll be talking to the kernel team to figure out the right
contract for those APIs.

This patch also reverts part of Jonas' previous workaround for the
issue (r370785).

llvm-svn: 370916
2019-09-04 16:13:12 +00:00
Raphael Isemann
e5814d78ce [lldb] Limit the amount of zeroes we use for padding when printing small floats
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
2019-09-04 11:41:23 +00:00
Pavel Labath
84542187ee Port TestBatchMode to PExpectTest class
Summary:
I'm doing this mainly for consistency, but there are also other cleanups
that will be enabled by this (e.g., the automatic setting of
clang-modules-cache-path setting).

Reviewers: teemperor, JDevlieghere

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D67082

llvm-svn: 370858
2019-09-04 09:20:08 +00:00
Raphael Isemann
7479b9cb0e [lldb][NFC] Add a simple test for thread_local storage.
Seems we fail to read TLS data on Linux, so the test only runs on
macOS for now. We will see how this test runs on the BSD bots.

llvm-svn: 370848
2019-09-04 08:02:52 +00:00
Pavel Labath
418a272f4a [dotest] Avoid the need for LEVEL= makefile boilerplate
Summary:
Instead of each test case knowing its depth relative to the test root,
we can just have dotest add the folder containing Makefile.rules to the
include path.

This was motivated by r370616, though I have been wanting to do this
ever since we moved to building tests out-of-tree.

The only manually modified files in this patch are lldbinline.py and
plugins/builder_base.py. The rest of the patch has been produced by this
shell command:
  find . \( -name Makefile -o -name '*.mk' \)  -exec sed --in-place -e '/LEVEL *:\?=/d' -e '1,2{/^$/d}' -e 's,\$(LEVEL)/,,' {} +

Reviewers: teemperor, aprantl, espindola, jfb

Subscribers: emaste, javed.absar, arichardson, christof, arphaman, lldb-commits

Differential Revision: https://reviews.llvm.org/D67083

llvm-svn: 370845
2019-09-04 07:46:25 +00:00
Michal Gorny
37f91c3218 [lldb] [test] Mark 'reenabled' tests XFAIL on NetBSD
llvm-svn: 370842
2019-09-04 06:36:53 +00:00
Michal Gorny
3461e3ea8e [lldb] [test] Un-mark two commands/register tests XFAIL
llvm-svn: 370840
2019-09-04 06:10:02 +00:00
Raphael Isemann
d6f097eeb8 [lldb][NFC] Remove lldbcurses.py
Summary: This doesn't seem to be used anymore (at least I can't find any reference to this in the LLDB repo and it doesn't seem to be a standalone script). Git says this was once some new curses mode for viewing test results.

Reviewers: clayborg, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: JDevlieghere, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D67064

llvm-svn: 370804
2019-09-03 18:11:54 +00:00
Jonas Devlieghere
e44f2eb315 [test] Addres TestConcurrentMany*.py flakiness on macOS
On "fast" macOS machines, the TestConcurrentMany*.py tests would fail
randomly with different numbers of breakpoints, watchpoints, etc. This
seems to be avoidable by giving the threads a little time to breath
after the passing the synchronization barrier. This is far from a
structural fix but it reduces the flakiness.

llvm-svn: 370785
2019-09-03 17:04:04 +00:00
Jonas Devlieghere
063aac6cf3 [test] Remove print statements and verify that the symbol exists
This removes some (commented out) print statements and adds a line that
verifies that uses image list to check the symbol.

llvm-svn: 370777
2019-09-03 16:26:44 +00:00
Raphael Isemann
f792054fd2 [lldb][NFC] Disable added frame select and all log option test on windows
llvm-svn: 370776
2019-09-03 16:21:57 +00:00
Raphael Isemann
607c92afda [lldb] Test 'frame select -r' and fix that INT32_MIN breaks the option parser
llvm-svn: 370734
2019-09-03 10:15:45 +00:00
Raphael Isemann
99f9f1f2d8 [lldb][NFC] Test 'command delete'
llvm-svn: 370733
2019-09-03 10:13:45 +00:00
Raphael Isemann
07ae1bd711 [lldb][NFC] Test that enabling all log options doesn't crash anything
llvm-svn: 370724
2019-09-03 09:40:25 +00:00
Raphael Isemann
253eecf525 [lldb][NFC] Remove unnecessary constructors from invalid-args tests
llvm-svn: 370719
2019-09-03 09:25:02 +00:00
Raphael Isemann
b78900e0ab [lldb][NFC] Simplify script_alias test
llvm-svn: 370718
2019-09-03 09:21:47 +00:00
Raphael Isemann
e76113347d [lldb][NFC] Also test unaliasing in nested_alias test
llvm-svn: 370717
2019-09-03 09:19:51 +00:00
Raphael Isemann
d77ea5b297 [lldb] Test 'command' commands and fix the found crashes
llvm-svn: 370712
2019-09-03 09:06:12 +00:00
Raphael Isemann
b10a433da8 [lldb][NFC] Unify log files in commands/log/basic
llvm-svn: 370706
2019-09-03 08:30:17 +00:00
Raphael Isemann
13edbbe2fa [lldb][NFC] Remove setup boilerplate from types/ tests
This code doesn't seem to be necessary anymore.

llvm-svn: 370702
2019-09-03 07:33:32 +00:00
Pavel Labath
eafede2afe [dotest] Add @skipIfCursesSupportMissing and annotate the new gui test
Summary:
The gui command requires curses support, which can be disabled at
compile time. This patch adds the ability to detect this situation in
the test suite and skip the test accordingly.

Reviewers: teemperor, jankratochvil

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D67073

llvm-svn: 370658
2019-09-02 13:33:12 +00:00
Raphael Isemann
9bc338b89e [lldb][NFC] Add test for invalid gui command
llvm-svn: 370647
2019-09-02 12:10:16 +00:00