Commit Graph

1181 Commits

Author SHA1 Message Date
Adrian Prantl eac1c02d2a Move getBuildArtifact() from TestBase to Base and derive MiTestCaseBase from it
Thanks to Pavel Labath for pointing this out!

llvm-svn: 323219
2018-01-23 16:43:01 +00:00
Lang Hames 48b32f4ced [lldb] Fix some C++ virtual method call bugs in LLDB expression evaluation by
building method override tables for CXXMethodDecls in 
DWARFASTParserClang::CompleteTypeFromDWARF.

C++ virtual method calls in LLDB expressions may fail if the override table for
the method being called is not correct as IRGen will produce references to the
wrong (or a missing) vtable entry.

This patch does not fix calls to virtual methods with covariant return types as
it mistakenly treats these as overloads, rather than overrides. This will be
addressed in a future patch.

Review: https://reviews.llvm.org/D41997

Partially fixes <rdar://problem/14205774>

llvm-svn: 323163
2018-01-22 23:53:56 +00:00
Pavel Labath 717937d586 Fix TestTargetSymbolsAddCommand [getBuildArtifact refactor]
llvm-svn: 323086
2018-01-22 09:55:30 +00:00
Adrian Prantl 595048f3ec Wrap all references to build artifacts in the LLDB testsuite (NFC)
in TestBase::getBuildArtifact(). This NFC commit is in preparation for
https://reviews.llvm.org/D42281 (compile the LLDB tests out-of-tree).

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

llvm-svn: 323007
2018-01-19 23:24:35 +00:00
Vedant Kumar 75d7ee6af5 A third attempt to mark TestRdar12408181.py as skipped
Due to an unfortunate difference between the open source test harness
and our internal harness, applying two @skip... decorators to this test
works in the internal build but not in the open source build.

I've tried another approach to skipping this test and tested it out with
the open source harness. Hopefully this sticks!

rdar://36417163

llvm-svn: 322756
2018-01-17 20:54:39 +00:00
Vedant Kumar d122baec22 Try again to mark TestRdar12408181.py as skipped
rdar://36417163

llvm-svn: 322740
2018-01-17 19:25:12 +00:00
Vedant Kumar cc9fd4b661 Skip a flaky test (TestRdar12408181.py)
This test frequently times out on our bots. While we're investigating
the issue, mark the test as skipped so the builds aren't impacted as
much.

rdar://36417163

llvm-svn: 322728
2018-01-17 18:53:42 +00:00
Jim Ingham 5ec7cd7227 Fix Breakpoint::RemoveInvalidLocations to fix the exec testcase.
RemoveInvalidLocations was clearing out the m_locations in the
breakpoint by hand, and it wasn't also clearing the locations from
the address->location map, which confused us when we went to update
breakpoint locations.  

I also made Breakpoint::ModulesChanged check the Location's Section
to make sure it hadn't been deleted.  This shouldn't strictly be necessary,
but if the DynamicLoaderPlugin doesn't do it's job right (I'm looking at
you new Darwin DynamicLoader...) then it can end up leaving stale locations
on rerun.  It doesn't hurt to clean them up here as a backstop.

<rdar://problem/36134350>

llvm-svn: 322348
2018-01-12 03:03:23 +00:00
Jim Ingham 8157e8ee8c Fix the Makefile - this version should work on the bot
llvm-svn: 322341
2018-01-12 01:30:33 +00:00
Vedant Kumar 3ffbbeabbc Skip TestFunctionTemplateParameterPack.py, which unexpectedly asserts (PR35920)
This test stresses expression evaluation support for template functions.
Currently the support is rudimentary, and running this test causes assertion
failures in clang. This test cannot be XFAIL'ed because the test harness
treats assertion failures as unexpected events. For now, the test must be
skipped.

llvm-svn: 322340
2018-01-12 01:23:52 +00:00
Jim Ingham e38b018df4 Print the SBDebugger.CreateTarget error message.
This is failing on the bot but not locally.  Maybe
the error message will tell us why.

llvm-svn: 322338
2018-01-12 01:12:45 +00:00
Jim Ingham f4b0884718 Fix the same thinko in another place...
Thanks Jason.

llvm-svn: 322329
2018-01-11 23:52:50 +00:00
Jim Ingham 7581337382 Fix a tiny thinko in this test and re-add.
target.IsValid() not target...

llvm-svn: 322328
2018-01-11 23:31:29 +00:00
Davide Italiano 4bec480f71 [testsuite] Remove a broken test which tried to find App in bundles.
That never really worked, and the change associated isn't yet
committed, so, let's try to make the bots green for now.

llvm-svn: 322322
2018-01-11 22:38:57 +00:00
Pavel Labath b6ac2d9694 Make the bundle folders in the find-app-in-bundle test non-empty
git will not create empty folders, which makes this test fail if the repo is
checked out with git.

llvm-svn: 322271
2018-01-11 12:21:58 +00:00
Eugene Zemtsov b7386d9943 Advanced guessing of rendezvous breakpoint (resubmit)
When rendezvous structure is not initialized we need to set up
rendezvous breakpoint anyway. In this case the code will locate
dynamic loader (interpreter) and look for known function names.

This is r322209, but with fixed VDSO loading fixed.

Bug: https://bugs.llvm.org/show_bug.cgi?id=25806
Differential Revision: https://reviews.llvm.org/D41533

llvm-svn: 322251
2018-01-11 03:46:35 +00:00
Jim Ingham e8db13da0a Running this on other systems won't work because I don't
know how to specifically build a MachO binary on other systems.

llvm-svn: 322239
2018-01-10 23:32:43 +00:00
Jim Ingham 1f74a24ac0 Runs the part of the test that just finds the binary on all systems.
That should work everywhere. Then only try actually running on macosx.

llvm-svn: 322235
2018-01-10 23:06:34 +00:00
Jim Ingham d657eb6551 Add a test for finding a binary in an app package.
llvm-svn: 322232
2018-01-10 22:52:42 +00:00
Eugene Zemtsov 5c84e4b001 Revert "Advanced guessing of rendezvous breakpoint"
This reverts commit r322209, because it broke
TestNoreturnUnwind,TestInferiorAssert and TestNumThreads on i386.

llvm-svn: 322229
2018-01-10 22:25:33 +00:00
Eugene Zemtsov 4c3ea8029e Advanced guessing of rendezvous breakpoint
When rendezvous structure is not initialized we need to set up
rendezvous breakpoint anyway. In this case the code will locate
dynamic loader (interpreter) and look for known function names.

Bug: https://bugs.llvm.org/show_bug.cgi?id=25806
Differential Revision: https://reviews.llvm.org/D41533

llvm-svn: 322209
2018-01-10 19:04:36 +00:00
Pavel Labath 62930e57eb Add Utility/Environment class for handling... environments
Summary:
There was some confusion in the code about how to represent process
environment. Most of the code (ab)used the Args class for this purpose,
but some of it used a more basic StringList class instead. In either
case, the fact that the underlying abstraction did not provide primitive
operations for the typical environment operations meant that even a
simple operation like checking for an environment variable value was
several lines of code.

This patch adds a separate Environment class, which is essentialy a
llvm::StringMap<std::string> in disguise. To standard StringMap
functionality, it adds a couple of new functions, which are specific to
the environment use case:
- (most important) envp conversion for passing into execve() and likes.
  Instead of trying to maintain a constantly up-to-date envp view, it
  provides a function which creates a envp view on demand, with the
  expectation that this will be called as the very last thing before
  handing the value to the system function.
- insert(StringRef KeyEqValue) - splits KeyEqValue into (key, value)
  pair and inserts it into the environment map.
- compose(value_type KeyValue) - takes a map entry and converts in back
  into "KEY=VALUE" representation.

With this interface most of the environment-manipulating code becomes
one-liners. The only tricky part was maintaining compatibility in
SBLaunchInfo, which expects that the environment entries are accessible
by index and that the returned const char* is backed by the launch info
object (random access into maps is hard and the map stores the entry in
a deconstructed form, so we cannot just return a .c_str() value). To
solve this, I have the SBLaunchInfo convert the environment into the
"envp" form, and use it to answer the environment queries. Extra code is
added to make sure the envp version is always in sync.

(This also improves the layering situation as Args was in the Interpreter module
whereas Environment is in Utility.)

Reviewers: zturner, davide, jingham, clayborg

Subscribers: emaste, lldb-commits, mgorny

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

llvm-svn: 322174
2018-01-10 11:57:31 +00:00
Pavel Labath 698d63a61a [dotest] Remove crashinfo hook
Summary:
This used to be important when all tests were run in a single process,
but that has no longer been the case for a while. Furthermore, this hook fails
to build on new mac versions for several people, and it's not clear
whether fixing it is worth the effort.

Reviewers: jingham, clayborg, davide

Subscribers: lldb-commits

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

llvm-svn: 322167
2018-01-10 10:18:47 +00:00
Pavel Labath 03ed2249a6 TestConflictingSymbols: simplify test by using run_break_set_by_source_regexp
follow-up to r321271 based on post-commit feedback by Jim Ingham.

llvm-svn: 322075
2018-01-09 13:22:22 +00:00
Jim Ingham 9c7ba8e047 Cut and paste error - I wasn't actually running both tests...
llvm-svn: 322054
2018-01-09 03:03:20 +00:00
Adrian Prantl dce4a9aa59 Look for external types in all clang modules imported by the current symbol file.
This fixes a bug in -gmodules DWARF handling when debugging without a .dSYM bundle
that was particularly noticable when debugging LLVM itself.

Debugging without clang modules and DWO handling should be unaffected by this patch.

<rdar://problem/32436209>

llvm-svn: 321802
2018-01-04 16:42:05 +00:00
Pavel Labath b8318155eb Enable TestReadMemCString on non-darwin targets
The test works fine on linux, and I believe other targets should not
have an issue with as well. If they do, we can start blacklisting
instead of whitelisting.

The idea of using "-1" as the value of the pointer on non-apple targets
backfired, as it fails the "address != LLDB_INVALID_ADDRESS" test (-1 is
the value of LLDB_INVALID_ADDRESS).  However, it should be safe to use
0x100 for other targets as well. The first page of memory is generally
kept unreadable to catch null pointer dereferences.

llvm-svn: 321353
2017-12-22 10:26:59 +00:00
Jason Molenda 16b386de15 Change SBProcess::ReadCStringFromMemory() back to returning
an empty Python string object when it reads a 0-length 
string out of memory (and a successful SBError object).

<rdar://problem/26186692> 

llvm-svn: 321338
2017-12-22 03:27:02 +00:00
Pavel Labath 71ff9fa65f Make one more test redhat-compatible
This test was also using "a" in an expression.

llvm-svn: 321277
2017-12-21 15:52:59 +00:00
Pavel Labath 3db29a1b3e Work around test failures on red-hat linux
Two tests were failing because the debugger was picking up multiply
defined internal symbols from the system libraries. This is a bug, as
there should be no ambiguity because the tests are defining variables
with should shadow these symbols, but lldb is not smart enough to figure
that out.

I work around the issue by renaming the variables in these tests, and in
exchange I create a self-contained test which reproduces the issue
without depending on the system libraries.

This increases the predictability of our test suite.

llvm-svn: 321271
2017-12-21 14:40:03 +00:00
Adrian Prantl 3519a27635 Temporarily XFAIL test/functionalities/exec while investiagting bot breakage.
When building with cmake on green gragon or on ci.swift.org, this test fails.

rdar://problem/36134350

llvm-svn: 321095
2017-12-19 18:21:28 +00:00
Davide Italiano 5cc82f24ff [testsuite] Un-XFAIL the global variables tests.
<rdar://problem/28725399>

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

llvm-svn: 320952
2017-12-17 18:58:27 +00:00
Davide Italiano 8539edb0f3 [MacOSX/Queues] Relax an overly aggressive assertion in a test.
"Default" is a valid QoS for a thread on older versions of macOS,
like the one installed in the bot.
Thanks to Jason Molenda for helping me figuring out the problem.

<rdar://problem/28346273>

llvm-svn: 320883
2017-12-15 22:22:51 +00:00
Davide Italiano 074f858da7 [TestModulesInlineFunctions] This test now passes.
Remove yet another spurious unexpected success.
Ack'ed by Jim Ingham.

Fixes PR25743.

llvm-svn: 320454
2017-12-12 02:52:01 +00:00
Davide Italiano 4b13d8bdf3 [TestCppScope] This test now passes on Darwin.
I tested on x86-64 and Jason on embedded architectures.
This cleans up another couple of reported unexpected successes.

<rdar://problem/28623427>

llvm-svn: 320452
2017-12-12 02:32:49 +00:00
Davide Italiano e8d85eaaa7 [testsuite] Remove even more testing vestiges.
With this one, the number of unexpected successes for the LLDB
test suite when building with clang ToT goes down to 18.

llvm-svn: 320450
2017-12-12 02:10:23 +00:00
Davide Italiano ee710e1d00 Rollback [Testsuite] Rename this file from *m -> *mm.
After discussing this with Jim and Jason, I think my commit was
actually sweeping the issue under the carpet rather than fixing it.
I'll take a closer look between tonight and tomorrow.

llvm-svn: 320447
2017-12-12 01:21:43 +00:00
Davide Italiano 53cff5161c [testsuite] Remove testing failures vestiges.
Some tests are failing on macOS when building with the in-tree
clang, and this is because they're conditional on the version released.
Apple releases using a different versioning number, but as these are
conditional on clang < 7, they fail for clang ToT (which is 6.0).
As a general solution, we actually need either a mapping between
Apple internal release version and public ones.

That said, I discussed this with Fred , and Apple Clang 6.0 seems
to be old enough that we can remove this altogether (which means I
can delay implementing the general purpose solution for a bit).

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

llvm-svn: 320444
2017-12-12 01:14:11 +00:00
Davide Italiano ecff6ac373 [test-suite] Un'XFAIL a test that's not failing anymore.
This is the first of a series of commits aiming to improve
overall LLDB's hygiene. Feel free to shout at me in case
I break something.

<rdar://problem/30915340>

llvm-svn: 320425
2017-12-11 21:52:02 +00:00
Davide Italiano 9b8649c88d [Testsuite] Rename this file from *m -> *mm.
Should hopefully bring the bots back.

<rdar://problem/35976115>

llvm-svn: 320422
2017-12-11 21:21:53 +00:00
Pavel Labath e0b61e3c9a dotest.py: Correctly annotate lldbinline tests with debug info categories
This enables one to run all dwo tests with dotest.py --category dwo, or
skip them with --skip-category.

llvm-svn: 320377
2017-12-11 15:28:21 +00:00
Jim Ingham 6c96486962 These tests don't depend on debug info format.
Mark them as such.

llvm-svn: 320077
2017-12-07 19:44:09 +00:00
Jim Ingham ba205c1b76 Add target.process.stop-on-exec setting, and obey it.
Also add a test.  There should also be control for this
in ProcessLaunchInfo and a "target launch" flag, but at least
this will allow you to control it somehow.

<rdar://problem/35842137>

llvm-svn: 319731
2017-12-05 02:50:45 +00:00
Pavel Labath fd9a526a30 Makefile.rules: compile all tests with -fno-limit-debug-info
Summary:
This flag is on by default for darwin and freebsd, but off for linux.
Without it, clang will sometimes not emit debug info for types like
std::string. Whether it does this, and which tests will fail because of
that depends on the linux distro and c++ library version.

A bunch of tests were already setting these flags manually, but here
instead I take a whole sale approach and enable this flag for all tests.
Any test which does not want to have this flag (right now we have one
such test) can turn it off explicitly via
CFLAGS_EXTRAS+=$(LIMIT_DEBUG_INFO_FLAGS)

This fixes a bunch of data formatter tests on red-hat.

Reviewers: davide, jankratochvil

Subscribers: emaste, aprantl, krytarowski, JDevlieghere, lldb-commits

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

llvm-svn: 319653
2017-12-04 13:31:56 +00:00
Jim Ingham 0b7c822f84 Fix this test so that the breakpoints you set are
unambiguously on one bit of code.  On macOS these
lines mapped to two distinct locations, and that
was artificially throwing off the test.

llvm-svn: 319472
2017-11-30 20:43:00 +00:00
Pavel Labath 6b75fab1fb Add a test case for open bug 35480
The test is about failing to hit breakpoints in global constructors in
shared libraries.

llvm-svn: 319443
2017-11-30 15:39:57 +00:00
Pavel Labath d2cfe0e597 Fix floating point register write on new x86 linux kernels
Summary:
New linux kernels (on systems that support the XSAVES instruction) will
not update the inferior registers unless the corresponding flag in the
XSAVE header is set. Normally this flag will be set in our image of the
XSAVE area (since we obtained it from the kernel), but if the inferior
has never used the corresponding register set, the respective flag can
be clear.

This fixes the issue by making sure we explicitly set the flags
corresponding to the registers we modify. I don't try to precisely match
the flags to set on each write, as the rules could get quite complicated
-- I use a simpler over-approximation instead.

This was already caught by test_fp_register_write, but that was only
because the code that ran before main() did not use some of the register
sets. Since nothing in this test relies on being stopped in main(), I
modify the test to stop at the entry point instead, so we can be sure
the inferior did not have a chance to access these registers.

Reviewers: clayborg, valentinagiusti

Subscribers: lldb-commits

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

llvm-svn: 319161
2017-11-28 10:56:54 +00:00
Pavel Labath daa3c97e5a dotest: Mark more android targets as chatty
New android ndk linker started adding more flags to the produced
binaries, which causes older dynamic linkers display warnings to stderr
about unsupported flags. This interferes with our stderr tests.

Extend the hasChattyStderr function to catch these targets as well.

llvm-svn: 319028
2017-11-27 13:47:14 +00:00
Pavel Labath fd2c8d6572 Implement core dump debugging for PPC64le
Summary: Implement core dump debugging for PPC64le.

Reviewers: labath

Reviewed By: labath

Subscribers: JDevlieghere, krytarowski, clayborg, labath, lbianc, nemanjai, gut, anajuliapc, mgorny, kbarton, lldb-commits

Differential Revision: https://reviews.llvm.org/D39681
Patch by Alexandre Yukio Yamashita <alexandre.yamashita@eldorado.org.br>

llvm-svn: 318399
2017-11-16 13:38:57 +00:00
Pavel Labath 5269875ef9 Add a data formatter for libc++ std::bitset
Reviewers: jingham, EricWF

Subscribers: mgorny, lldb-commits

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

llvm-svn: 318145
2017-11-14 11:15:03 +00:00