Commit Graph

19034 Commits

Author SHA1 Message Date
Jason Molenda 14c1e08ff5 Add logging to SBCompileUnit::GetNumLineEntries.
llvm-svn: 355435
2019-03-05 19:43:56 +00:00
Shafik Yaghmour bb322e79c1 [DataFormatters] Fix regression in libc++ std::atomic formatter caused by https://reviews.llvm.org/D56913
rdar://problem/48568543

llvm-svn: 355422
2019-03-05 18:34:35 +00:00
Davide Italiano 70b082e85c Revert "[lldbtest] Check against the correct name for libcxxabi (macOS)."
This passes locally but breaks on the bots. Maybe an SDK difference.
Reverting while I investigate.

llvm-svn: 355415
2019-03-05 17:21:55 +00:00
Yury Delendik 05812b65db [lldb] Disable some of TestJITLoaderGDB.py tests on Windows
The test expect sample executable code be built, but fails on Windows.

Review comment https://reviews.llvm.org/D57689#1418597

Tags: #lldb

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

llvm-svn: 355413
2019-03-05 17:09:26 +00:00
Tatyana Krasnukha 622862987f Revert "Fix embedded Python initialization according to changes in version 3.7"
Testsuite hangs on Windows likely due to these changes.

llvm-svn: 355406
2019-03-05 15:27:33 +00:00
Yury Delendik bc6b225d42 Adds property to force enabling of GDB JIT loader for MacOS
Summary:
Based on https://gist.github.com/thlorenz/30bf0a3f67b1d97b2945#patching-and-rebuilding

The functionality was disabled at 521c2278ab

Reviewers: jingham

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 355402
2019-03-05 14:23:53 +00:00
Pavel Labath a55999301e One more UserIDResolver fix
The intention in r355323 has been to implement a no-op resolver in the
HostInfoBase class, which will then be shadowed a an implementation in
the HostInfoPosix class. However, I add the shadowing declaration in
HostInfoPosix.h, and instead had implemented the HostInfoBase function
in HostInfoPosix.cpp. This has lead to undefined symbols on windows, and
a subsequent implementation of a no-op resolver in HostInfoWindows
(r355329).

Since now there is no point on having a no-op resolver in the base
class, I just remove the base declaration altogether, and have
HostInfoPosix implement the (newly-declared) HostInfoPosix version of
that function.

llvm-svn: 355398
2019-03-05 12:51:20 +00:00
Alexander Kornienko 7523f743b4 [lldb] Fix linux host build after r355342
llvm-svn: 355392
2019-03-05 12:05:35 +00:00
Tatyana Krasnukha b30c1d571b Fix embedded Python initialization according to changes in version 3.7
Differential Revision: https://reviews.llvm.org/D58833

llvm-svn: 355388
2019-03-05 11:18:45 +00:00
Alex Langford 81dbc02671 [Expression] Remove unused parameter from Evaluate
llvm-svn: 355375
2019-03-05 03:33:34 +00:00
Davide Italiano 814ad73452 Revert "[testsuite] Port crashlog and dependencies to Python 3."
This revert the commit because it broke the bots. I need to find
a way that works with both versions.

llvm-svn: 355364
2019-03-05 01:34:47 +00:00
Davide Italiano fc188448fa [testsuite] Port crashlog and dependencies to Python 3.
Fixes three tests in the testsuite.

llvm-svn: 355359
2019-03-05 00:53:38 +00:00
Jim Ingham 3fc1a73a79 Fix the Xcode project for UserIDResolver.
llvm-svn: 355358
2019-03-05 00:52:12 +00:00
Davide Italiano 8800d30360 [lldbtest] Check against the correct name for libcxxabi (macOS).
llvm-svn: 355356
2019-03-05 00:47:15 +00:00
Davide Italiano e94add2f64 [Host] Fix the build (and the modules build).
-> Add a missing include to find the base class.
-> Add a missing out-of-line declaration for a member function.

llvm-svn: 355353
2019-03-05 00:37:40 +00:00
Shafik Yaghmour 6ed191093d Revert "[DataFormatters] Fix regression in libc++ std::atomic formatter caused by https://reviews.llvm.org/D56913"
This reverts commit r355351.

llvm-svn: 355352
2019-03-05 00:29:58 +00:00
Shafik Yaghmour d38e41ec60 [DataFormatters] Fix regression in libc++ std::atomic formatter caused by https://reviews.llvm.org/D56913
rdar://problem/48568543

llvm-svn: 355351
2019-03-05 00:17:18 +00:00
Zachary Turner 805e71060e Move ProcessInfo from Host to Utility.
There are set of classes in Target that describe the parameters of a
process - e.g. it's PID, name, user id, and similar. However, since it
is a bare description of a process and contains no actual functionality,
there's nothing specifically that makes this appropriate for being in
Target -- it could just as well be describing a process on the host, or
some hypothetical virtual process that doesn't even exist.

To cement this, I'm moving these classes to Utility. It's possible that
we can find a better place for it in the future, but as it is neither
Host specific nor Target specific, Utility seems like the most appropriate
place for the time being.

After this there is only 2 remaining references to Target from Host,
which I'll address in a followup.

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

llvm-svn: 355342
2019-03-04 21:51:03 +00:00
Alex Langford 0ca4f84f2f [build.py] Allow clang-cl to build files starting with '/U'
Summary:
clang-cl tries to match cl's interface, and treats /U as "Removes a
predefined macro" as cl does. When you feed clang-cl a file that begins with
'/U' (e.g. /Users/xiaobai/foo.c), clang-cl will emit a warning and in some cases
an error, like so:

clang-9: warning: '/Users/xiaobai/foo.c' treated as the '/U' option [-Wslash-u-filename]
clang-9: note: Use '--' to treat subsequent arguments as filenames
clang-9: error: no input files

If you're using clang-cl, make sure '--' is passed before the source file.

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

llvm-svn: 355341
2019-03-04 21:36:49 +00:00
Shoaib Meenai 5be71faf4b [build] Rename clang-headers to clang-resource-headers
Summary:
The current install-clang-headers target installs clang's resource
directory headers. This is different from the install-llvm-headers
target, which installs LLVM's API headers. We want to introduce the
corresponding target to clang, and the natural name for that new target
would be install-clang-headers. Rename the existing target to
install-clang-resource-headers to free up the install-clang-headers name
for the new target, following the discussion on cfe-dev [1].

I didn't find any bots on zorg referencing install-clang-headers. I'll
send out another PSA to cfe-dev to accompany this rename.

[1] http://lists.llvm.org/pipermail/cfe-dev/2019-February/061365.html

Reviewers: beanz, phosek, tstellar, rnk, dim, serge-sans-paille

Subscribers: mgorny, javed.absar, jdoerfert, #sanitizers, openmp-commits, lldb-commits, cfe-commits, llvm-commits

Tags: #clang, #sanitizers, #lldb, #openmp, #llvm

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

llvm-svn: 355340
2019-03-04 21:19:53 +00:00
Zachary Turner bb4d4e2d76 Fix Windows build after UserIDResolver patch.
That patch added a function to HostInfo that returns an instance
of UserIDResolver, but this function was unimplemented on Windows,
leading to linker errors.  For now, just return a dummy implementation
that doesn't resolve user ids to get the build green.

llvm-svn: 355329
2019-03-04 19:57:04 +00:00
Pavel Labath aa51e6a683 Refactor user/group name resolving code
Summary:
This creates an abstract base class called "UserIDResolver", which can
be implemented to provide user/group ID resolution capabilities for
various objects. Posix host implement a PosixUserIDResolver, which does
that using posix apis (getpwuid and friends).  PlatformGDBRemote
forwards queries over the gdb-remote link, etc. ProcessInstanceInfo
class is refactored to make use of this interface instead of taking a
platform pointer as an argument. The base resolver class already
implements caching and thread-safety, so implementations don't have to
worry about that.

The main motivating factor for this was to remove external dependencies
from the ProcessInstanceInfo class (so it can be put next to
ProcessLaunchInfo and friends), but it has other benefits too:
- ability to test the user name caching code
- ability to test ProcessInstanceInfo dumping code
- consistent interface for user/group resolution between Platform and
  Host classes.

Reviewers: zturner, clayborg, jingham

Subscribers: mgorny, lldb-commits

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

llvm-svn: 355323
2019-03-04 18:48:00 +00:00
Michal Gorny de11105d2e [lldb] [test] Mark failing tests XFAIL on NetBSD
Add a convenience 'expectedFailureNetBSD' decorator and mark all tests
currently failing on NetBSD with it.  Also skip a few tests that hang
the test suite.  This should establish a baseline for the test suite
and get us closer to enabling tests on buildbot.  This will help us
catch regressions while we still have a lot of work to do to get tests
working.

It seems that there are also some flaky tests.  I am going to address
them later on.

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

llvm-svn: 355320
2019-03-04 16:54:06 +00:00
Michal Gorny e39ec43be7 [lldb] [Process/gdb-remote] Use '127.0.0.1' in ConnectLocally()
Use '127.0.0.1' instead of 'localhost' in ConnectLocally() function
as this is the specific address the server is bound to.  Using
'localhost' may involve trying IPv6 first which may accidentally be used
by another service.

While technically it might be interesting to support IPv6 here, it would
need to be supported properly, with the connection copying family
and address from the listening socket, and possibly without relying
on existence of 'localhost' at all.

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

llvm-svn: 355285
2019-03-03 12:42:43 +00:00
Pavel Labath e52b84ef8e Reinstate UNSUPPORTED: linux on stop-hook-threads.test
This stanza was removed in r355213, but it seems that patch did not
fully fix the problem, as the test still fails sporadically
(particularly under heavy load) on linux.

llvm-svn: 355276
2019-03-02 19:58:10 +00:00
Michal Gorny c10a884873 [lldb] [lit] Pass -pthread on NetBSD as well
llvm-svn: 355274
2019-03-02 16:48:44 +00:00
Michal Gorny 8085c1b3c1 [lldb] [lldbtest] Fix getBuildFlags() not to use libstdc++ on NetBSD
Remove the code forcing -stdlib=libstdc++ on NetBSD in getBuildFlags()
method.  NetBSD uses libc++ everywhere else, and using libstdc++ here
causes lang/cpp/dynamic-value to fail to build.

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

llvm-svn: 355273
2019-03-02 16:46:29 +00:00
Pavel Labath 113c4c108d Fix gcc build for r355249
automatic move should not fire when returning type T in a function with
result type Expected<T>. Some compilers seem to allow that nonetheless.

llvm-svn: 355270
2019-03-02 16:23:07 +00:00
Jonas Devlieghere d77c2e0926 [Reproducers] Capture and replay interpreter commands.
This patch adds the necessary logic to capture and replay commands
entered into the command interpreter. A DataRecorder shadows the input
and writes its data to a know file. During replay this file is used as
the command interpreter's input.

It's possible to the command interpreter more than once, with a
different input source. We support this scenario by using multiple
buffers. The synchronization for this takes place at the SB layer, where
we create a new recorder every time the debugger input is changed.
During replay we use the corresponding buffer as input.

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

llvm-svn: 355249
2019-03-02 00:20:26 +00:00
Adrian Prantl 25f718e9f8 Delete commented-out code.
llvm-svn: 355238
2019-03-01 22:30:31 +00:00
Jim Ingham 3139fc9767 Resubmit r354706 with a fix for process launch.
When the debugger is run in sync mode, you need to
be able to tell whether a hijacked resume is for some
special purpose (like waiting for the SIGSTOP on attach)
or just to perform a synchronous resume.  Target::Launch was doing
that wrong, and that caused stop-hooks on process launch
in source files to behave incorrectly.

<rdar://problem/48115661>

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

llvm-svn: 355213
2019-03-01 18:13:38 +00:00
Jason Molenda 7cdaf1e06b Update com.apple.diagnosticd.diagnostic entitlement
name to the newer com.apple.private.logging.diagnostic.

<rdar://problem/47183116> 

llvm-svn: 355170
2019-03-01 03:34:51 +00:00
Jason Molenda e772052edf Increase timeout in Symbols::DownloadObjectAndSymbolFile
from 30 seconds to 120 seconds.  We've seen cases where
this symbol lookup can exceed 30 seconds for people
working remotely.

<rdar://problem/48460476> 

llvm-svn: 355169
2019-03-01 03:24:59 +00:00
Jason Molenda f8fad6ca5b Symbols.cpp in unittest moved too.
llvm-svn: 355155
2019-02-28 23:37:28 +00:00
Alex Langford 55056424d8 [CMake] Make liblldb depend on clang-headers
Summary:
The clang headers are useful when dealing with clang modules. There is also a
way to get to the clang headers from the SB API so it would be nice if they were
also available when we just build lldb.

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

llvm-svn: 355149
2019-02-28 22:24:18 +00:00
Adrian McCarthy 34f2bee0fb Improve process launch comments for Windows
The existing comment about over-allocating the command line was incorrect.  The
contents of the command line may be changed, but it's not necessary to over
allocate.  The changes will be limited to the existing contents of the string
(e.g., by replacing spaces with L'\0' to tokenize the command line).

Also added a comment explaining a possible cause of failure to save the next
programmer some time when they try to debug a 64-bit process from a 32-bit
LLDB.

llvm-svn: 355121
2019-02-28 19:14:02 +00:00
Pavel Labath 5d4d168c3c [cmake] Move LLDB_DISABLE_LIBEDIT handling code into a central place
This was previously scattered between the main CMakeLists.txt file and
LLDBGenerateConfig.cmake and LLDBConfig.cmake. This caused the some of
the code to be executed in incorrect order. Specifically, the check for
el_winsertstr was done before libedit_LIBRARIES was computed, and so it
always failed on the first run.

Moving it the two checks to a central place makes sure this doesn't
happen again and improves the overall readability.

llvm-svn: 355103
2019-02-28 16:04:54 +00:00
Jason Molenda 321f80e23f Move Symbols.cpp files.
llvm-svn: 355063
2019-02-28 01:26:01 +00:00
Jonas Devlieghere 95bb3c3cc3 [Reprodicuers] Check initialization
If the reproducer is not initialzied, the call to ::Instance() will
result in an assertion.

llvm-svn: 355055
2019-02-28 00:49:57 +00:00
Adrian Prantl 7feefe8664 Remove unnecessary demangling operation (NFC)
This extra call to the demangler doesn't affect the performance of C++
because the result is being cached anyway; but I'm working on a patch
to the Swift branch that uses extra contextual information to provide
a more accurate demangling result. In that case this call would be
extra and unnecessary work.

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

llvm-svn: 355042
2019-02-27 22:54:47 +00:00
Zachary Turner 2d525d472c Remove dependency from Host -> Core.
I wasn't actually trying to eliminate this one, but looks like
it happened as a side effect of moving Symbols out of Host.

llvm-svn: 355037
2019-02-27 21:53:08 +00:00
Zachary Turner 80552918a9 Move Host/Symbols.cpp to Symbols/LocateSymbolFile.cpp
Given that we have a target named Symbols, one wonders why a
file named Symbols.cpp is not in this target.  To be clear,
the functions exposed from this file are really focused on
*locating* a symbol file on a given host, which is where the
ambiguity comes in.  However, it makes more sense conceptually
to be in the Symbols target. While some of the specific places
to search for symbol files might change depending on the Host,
this is not inherently true in the same way that, for example,
"accessing the file system" or "starting threads" is
fundamentally dependent on the Host.

PDBs, for example, recently became a reality on non-Windows platforms,
and it's theoretically possible that DSYMs could become a thing on non
MacOSX platforms (maybe in a remote debugging scenario). Other types of
symbol files, such as DWO, DWP, etc have never been tied to any Host
platform anyway.

After this patch, there is only one remaining dependency from
Host to Target.

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

llvm-svn: 355032
2019-02-27 21:42:10 +00:00
Jim Ingham b12ac2b689 Pass arguments correctly to the objc object checker on arm64
Traditionally objc had two entry points, objc_msgSend for scalar
return methods, and objc_msgSend_stret for struct return convention
methods.  But on arm64 the second was not needed (since arm64 doesn't
use an argument register for the struct return pointer) so it was removed.

The code that dispatches to the objc object checker when it sees some
flavor of objc_msgSend was not aware of this change so was sending the
wrong arguments to the checker.

<rdar://problem/48315890>

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

llvm-svn: 355026
2019-02-27 20:27:25 +00:00
Jonas Devlieghere 2dca65388c [Reproducer] Make 'reproducer generate' a NOOP during replay.
Instead of filtering out the 'reproducer generate' command during
replay, just make the operation a NOOP.

llvm-svn: 355009
2019-02-27 17:47:06 +00:00
Jonas Devlieghere 8c436ce3a1 [Reproducers] Add more logging to reproducer instrumentation
Debugging issues with instrumentation capture and replay can be
particularly tricky, especially because part of the process takes places
even before the debugger is initialized. This patch adds more logging
capabilities to these classes, hidden behind a macro define.

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

llvm-svn: 355002
2019-02-27 16:40:08 +00:00
Pavel Labath d73a67a799 Remove XFAIL-Linux from two asan tests
It turns out these tests actually succeed, if one has a clang with
address sanitizer support enabled (i.e., has enabled the compiler-rt
project). I guess none of the linux lldb devs have done that until now.

llvm-svn: 354976
2019-02-27 14:26:48 +00:00
Pavel Labath 11bc3f49da Insert blocks of python code with swig instead of modify-python-lldb.py
Summary:
Swig is perfectly capable of inserting blocks of python code into its
output (and we use those fascilities already), so there's no need for
this to be done in a post-process step.

lldb_iter is a general-purpose utility used from many classes, so I add
it to the main swig file. The other two blocks are tied to a specific
class, so I add it to the interface file of that class.

Reviewers: zturner, jingham, serge-sans-paille

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 354975
2019-02-27 14:16:48 +00:00
Alex Langford 6d6288ae97 [Utility] Fix ArchSpec.MergeFrom to correctly merge environments
Summary:
This behavior was originally added in rL252264 (git commit 76a7f365da)
in order to be extra careful with handling platforms like watchos and tvos.
However, as far as triples go, those two (and others) are treated as OSes and
not environments, so that should not really apply here.

Additionally, this behavior is incorrect and can lead to incorrect ArchSpecs.
Because android is specified as an environment and not an OS, not propogating
the environment can lead to modules and targets being misidentified.

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

llvm-svn: 354938
2019-02-27 00:47:39 +00:00
Alex Langford bee015efb5 [Utility] Remove Triple{Environment,OS,Vendor}IsUnspecifiedUnknown from ArchSpec
Summary:
These functions should always return the opposite of the
`Triple{Environment,OS,Vendor}WasSpecified` functions. Unspecified unknown is
the same as unspecified, which is why one set of functions should give us what
we want. It's possible to have specified unknown, which is why we can't just
rely on checking the enum values of vendor/os/environment. We must also ensure
that the names of these are empty and not "unknown".

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

llvm-svn: 354933
2019-02-26 23:50:19 +00:00
Michal Gorny 42d9cd2d35 [lldb] [unittests] Use non-empty format string for Timer()
Pass dummy '.' as format string for Timer() rather than an empty string,
in order to silence gcc warnings about empty format string
(-Wformat-zero-length).  The actual format string is irrelevant
to the test in question.

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

llvm-svn: 354922
2019-02-26 20:14:07 +00:00
Michal Gorny 6d6afb72b3 [lldb] [lit] Set LD_LIBRARY_PATH or alike for Suite tests
Set LD_LIBRARY_PATH or local platform's equivalent of it when running
the 'Suite' tests.  This is necessary when running tests inside build
tree with BUILD_SHARED_LIBS enabled, in order to make the LLDB modules
load freshly built LLVM libraries.

The code is copied from clang (test/Unit/lit.cfg).  SHLIBDIR
substitution is added to site-config (already present in top-level LLDB
site-config) to future-proof this into supporting stand-alone builds
with shared LLDB libraries.

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

llvm-svn: 354920
2019-02-26 19:46:29 +00:00
Jim Ingham cbf575a5a0 Mention predicting exception catch at throw site
llvm-svn: 354914
2019-02-26 19:18:09 +00:00
Tatyana Krasnukha 9e1929305c Fix short options syntax in Minidump test
llvm-svn: 354890
2019-02-26 15:38:30 +00:00
Tatyana Krasnukha f388d17d7c Fix error handling in Options::Parse
Moved `if (error.Fail())` to correct place to catch all faulty cases such as
"unknown or ambiguous option" which was ignored before.

llvm-svn: 354883
2019-02-26 14:50:40 +00:00
Tatyana Krasnukha a20bd2735e [lldb-mi] Return source line number in proper format
Line number is a decimal number and is printed as such, however for some
reason it was prefixed with '0x', thus turning printed value invalid.

Patch by Anton Kolesov <Anton.Kolesov@synopsys.com>

llvm-svn: 354804
2019-02-25 18:32:46 +00:00
Tatyana Krasnukha 96585d11fb [lldb-mi] Fix conversion warning for 64-bit build
llvm-svn: 354803
2019-02-25 18:23:44 +00:00
Tatyana Krasnukha 2a4c1f3e5b [lldb-mi] Check raw pointers before passing them to std::string ctor/assignment
Differential Revision: https://reviews.llvm.org/D55653

llvm-svn: 354798
2019-02-25 16:40:11 +00:00
Pavel Labath ad96b0e63e Finish revert of r354706
The revert in r354711 wasn't complete. Finish the job.

llvm-svn: 354766
2019-02-25 09:30:41 +00:00
Jim Ingham 0513a24d62 Revert r354706 - lit touched my thigh
llvm-svn: 354711
2019-02-23 01:08:17 +00:00
Jim Ingham ff8c7a0947 Make sure that stop-hooks run asynchronously.
They aren't designed to nest recursively, so this will prevent that.
Also add a --auto-continue flag, putting "continue" in the stop hook makes
the stop hooks fight one another in multi-threaded programs.
Also allow more than one -o options so you can make more complex stop hooks w/o
having to go into the editor.

<rdar://problem/48115661>

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

llvm-svn: 354706
2019-02-23 00:13:25 +00:00
Jim Ingham bac29fde53 When deserializing breakpoints some options may not be present.
The deserializer was not handling this case.  For now we just
accept the absent option, and set it to the breakpoint default.
This will be more important if/when I figure out how to serialize
the options set on breakpont locations.

<rdar://problem/48322664>

llvm-svn: 354702
2019-02-22 23:54:11 +00:00
Pavel Labath ab86d3da7a Avoid two-stage initialization of MinidumpParser
remove the Initialize function, move the things that can fail into the
static factory function. The factory function now returns
Expected<Parser> instead of Optional<Parser> so that it can give a
reason why creation failed.

llvm-svn: 354668
2019-02-22 13:36:01 +00:00
Pavel Labath d7fd957395 Split up minidump register context tests
The tests were doing two somewhat independent things:
- checking that the registers can be retrieved from the minidump file
- checking that they can be converted into a form suitable for
  consumption by lldb

The first thing requires a minidump file (but it's independent of other
lldb structures), while the second one does not require a minidump file
(but it needs lldb register info structures).

Splitting this into two tests gives an opportunity to write more
detailed tests, and allows the two pieces of functionality to be moved
into different packages, if that proves to be necessary.

llvm-svn: 354662
2019-02-22 08:51:08 +00:00
Jonas Devlieghere da9059aa66 Revert "[xcodeproj] Add SBReproducer to LLDB.framework"
This was bogus.

llvm-svn: 354639
2019-02-22 00:03:59 +00:00
Jonas Devlieghere 1877e275d2 [xcodeproj] Add SBReproducer to LLDB.framework
llvm-svn: 354637
2019-02-21 23:58:36 +00:00
Jonas Devlieghere 936c62422f [Reproducers] Initialize reproducers before initializing the debugger.
As per the discussion on the mailing list:
http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20190218/048007.html

This commit implements option (3):

> Go back to initializing the reproducer before the rest of the debugger.
> The method wouldn't be instrumented and guarantee no other SB methods are
> called or SB objects are constructed. The initialization then becomes part
> of the replay.

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

llvm-svn: 354631
2019-02-21 22:26:16 +00:00
Michal Gorny 65ebfaf0be [lldb] [test] Do not link -ldl on NetBSD
Fix the load_* using test Makefiles not to link -ldl on NetBSD.
There is no such a library on NetBSD, and dlopen() is available
without a library.  Quoting the manpage:

    (These functions are not in a library.  They are included in every
    dynamically linked program automatically.)

To resolve this portably, introduce a new USE_LIBDL option.  If it set
to 1, Makefile.rules automatically appends -ldl on platforms needing it.

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

llvm-svn: 354617
2019-02-21 20:28:21 +00:00
Jonas Devlieghere e0ccb403c2 [unittest] Fix missing user-provided default constructor
error: default initialization of an object of const type 'const Pod'
without a user-provided default constructor

llvm-svn: 354602
2019-02-21 17:18:06 +00:00
Jan Kratochvil 0e98ad2645 testsuite: Fix TestCompDirSymLink and TestSourceManager on Linux with symlinked build dir
Getting failure when building in a directory which is symlinked elsewhere:

Failing Tests (1):
    lldb-Suite :: functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.py
    lldb-Suite :: source-manager/TestSourceManager.py

For TestCompDirSymLink:
------------------------------------------------------------------------------
runCmd: file .../lldb-test-build.noindex/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.test_symlink_paths_set_procselfcwd_dwarf/CompDirSymLink
output: Current executable set to '.../lldb-test-build.noindex/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.test_symlink_paths_set_procselfcwd_dwarf/CompDirSymLink' (x86_64).
runCmd: settings set plugin.symbol-file.dwarf.comp-dir-symlink-paths /proc/self/cwd
output: None
runCmd: breakpoint set -f ".../lldb-test-build.noindex/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.test_symlink_paths_set_procselfcwd_dwarf/relative.cpp" -l 11
output: Breakpoint 1: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

It is because /proc/self/cwd (used above for plugin.symbol-file.dwarf.comp-dir-symlink-paths) points to an already resolved directory:

(cd /tmp;mkdir real;ln -s real symlink;cd symlink;ls -l /proc/self/cwd)
lrwxrwxrwx 1 jkratoch jkratoch 0 Feb 20 19:55 /proc/self/cwd -> /tmp/real/
------------------------------------------------------------------------------

For TestSourceManager the resolving is done by 'make -C' as found by Pavel Labath.

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

llvm-svn: 354556
2019-02-21 09:05:27 +00:00
Davide Italiano 0e251567b3 Revert "[lldb-mi] Move TestMIPrompt away from pexpect()."
I see a test failing on the macOS bots. I can't reproduce
locally, so try to get the bots green before I can investigate.

llvm-svn: 354540
2019-02-21 01:55:31 +00:00
Alex Langford a07287ecc5 Merge target triple into module triple when constructing module from memory
Summary:
While debugging an android process remotely from a windows machine, I
noticed that the modules constructed from an object file in memory only had
information about the architecture. Without knowledge of the OS or environment,
expression evaluation sometimes leads to incorrectly generated code or a
debugger crash. While we cannot know for certain what triple a module
constructed from an in-memory object file will have, we can use the
triple from the target to try and fill in the missing details.

Reviewers: clayborg, zturner, JDevlieghere, compnerd, aprantl, labath

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 354526
2019-02-20 23:12:56 +00:00
Davide Italiano 656b6698be [lldb-mi] Move TestMIPrompt away from pexpect().
llvm-svn: 354506
2019-02-20 19:25:12 +00:00
Davide Italiano d8af34f927 [lldb-mi] Remove a test that uses pexpect().
Summary:
Its functionality is entirely covered by exec-run.test (which
doesn't use pexpect)

Reviewers: serge-sans-paille

Subscribers: ki.stfu, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 354494
2019-02-20 18:27:29 +00:00
Jonas Devlieghere 4e9b02b0da [TestModuleCXX] Make this test Darwin-only.
Apparently this functionality is not expected to work on non-Darwin
systems. I should've checked the decorator on the original test.

llvm-svn: 354487
2019-02-20 17:43:34 +00:00
Michal Gorny 880b38d0bd [lldb] [test] Fix expected netbsd output for TestImageListMultiArchitecture
llvm-svn: 354483
2019-02-20 17:10:34 +00:00
Michal Gorny 4f134fb660 [lldb] [ObjectFile/ELF] Fix recognizing NetBSD images
Split the recognition into NetBSD executables & shared libraries
and core(5) files.

Introduce new owner type: "NetBSD-CORE", as core(5) files are not tagged
in the same way as regular NetBSD executables.

Stop using incorrectly ABI_TAG and ABI_SIZE.  Introduce IDENT_TAG,
IDENT_DECSZ, IDENT_NAMESZ and PROCINFO.

The new values detect correctly the NetBSD images.

The patch has been originally written by Kamil Rytarowski.  I've added
tests and applied minor code changes per review.  The work has been
sponsored by the NetBSD Foundation.

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

llvm-svn: 354466
2019-02-20 14:31:06 +00:00
Jonas Devlieghere 78750a51d9 [TestModuleCXX] Use UNSUPPORTED instead of REQUIRES
The requires value turns out to be bogus and the test gets skipped on
macOS.

llvm-svn: 354425
2019-02-20 01:49:16 +00:00
Jonas Devlieghere 9b23e9ba8d [Instrumentation] Make API logging unconditional
We should always log API calls in addition to logging whether the call
was recorded as part of the reproducer. Since we already have the macro
we might as well put that logic there.

llvm-svn: 354424
2019-02-20 01:49:13 +00:00
Jonas Devlieghere b7c22314c3 [lldb-instr] Group RECORD macros
Group LLDB_RECORD macros per input file.

llvm-svn: 354423
2019-02-20 01:49:10 +00:00
Adrian Prantl dfe7bbc1a4 Move -fcxx-modules to MANDATORY_MODULE_BUILD_CFLAGS (NFC)
llvm-svn: 354418
2019-02-20 01:14:05 +00:00
Davide Italiano a875b9b32b [lldbtest] Remove some accidentally commented out code.
llvm-svn: 354415
2019-02-20 00:54:10 +00:00
Davide Italiano 89c77054a2 [testsuite] Fix TestUnicodeString to work with Py2 and Py3.
llvm-svn: 354414
2019-02-20 00:54:07 +00:00
Jonas Devlieghere ee04d4d840 [lldb-instr] Don't print REGISTER macro when RECORD is already present
Currently we'd always print the LLDB_REGISTER macro, even if the
LLDB_RECORD macro was already present. This patches changes that to make
it easier to incrementally update the macros.

Note that it's still possible for the RECORD and REGISTER macros to get
out of sync.

llvm-svn: 354400
2019-02-19 23:13:29 +00:00
Greg Clayton cc6ec692a4 Add Facebook Minidump directory streams and options to dump them.
Facebook creates minidump files that contain specific information about why things crash. Adding ways to dump these allows tools to be made that can auto download symbols based on the information that is contained in the minidump files.

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

llvm-svn: 354385
2019-02-19 21:48:34 +00:00
Pavel Labath 95e29763d4 Revert "minidump: Add ability to attach (breakpad) symbol files to placeholder modules"
This reverts r354263, because it uncovered a problem in handling of the
minidumps with conflicting UUIDs. If a minidump contains two files with
the same UUID, we will not create to placeholder modules for them, but
instead reuse the first one for the second instance. This creates a
problem because these modules have their load address hardcoded in them
(and I've added an assert to verify that).

Technically this is not a problem with this patch, as the same issue
existed in the previous implementation, but it did not have the assert
which would diagnose that. Nonetheless, I am reverting this until I
figure out what's the best course of action in this situation.

llvm-svn: 354324
2019-02-19 13:52:31 +00:00
Pavel Labath 499611a20f Fix vscode tests for python3
encode/decode the data before sending it over the socket. Since (AFAICT)
the vscode protocol (unlike the gdb-remote one) is fully textual, using
the utf8 codec here is appropriate.

llvm-svn: 354308
2019-02-19 08:25:25 +00:00
Pavel Labath eebf32fad6 [gui] Simplify SourceFileWindowDelegate::WindowDelegateDraw
instead of printf-ing into a buffer, and them using that buffer as a
format string, simply use the appropriate indirect format string.

This also fixes a -Wformat-truncation warning with gcc.

llvm-svn: 354307
2019-02-19 08:12:41 +00:00
Jonas Devlieghere cd2e6c75f6 [lldb-instr] Test that we ignore existing macros.
Although the functionality was already present, it wasn't tested.

llvm-svn: 354303
2019-02-19 01:20:49 +00:00
Jonas Devlieghere 091b925284 [lldb-instr] Wrap returns of struct/classes in LLDB_RECORD_RESULT
The instrumentation framework requires return values of custom classes
and structs to be wrapped in the LLDB_RECORD_RESULT macro.

llvm-svn: 354301
2019-02-19 01:04:31 +00:00
Jonas Devlieghere 292a533085 Disable TestModuleCXX.test on Windows
Importing cxx modules doesn't seem to work on Windows:

error: a.out :: Class 'tagARRAYDESC' has a member 'tdescElem' of type
  'tagTYPEDESC' which does not have a complete definition.
error: a.out :: Class 'tagPARAMDESCEX' has a member 'varDefaultValue' of type
  'tagVARIANT' which does not have a complete definition.
llvm-svn: 354300
2019-02-19 00:08:10 +00:00
Davide Italiano 05709acba4 [lldbtest] Fix some code to be compatible between py2 and py3.
llvm-svn: 354297
2019-02-18 23:18:14 +00:00
Jonas Devlieghere d1511a4bc7 [lldb-instr] Add constructor and move test into lit/tools
The test had an implicit constructor for the Foo struct. Also, as the
instrumentation doesn't have to be reproducer specific, I moved the
tests into the lit/tools directory.

llvm-svn: 354294
2019-02-18 22:59:52 +00:00
Jason Molenda 461c416878 One more fix while I'm looking at this - remove the
unused IsSBProcess method, and have IsFBSProcess
return false if we don't have API that we can use to
make that determination, so we'll try other API
if we can.

llvm-svn: 354289
2019-02-18 22:18:11 +00:00
Jason Molenda 870c0a648b Ah, misunderstood Jonas' feedback - fix this so we'll
do the right thing when both API are available.  We
want to try both of them if the first one fails.

llvm-svn: 354288
2019-02-18 22:13:34 +00:00
Jason Molenda 5044316d16 Clean up an unused variable warning when building this for
mac native.

llvm-svn: 354287
2019-02-18 22:10:23 +00:00
Davide Italiano 9144aa38ed [Python3] Fix TestObjCMethods.py to work with py2 and 3.
llvm-svn: 354286
2019-02-18 21:53:02 +00:00
Jonas Devlieghere 9764b65c82 [Reproducers] Make clang use lldb's VFS.
In r353906 we hooked up clang and lldb's reproducer infrastructure to
capture files used by clang. This patch adds the necessary logic to have
clang reuse the files from lldb's reproducer during replay.

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

llvm-svn: 354283
2019-02-18 20:31:18 +00:00
Pavel Labath 9d800a135a Un-XFAIL TestLinuxCore for windows
It turns out all that was needed to get this test passing was to fix the
python3 incompatibility.

llvm-svn: 354278
2019-02-18 16:05:26 +00:00
Pavel Labath 81b02590d8 Fix TestLinuxCore for python3
- dictionaries don't have iteritems()
- division returns floats

llvm-svn: 354273
2019-02-18 15:04:33 +00:00
Pavel Labath 515e7cdec0 minidump: Add ability to attach (breakpad) symbol files to placeholder modules
This re-commits r353677, which was reverted due to test failures on the
windows bot. The issue there was that ObjectFilePECOFF vended its base
address through the incorrect interface. SymbolFilePDB depended on that,
which lead to assertion failures when SymbolFilePDB was attempting to
use the placeholder object files as a base. This has been fixed in
r354258

It also fixes one small problem in the original patch. The issue was that the
Module class would attempt to overwrite the object file we created in
CreateModuleFromObjectFile if the file corresponding to the placeholder object
file happened to exist (but we have already disqualified it due to UUID
mismatch. The fix is simple -- we set the m_did_load_objfile flag to properly
record the fact that we have already created an object file for the module.

The original commit message was:

The reason this wasn't working was that ProcessMinidump was creating odd
object-file-less modules, and SymbolFileBreakpad required the module to
have an associated object file because it needed to get its base
address.

This fixes that by introducing a PlaceholderObjectFile to serve as a
dummy object file. The general idea for this is taken from D55142, but
I've reworked it a bit to avoid the need for the PlaceholderModule
class. Now that we have an object file, our modules are sufficiently
similar to regular modules that we can use the regular Module class
almost out of the box -- the only thing I needed to tweak was the
Module::CreateModuleFromObjectFile functon to set the module's FileSpec
in addition to it's architecture. This wasn't needed for ObjectFileJIT
(the other user of CreateModuleFromObjectFile), but it shouldn't hurt it
either, and the change seems like a straightforward extension of this
function.

Reviewers: clayborg, lemo, amccarth

Subscribers: lldb-commits

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

llvm-svn: 354263
2019-02-18 11:55:01 +00:00
Pavel Labath d1304bba34 PECOFF: Implement GetBaseAddress
COFF files are modelled in lldb as having one big container section
spanning the entire module image, with the actual sections being
subsections of that. In this model, the base address is simply the
address of the first byte of that section.

This also removes the hack where ObjectFilePECOFF was using the
m_file_offset field to communicate this information. Using file offset
for this purpose is completely wrong, as that is supposed to indicate
where is this ObjectFile located in the file on disk. This field is only
meaningful for fat binaries, and should normally be 0.

Both PDB plugins have been updated to use GetBaseAddress instead of
GetFileOffset.

llvm-svn: 354258
2019-02-18 11:06:57 +00:00
Pavel Labath 9d723b8296 Return better error message from GDBRemoteCommunication::ConnectLocally
llvm-svn: 354256
2019-02-18 10:36:23 +00:00
Pavel Labath 105f949149 Set cmake policy CMP0075 to NEW
Summary:
The policy is about cmake_include_files ignoring
CMAKE_REQUIRED_LIBRARIES in the OLD behavior. Llvm already sets this
policy to NEW, but that is overridden by our cmake_minimum_required
command.

This makes our cmake policy setup consistent with the llvm build files
and avoids a warning when using newer versions of cmake.

Reviewers: sgraenitz, xiaobai

Subscribers: mgorny, lldb-commits

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

llvm-svn: 354251
2019-02-18 10:09:29 +00:00
Jan Kratochvil b9d7984b2d Remove unused extern declaration as removed by D32167
llvm-svn: 354225
2019-02-17 17:12:37 +00:00
Tatyana Krasnukha b81d715cd2 Add PythonBoolean type to the PythonDataObjects
Differential Revision: https://reviews.llvm.org/D57817

llvm-svn: 354206
2019-02-16 18:39:14 +00:00
Davide Italiano 40046bc843 [testsuite] Skip this test correctly also on macOS.
llvm-svn: 354204
2019-02-16 17:16:53 +00:00
Raphael Isemann 913f07af6e Fix TestDataFormatterLibcxxListLoop.py test
Summary:
The compilation of the TestDataFormatterLibcxxListLoop.py currently fails with this error:

```
functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/main.cpp:19:24: error: no member named '__value_' in 'std::__1::__list_node_base<int, void *>'
    assert(third_elem->__value_ == 3);
           ~~~~~~~~~~  ^
```

It seems the internal structure of list has changed with the 3.8 release. This patch makes the test compile with the current libc++ and with the previous libc++.

Reviewers: shafik, zturner, labath

Reviewed By: labath

Subscribers: christof, jdoerfert, lldb-commits

Tags: #lldb

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

llvm-svn: 354202
2019-02-16 12:13:30 +00:00
Richard Smith 81086e2a65 Temporarily disable test:
test/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py

It fails on Mac OS; apparently a VarDecl 'void *&C' is implicitly
declared there, making the class template name C ambiguous.

llvm-svn: 354185
2019-02-16 00:13:26 +00:00
Jason Molenda 3bf883eac9 Add some unconditional logging on the failure points when attaching
to a process so we'll always get messages in the console logs.  

Also make the "is frontboard process" / "is backboard process"
determination lazy, specifically take it out of the
MachProcess::AttachForDebug codepath when we are attaching to a
process, to simplify attaching.

<rdar://problem/47982516> 
<rdar://problem/48060134> 

llvm-svn: 354181
2019-02-15 22:39:30 +00:00
Davide Italiano 1c29801615 Revert "Don't include UnixSignals.h from Host."
It broke the modules green dragon buildbot.

llvm-svn: 354177
2019-02-15 21:55:29 +00:00
Richard Smith 35b007e9a9 Fix AST generated for a class template to connect the class inside a
class template back to the template.

Previously, when the ASTImporter imported the class, it didn't know that
it was the pattern of a class template, so made the class a name lookup
result for the name of the template, resulting in ambiguity errors when
naming the template.

Due to a clang bug (fixed in r354091, reverted and soon to be
re-committed), ambiguity errors between a template and a non-template
were previously not diagnosed. Once r354091 is re-committed, this will
be covered by existing lldb tests.

llvm-svn: 354173
2019-02-15 21:48:09 +00:00
Stella Stamenova a2d9fdf5b6 [win] Resolve the module only if there isn't one already
Summary:
This commit modifies the OnLoadModule method to resolve the module
unless we already have one

Change by Hui Huang to fix the failing LLDB tests on Windows

Reviewers: labath, asmith

Subscribers: abidh, lldb-commits

Tags: #lldb

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

llvm-svn: 354172
2019-02-15 21:40:59 +00:00
Zachary Turner 63c300cfc1 Don't include UnixSignals.h from Host.
Host had a function to get the UnixSignals instance corresponding
to the current host architecture.  This means that Host had to
include a file from Target.  To break this dependency, just make
this a static function directly in UnixSignals.  We already have
the function UnixSignals::Create(ArchSpec) anyway, so we just
need to have UnixSignals::CreateForHost() which determines which
value to pass for the ArchSpec.

The goal here is to eventually break the Host->Target->Host
circular dependency.

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

llvm-svn: 354168
2019-02-15 20:43:56 +00:00
Jorge Gorbe Moya da0487f3f2 Disable stop-hook-threads.test on Linux
ExecControl/StopHook/stop-hook-threads.test is flaky on Linux (it's
consistently failing on my machine, but doesn't fail on a co-worker's).
I'm seeing the following assertion failure:

```
CommandObject.cpp:145: bool lldb_private::CommandObject::CheckRequirements(lldb_private::CommandReturnObject&): Assertion `m_exe_ctx.GetTargetPtr() == NULL' failed.
```

Interestingly, this doesn't happen when typing the same commands in
interactive mode. The cause seems to be that, in synchronous execution
mode continue waits until the process stops again, and that includes
running any stop-hooks for that later stop, so we end with a stack trace
like this (lots of frames omitted for clarity):

```
abort()
CommandObject::CheckRequirements() <-- this is again the same instance of CommandObjectProcessContinue, fails assertion because the previous continue command hasn't finished.
Target::RunStopHooks()
CommandObjectProcessContinue::DoExecute()
Target::RunStopHooks()
```

In general, it seems like using process control commands inside
stop-hooks does not have very well defined semantics. You don't even
need multiple threads to make that assertion fail, you can build

```
int main() {
  printf("1\n");  // break1
  printf("2\n");  // break2
}
```

and then on lldb

```
target stop-hook add -o continue
break set -f stop-hook-simple.cpp -p "break1"
break set -f stop-hook-simple.cpp -p "break2"
run
```

In this case it's even worse because the presence of multiple threads
makes it prone to race conditions. In some tests I ran with a simpler
version of this test case, I was hitting either the previous assertion
failure or the following issue:

1. Two threads reach a breakpoint
2. First stop-hook does a process continue
3. Threads end
4. Second stop-hook runs, complains about process not existing.

This change disables the test on Linux. It's already marked as XFAIL on
Windows, so maybe we should just delete it until it's clear what should
be the expected behavior in these cases. Or maybe try to come up with a
way to write a similar multithreaded test without calling continue from
a stop hook, I don't know.

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

llvm-svn: 354149
2019-02-15 17:54:00 +00:00
Stefan Granitz 42a9da7b35 Fix potential UB when target_file directory is null
Summary: As seen in a crash report, the C-string returned for the directory component of `target_file` can null. It should not be assigned to `std::string` directly as this is undefined behavior.

Reviewers: jingham

Reviewed By: jingham

Subscribers: jdoerfert, lldb-commits, #lldb

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

llvm-svn: 354145
2019-02-15 16:42:29 +00:00
Pavel Labath 4f85014dff Remove alignment from struct XSAVE altogether
I reduced the alignment of this struct in r342029 to avoid compiler
warnings about under-aligned allocations, but it turns out that this
still causes problems with some compilers (see r353778). As I hinted in
r342029, I don't believe any special aligment is necessary here (the
only reason for that would be if we used some aligned SSE instructions to
access this buffer, but I don't see any reason why we should do that),
so here I go all the way, and remove the alignment requirements (except
the ones naturally imposed by basic types) altogether.

llvm-svn: 354125
2019-02-15 12:20:23 +00:00
Michal Gorny 53eabaab3f [lldb] [MainLoop] Add kevent() EINTR handling
Add missing EINTR handling for kevent() calls.  If the call is
interrupted, return from Poll() as if zero events were returned and let
the polling resume on next iteration.  This fixes test flakiness
on NetBSD.

Includes a test case suggested by Pavel Labath on D42206.

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

llvm-svn: 354122
2019-02-15 12:13:02 +00:00
Pavel Labath 5f54fe2332 Fix the gdb-client test suite for python3
This applies the same fix that was done in r354106 to the lldb-server
test: bitcasting the string to a bytes object before sending it over a
socket. Since the gdb-remote protocol occasionally contains binary data,
and it does not assign any particular encoding to them, this is the
right thing to do here.

llvm-svn: 354114
2019-02-15 10:47:34 +00:00
Pavel Labath 0ed2d16063 Sort files in source/Host/CMakeLists.txt
llvm-svn: 354112
2019-02-15 10:06:21 +00:00
Pavel Labath 0af864b4b2 Fix lldb-server test suite for python3
Summary:
This patch finishes the python3-ification of the lldb-server test suite.
It reverts the partial attempt in r352709 to encode/decode the string
via utf8 before writing to the socket. This wasn't enough because the
gdb-remote protocol can sometimes (but not very often) carry binary
data, and the utf8 codec chokes on that. Instead I add utility functions
to the "seven" module for performing "identity" transformations on the
byte data. This basically drills back the hole in the python type system
that the string/bytes distinction was supposed to plug. That is not
ideal, but was the best solution of the alternatives I could come up
with. The options I considered were:
- make use of the type system to add type safety to the test suite: This
  required making a lot of changes to the test suite, since most of the
  strings would now become byte objects instead, and it was not even
  fully clear to me where to draw the line. One extreme solution would
  be to just use byte objects everywhere, as the protocol doesn't
  support non-ascii characters anyway. However, this appeared to be:
  a) weird, because most of the protocol actually deals with strings,
     but we would have to prefix everything with 'b'
  b) clunky, because the handling of the bytes objects is sufficiently
     different in PY2 and PY3 (e.g. b'a'[0] is a string in PY2, but an
     int in PY3).
- using the latin1 codec (which gives an identity transformation for the
  first 256 code points of unicode) instead of the custom
  bytes_to_string functions. This almost could work, but it was still
  slightly different between python 2 and 3, because in PY2 in would
  return a unicode object, which would then cause problems when
  combined with regular strings if it contained 8-bit chars.

With this in mind, I think the best solution for the time being is to
just coerce everything into the string type as early as possible, and
have things proceed indentically on both python versions. Once we stop
supporting python3, we can revisit the idea of using bytes objects more
prevasively.

Reviewers: davide, zturner, serge-sans-paille

Subscribers: lldb-commits

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

llvm-svn: 354106
2019-02-15 07:47:06 +00:00
Pavel Labath b302bd2324 Use sys.executable in lldb-dotest
Without that, dotest.py would be executed with the default python
interpreter, which may not be the same one that lldb is built with.

This still requires the user do know which python interpreter to use
when running lldb-dotest, but now he is at least able to choose it, if
he knows which one to use.

llvm-svn: 354105
2019-02-15 07:41:17 +00:00
Pavel Labath 8d6b60c14c Embed swig version into lldb.py in a different way
Summary:
Instead of doing string chopping on the resulting python file, get swig
to output the version for us. The two things which make slightly
non-trivial are:
- in order to get swig to expand SWIG_VERSION for us, we cannot use
  %pythoncode directly, but we have to go through an intermediate macro.
- SWIG_VERSION is a hex number, but it's components are supposed to be
  interpreted decimally, so there is a bit of integer magic needed to
  get the right number to come out.

I've tested that this approach works both with the latest (3.0.12) and
oldest (1.3.40) supported swig.

Reviewers: zturner, jingham, serge-sans-paille

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 354104
2019-02-15 07:41:12 +00:00
Pavel Labath 8c02e778ff Remove redundant semicolon after namespace-closing '}'
llvm-svn: 354103
2019-02-15 07:33:37 +00:00
Aaron Smith 96b821071f Fix for build bot problem from last change
llvm-svn: 354100
2019-02-15 06:13:59 +00:00
Aaron Smith eb6671e7c8 Implement GetLoadAddress for the Windows process plugin
Summary:
When a process is loaded, update its sections with the load address to resolve any created breakpoints. For the remote debugging case, the debugged process is launched remotely so GetLoadAddress is intended to pass the load address from remote to LLDB (client).


Reviewers: zturner, llvm-commits, clayborg, labath

Reviewed By: labath

Subscribers: mgorny, sas, Hui, clayborg, labath, lldb-commits

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

llvm-svn: 354099
2019-02-15 04:32:50 +00:00
Michal Gorny 257fcd9b17 [lldb] [MainLoop] Remove redundant termination clause (NFCI)
Remove the redundant termination clause from within the loop.  Since
the check is done at the end of the loop, it's entirely redundant
to the 'while' condition.  If termination was requested, the latter
will become false and the 'while' loop will terminate, resulting
in the 'return' statement below the loop being executed (which is
equivalent to the one used inside 'if').

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

llvm-svn: 354050
2019-02-14 18:51:21 +00:00
Adrian Prantl 8400eb3279 Add explicit language specifier to test.
llvm-svn: 354048
2019-02-14 18:49:14 +00:00
Frederic Riss b3a4649a6a [dotest] Fix compiler version number comparison
dotest's version comparision function is just a lexicographical compare
of the version strings. This is obviously wrong. This patch implements
the comparison using distutils.version.LooseVersion as suggested by
Zachary.

Reviewers: zturner, labath, serge-sans-paille

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 354047
2019-02-14 18:48:05 +00:00
Jonas Devlieghere ff04b3d4d7 [ExpressionParser] Reuse the FileManager from the compiler instance.
I was looking at the ClangExpressionParser and noticed that we have a
FileManager owned by the expression parser and later ask the compiler
instance to create a new FileManager, owned by the clang CI. Looking at
the code I don't see a good reason for having two instances. This patch
removes the one owned by LLDB.

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

llvm-svn: 354041
2019-02-14 18:05:43 +00:00
Raphael Isemann a2a6acf3f0 Don't source local .lldbinit in the test suite
Summary:
As suggested by Pavel, we shouldn't let our tests parse the local .lldbinit to prevent random test failures
due to changed settings.

Fixes Minidump/Windows/Sigsegv/sigsegv.test (and probably others too).

Reviewers: labath, serge-sans-paille

Reviewed By: labath

Subscribers: abidh, lldb-commits, zturner

Tags: #lldb

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

llvm-svn: 354038
2019-02-14 17:39:19 +00:00
Stefan Granitz db85fdd115 [CMake] Fix RPATH handling for LLDB.framework
Summary:
Generator expressions are not supported in the `BUILD_RPATH` target property.
`BUILD_RPATH` is only supported in 3.8+ https://cliutils.gitlab.io/modern-cmake/chapters/intro/newcmake.html
`LLDB_FRAMEWORK_INSTALL_DIR` should not overwrite, but rather add an install RPATH (and it should be the first)

Reviewers: xiaobai, lanza

Reviewed By: xiaobai

Subscribers: mgorny

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

llvm-svn: 354037
2019-02-14 17:34:39 +00:00
Pavel Labath 66d88326ab Move UnwindTable from ObjectFile to Module
Summary:
This is a preparatory step to enable adding extra unwind strategies by
symbol file plugins. This has been discussed on the lldb-dev mailing
list: <http://lists.llvm.org/pipermail/lldb-dev/2019-February/014703.html>.

Reviewers: jasonmolenda, clayborg, espindola

Subscribers: lemo, emaste, lldb-commits, arichardson

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

llvm-svn: 354033
2019-02-14 14:40:10 +00:00
Michal Gorny 2d874e5356 [lldb] [lldb-server] Catch and report errors from main loop
Catch the possible error from lldb-gdbserver's main loop, and report
it verbosely.  Currently, if the loop fails the server exits normally,
rendering the problem indistinguishable from regular termination.

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

llvm-svn: 354030
2019-02-14 13:52:37 +00:00
Michal Gorny c23f82c026 [lldb] [MainLoop] Report errno for failed kevent()
Modify the kevent() error reporting to use errno rather than returning
the return value.  At least on FreeBSD and NetBSD, kevent() always
returns -1 in case of error, and the actual error is returned via errno.

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

llvm-svn: 354029
2019-02-14 13:52:31 +00:00
Aaron Smith bc47289511 [gdb-remote] Sanity check platform pointer
llvm-svn: 354012
2019-02-14 08:59:04 +00:00
Aaron Smith d504fe20e3 [lldb-server] Add remote platform capabilities for Windows
Summary:
Implement a few routines for Windows to support some basic process interaction and file system operations.


Reviewers: zturner, llvm-commits, labath, jingham

Reviewed By: labath

Subscribers: emaste, jdoerfert, Hui, labath, lldb-commits

Tags: #lldb

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

llvm-svn: 354010
2019-02-14 05:34:46 +00:00
Adrian Prantl 8c8cfc102b Add missing include
llvm-svn: 353979
2019-02-13 20:52:41 +00:00
Jonas Devlieghere 201a40c568 [CMake] Make lldb-test-deps a dependency of check-lldb
We have a custom target for lldb's test dependencies but it must have
gotten lost in one of the recent CMake refactorings.

llvm-svn: 353978
2019-02-13 20:51:13 +00:00
Adrian Prantl 0c0ebb1430 Add missing include
llvm-svn: 353971
2019-02-13 19:29:22 +00:00
Adrian Prantl 0f30a3b68f Deserialize Clang module search path from DWARF
This patch properly extracts the full submodule path as well as its
search paths from DWARF import decls and passes it on to the
ClangModulesDeclVendor.

rdar://problem/47970144

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

llvm-svn: 353961
2019-02-13 18:10:41 +00:00
Pavel Labath 3f27395322 Revert "Fix one more string/bytes issue in lldb-server tests"
It looks like I was too hasty to submit the previous patch. It does fix
some tests on python3, but it also breaks one tests with python2.

This happens because the gdb-remote protocol can sometimes (but not very
often) contain binary data, and attempting to parse this as utf8
characters fails.

This reverts commit r353944.

llvm-svn: 353945
2019-02-13 13:06:37 +00:00
Pavel Labath 61a301e645 Fix one more string/bytes issue in lldb-server tests
This fixes about a dozen tests with python3.

llvm-svn: 353944
2019-02-13 12:54:59 +00:00
Michal Gorny e47f89cb2c [lldb] [cmake] Use install directories for LLVM_* variables
Restore the previous behavior of using install directories for
LLVM_MAIN_INCLUDE_DIR, LLVM_LIBRARY_DIR and LLVM_BINARY_DIR.  The update
from llvm-config to CMake has changed the values of those values to use
LLVM_BUILD_* which is plain wrong and breaks stand-alone builds.
Instead, use the CMake counterparts of the values returned
by llvm-config.

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

llvm-svn: 353925
2019-02-13 08:34:46 +00:00
Pavel Labath 7db8b5c4bd ObjectFilePECOFF: Create a "container" section spanning the entire module image
Summary:
This is coming from the discussion in D55356 (the most interesting part
happened on the mailing list, so it isn't reflected on the review page).

In short the issue is that lldb assumes that all bytes of a module image
in memory will be backed by a "section". This isn't the case for PECOFF
files because the initial bytes of the module image will contain the
file header, which does not correspond to any normal section in the
file. In particular, this means it is not possible to implement
GetBaseAddress function for PECOFF files, because that's supposed point
to the first byte of that header.

If my (limited) understanding of how PECOFF files work is correct, then
the OS is expecded to load the entire module into one continuous chunk
of memory. The address of that chunk (+/- ASLR) is given by the "image
base" field in the COFF header, and it's size by "image size". All of
the COFF sections are then loaded into this range.

If that's true, then we can model this behavior in lldb by creating a
"container" section to represent the entire module image, and then place
other sections inside that. This would make be consistent with how MachO
and ELF files are modelled (except that those can have multiple
top-level containers as they can be loaded into multiple discontinuous
chunks of memory).

This change required a small number of fixups in the PDB plugins, which
assumed a certain order of sections within the object file (which
obivously changes now). I fix this by changing the lookup code to use
section IDs (which are unchanged) instead of indexes. This has the nice
benefit of removing spurious -1s in the plugins as the section IDs in
the pdbs match the 1-based section IDs in the COFF plugin.

Besides making the implementation of GetBaseAddress possible, this also
improves the lookup of addresses in the gaps between the object file
sections, which will now be correctly resolved as belonging to the
object file.

Reviewers: zturner, amccarth, stella.stamenova, clayborg, lemo

Reviewed By: clayborg, lemo

Subscribers: JDevlieghere, abidh, lldb-commits

Tags: #lldb

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

llvm-svn: 353916
2019-02-13 07:17:24 +00:00
Jonas Devlieghere d5b440369d Replace 'ap' with 'up' suffix in variable names. (NFC)
The `ap` suffix is a remnant of lldb's former use of auto pointers,
before they got deprecated. Although all their uses were replaced by
unique pointers, some variables still carried the suffix.

In r353795 I removed another auto_ptr remnant, namely redundant calls to
::get for unique_pointers. Jim justly noted that this is a good
opportunity to clean up the variable names as well.

I went over all the changes to ensure my find-and-replace didn't have
any undesired side-effects. I hope I didn't miss any, but if you end up
at this commit doing a git blame on a weirdly named variable, please
know that the change was unintentional.

llvm-svn: 353912
2019-02-13 06:25:41 +00:00
Jonas Devlieghere 63e2e59b89 [Reproducers] Integrate FileProvider with clang
This patch hooks up clang and lldb's reproducers functionality. It
ensures that when capturing a reproducer, headers and modules imported
through the expression parser are collected.

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

llvm-svn: 353906
2019-02-13 01:30:41 +00:00
Davide Italiano 3eac27789d [testsuite] Add a comment explaining what this test does.
llvm-svn: 353896
2019-02-12 23:02:53 +00:00
Davide Italiano caade28362 [testsuite] Convert TestSingleQuote to lit.
Nothing crazy, this is pretty mechanical.

llvm-svn: 353894
2019-02-12 22:57:57 +00:00
Jonas Devlieghere 1ca9dd8507 [lldb-instr] Pass PCHContainerOperations to ClangTool
On a local modules build this would cause an error.

> fatal error: no handler registered for module format 'obj'
> LLVM ERROR: unknown module format

Interestingly enough, this didn't trigger on the GreenDragon CMake bot,
which is configured with modules.

llvm-svn: 353869
2019-02-12 18:19:34 +00:00
Michal Gorny f6e5594e81 [lldb] [unittest] Avoid mixing '127.0.0.1' and 'localhost'
Fix the tests not to use '127.0.0.1' and 'localhost' interchangeably.
More specifically, since tests bind specifically to 127.0.0.1, connect
to that address as well; using 'localhost' can resolve to IPv6 address
which can cause issues -- for example, if the matching port happens to
be used by some other process, the tests hang forever waiting for
the client to connect.

While technically the case of randomly selected IPv4 port being taken
on IPv6 loopback is not very likely, NetBSD happens to be suffering from
some weird kernel issue where connection to that port succeeds
nevertheless.  Until we can really figure out what goes wrong there,
this saves us from the tests hanging randomly.

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

llvm-svn: 353868
2019-02-12 18:09:00 +00:00
Greg Clayton 46336896a3 Fix Xcode project for RemoteAwarePlatform files.
llvm-svn: 353856
2019-02-12 16:54:28 +00:00
Pavel Labath 7f815a9a42 Have Stream::PutCStringAsRawHex8 take llvm::StringRef
This enables the function to be called with a StringRef without jumping
through any hoops. I rename the function to "PutStringAsRawHex8" to
honor the extended interface. I also remove ".c_str()" from any calls to
this function I could find.

llvm-svn: 353841
2019-02-12 14:28:55 +00:00
Pavel Labath 52d9c62a50 Extract common PlatformPOSIX/Windows code into a separate class
Summary:
The two classes contained a lot of duplicated code, but there wasn't a
good place to factor it to. It couldn't be the base Platform class,
since we also have platforms which are only remote (such as
PlatformGDBRemoteServer), and so it did not make sense for those to have
an m_remote_platform member.

This patch creates a new class, RemoteAwarePlatform, which can serve as
a base class for platforms which can both serve as a host, and forward
actions to a remote system. It is motivated partly by D56232 (which was
about to add a bunch of additional duplicated methods), and partly by my
own need to modify a function which happens to be implemented in both
places identically.

The patch moves the methods which are trivially identical in the two
classes into the common base class, there were one or two more methods
which could probably be merged into one, but this wasn't completely
trivial, so I did not attempt to do that now.

Reviewers: jingham, zturner, clayborg, asmith

Subscribers: emaste, mgorny, Hui, lldb-commits

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

llvm-svn: 353812
2019-02-12 09:27:24 +00:00
Aleksandr Urakov eaa0ad672e [NativePDB] Process virtual bases in the correct order
Summary:
This patch makes virtual bases to be added in the correct order to the bases
list. It is important because `VTableContext` (`MicrosoftVTableContext` in our
case) uses then the order of virtual bases in the list to restore the virtual
table indexes. These indexes are used then to resolve the layout of the virtual
bases.

We haven't enough information about offsets of virtual bases regarding to the
object (moreover, in a common case we can't rely on such information, see the
example here: https://reviews.llvm.org/D53506#1272306 ), but there should be
enough information to restore the layout of the virtual bases from the indexes
in runtime. After D53506 this information is used whenever possible, so there
should be no problems with virtual bases' fields reading.

Reviewers: zturner, rnk, stella.stamenova

Subscribers: abidh, teemperor, lldb-commits

Tags: #lldb

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

llvm-svn: 353806
2019-02-12 08:17:11 +00:00
Jonas Devlieghere 70355ace3f Remove redundant ::get() for smart pointer. (NFC)
This commit removes redundant calls to smart pointer’s ::get() method.

https://clang.llvm.org/extra/clang-tidy/checks/readability-redundant-smartptr-get.html

llvm-svn: 353795
2019-02-12 03:47:39 +00:00
Jonas Devlieghere 6e31f4758f [Thread] Update the correct variable
The new shared pointer was assigning to the temporary instead of the
member (m_curr_frames_sp).

llvm-svn: 353783
2019-02-12 01:04:57 +00:00
Jonas Devlieghere 9d0c5f9953 Define _ENABLE_EXTENDED_ALIGNED_STORAGE on Windows.
Apparently there are multiple places where MSVC complains about
instantiations with extended aligment. I think it's better to define
`_ENABLE_EXTENDED_ALIGNED_STORAGE` as suggested by the error message.

I don't have access to a Windows machine so this is all speculative.

llvm-svn: 353778
2019-02-12 00:30:21 +00:00
Jonas Devlieghere 55fb848e84 [ObjectFileMachO] Revert std::make_shared
This caused a rather interesting error message on MSVC: error C2338 and
I'm not sure how to properly fix it.

llvm-svn: 353769
2019-02-11 23:49:13 +00:00
Jonas Devlieghere c6091d2bed Some cleanup after moving to std::make_shared
Addresses Tatyana Krasnukha's feedback from D57990.

llvm-svn: 353768
2019-02-11 23:48:59 +00:00
Jonas Devlieghere 796ac80b86 Use std::make_shared in LLDB (NFC)
Unlike std::make_unique, which is only available since C++14,
std::make_shared is available since C++11. Not only is std::make_shared
a lot more readable compared to ::reset(new), it also performs a single
heap allocation for the object and control block.

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

llvm-svn: 353764
2019-02-11 23:13:08 +00:00
Raphael Isemann f75a9dc1a2 Fixed function name in log statement
llvm-svn: 353753
2019-02-11 21:45:33 +00:00
Jonas Devlieghere 31ad39c51f Use of `@return` is not appropriate for a function with a void return type.
The comment for this declaration causes a warning with -Wdocumentation:
Invalid @return in documentation comment SetCollectingStats() in
SBTarget.h.

llvm-svn: 353752
2019-02-11 21:43:18 +00:00
Jonas Devlieghere cc2a16783b Update SymbolVendorMacOSX for new GetUUID interface
The interface changed in r353714.

llvm-svn: 353721
2019-02-11 17:19:26 +00:00
Pavel Labath bd334efd0a Simplify ObjectFile::GetUUID
instead of returning the UUID through by-ref argument and a boolean
value indicating success, we can just return it directly. Since the UUID
class already has an invalid state, it can be used to denote the failure
without the additional bool.

llvm-svn: 353714
2019-02-11 16:14:02 +00:00
Aleksandr Urakov eac19858e9 [build.py] Add `-fms-compatibility-version=19` to `build.py`
Summary:
`clang-cl` can't compile tests containing `char16_t` and `char32_t` types
without the MSVC compatibility option passed. This patch adds the option to the
`clang-cl` call in the `build.py` script by default.

Reviewers: zturner, labath, stella.stamenova, serge-sans-paille

Reviewed By: labath

Subscribers: lldb-commits, leonid.mashinskiy

Tags: #lldb

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

llvm-svn: 353709
2019-02-11 15:13:33 +00:00
Pavel Labath 841bea933b Breakpad: auto-detect path style of file entries
Summary:
This adds support for auto-detection of path style to SymbolFileBreakpad
(similar to how r351328 did the same for DWARF). We guess each file
entry separately, as we have no idea which file came from which compile
units (and different compile units can have different path styles). The
breakpad generates should have already converted the paths to absolute
ones, so this guess should be reasonable accurate, but as always with
these kinds of things, it is hard to give guarantees about anything.

In an attempt to bring some unity to the path guessing logic, I move the
guessing logic from inside SymbolFileDWARF into the FileSpec class and
have both symbol files use it to implent their desired behavior.

Reviewers: clayborg, lemo, JDevlieghere

Subscribers: aprantl, markmentovai, lldb-commits

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

llvm-svn: 353702
2019-02-11 14:11:00 +00:00
Michal Gorny c1adbc6c94 [lldb] [lit] Fix finding lld-link when it is not in 'compiler dir'
Fix the build helper to find lld-link via PATH lookup, rather than
making a fragile assumption that it will be present in the 'compiler
directory'.  This fixes tests on Gentoo where clang and lld
are installed in different directories.

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

llvm-svn: 353701
2019-02-11 14:09:48 +00:00
Michal Gorny 8780771c51 [lldb] [test] Skip lldb-mi test if LLDB_DISABLE_PYTHON is used
Skip running lldb-mi tests when Python support is disabled.  This causes
lldb-mi to unconditionally fail, and therefore all the relevant tests
fail as well.

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

llvm-svn: 353700
2019-02-11 14:09:43 +00:00
Pavel Labath cfc3f751aa Revert "minidump: Add ability to attach (breakpad) symbol files to placeholder modules"
The commit has broken TestMiniDump.py on windows. Reverting while I
investigate.

This reverts r353677.

llvm-svn: 353686
2019-02-11 10:30:24 +00:00
Michal Gorny f68b6cbae2 [lldb] [lldb-instr] Add missing linkage to clang libraries
Fix build errors against shared clang by adding all the libraries used
in the code.

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

llvm-svn: 353680
2019-02-11 10:02:26 +00:00
Pavel Labath 734648bb4a minidump: Add ability to attach (breakpad) symbol files to placeholder modules
Summary:
The reason this wasn't working was that ProcessMinidump was creating odd
object-file-less modules, and SymbolFileBreakpad required the module to
have an associated object file because it needed to get its base
address.

This fixes that by introducing a PlaceholderObjectFile to serve as a
dummy object file. The general idea for this is taken from D55142, but
I've reworked it a bit to avoid the need for the PlaceholderModule
class. Now that we have an object file, our modules are sufficiently
similar to regular modules that we can use the regular Module class
almost out of the box -- the only thing I needed to tweak was the
Module::CreateModuleFromObjectFile functon to set the module's FileSpec
in addition to it's architecture. This wasn't needed for ObjectFileJIT
(the other user of CreateModuleFromObjectFile), but it shouldn't hurt it
either, and the change seems like a straightforward extension of this
function.

Reviewers: clayborg, lemo, amccarth

Subscribers: lldb-commits

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

llvm-svn: 353677
2019-02-11 09:32:08 +00:00
Michal Gorny f048d448e0 [lldb] [MainLoop] Initialize empty sigset_t correctly
Fix MainLoop::RunImpl::get_sigmask() to correctly return empty sigset_t
when SIGNAL_POLLING_UNSUPPORTED is true.  On NetBSD (and probably
on some other platforms), integers are not implicitly convertible to
sigset_t, so 'return 0' is erraneous.  Instead, sigset_t should be reset
through sigemptyset().

While at it, move common parts out of the #ifdef.

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

llvm-svn: 353675
2019-02-11 09:18:46 +00:00
Chandler Carruth 023f999822 Update files to the new header that were incorrectly landed with the old
one.

llvm-svn: 353663
2019-02-11 08:03:41 +00:00
Raphael Isemann d1307ec4cc Fix x86 return pattern detection
Summary: Replace 0xc9 (LEAVE) with 0xcb (RETF) in ret_pattern_p(). Also put 0xc3 first, since it is the most common form and will match first.

Reviewers: jasonmolenda

Reviewed By: jasonmolenda

Subscribers: labath, lldb-commits

Tags: #lldb

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

llvm-svn: 353643
2019-02-10 15:41:53 +00:00
Raphael Isemann ada705a5d2 lldb: Fix compilation on OpenBSD
Summary: Update the OpenBSD Host.cpp for the new SetFile() function signature. Fixes compiling lldb on OpenBSD.

Reviewers: krytarowski

Reviewed By: krytarowski

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 353642
2019-02-10 15:23:58 +00:00
Jason Molenda 3b68761dc3 Tiny fix spotted by static analyzer; GetPath() returns a std::string,
we get a pointer to the c-string rep and then the temporary object
is destructed and we still refer to the c-string after that.

llvm-svn: 353581
2019-02-08 23:36:25 +00:00
James Y Knight ae2f951219 [opaque pointer types] Update calls to CreateCall to pass the function
type in lldb and polly.

llvm-svn: 353549
2019-02-08 19:30:46 +00:00
Michal Gorny 01486b22bb [lldb] [unittests] Disable MainLoopTest::DetectsEOF on NetBSD
The NetBSD kernel currently does not support detecting closed slave pty
via kevent on master pty.  This causes the test to hang forever.
To avoid that, disable the test until the kernel is fixed.

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

llvm-svn: 353545
2019-02-08 18:56:11 +00:00
Aleksandr Urakov ee21a66a7b [NFC] Fix license headers after r352845
llvm-svn: 353503
2019-02-08 08:48:15 +00:00
Jim Ingham 3c247076cc Removing some unimplemented methods from the SB headers
NFC

llvm-svn: 353487
2019-02-08 00:34:04 +00:00
Jonas Devlieghere 166c262f23 [CommandInterpreter] Early return on error (NFC)
We save two levels of indentation by returning early if the given file
doesn't exists or cannot be opened.

llvm-svn: 353472
2019-02-07 21:51:20 +00:00
Adrian Prantl 238ce2128c Silence fallthrough warnings in debugserver.
llvm-svn: 353468
2019-02-07 21:22:38 +00:00
Aaron Smith 397c51b655 Add missing overrides
llvm-svn: 353447
2019-02-07 18:52:22 +00:00
Aaron Smith 3a14249525 [lldb-server] Improve support on Windows
Summary:
This commit contains the following changes:

  - Rewrite vfile close/read/write packet handlers with portable routines from lldb.
    This removes #if(s) and allows the handlers to work on Windows.

  - Fix a bug in File::Write. This is intended to write data at an offset to a file
    but actually writes at the current position of the file.

  - Add a default boolean argument 'should_close_fd' to FileSystem::Open to
    let the user decide whether to close the fd or not.

Reviewers: zturner, llvm-commits, labath

Reviewed By: zturner

Subscribers: Hui, labath, abidh, lldb-commits

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

llvm-svn: 353446
2019-02-07 18:46:25 +00:00
Jonas Devlieghere 1e6ba23608 [lldb-instr] Make lldb-instr a test dependency
llvm-svn: 353444
2019-02-07 18:41:59 +00:00
Aaron Smith 981e63581a [gdb-remote] Use lldb's portable Host::GetEnvironment() instead of getenv
Reviewers: zturner, llvm-commits, labath, serge-sans-paille

Reviewed By: labath

Subscribers: Hui, labath, lldb-commits

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

llvm-svn: 353440
2019-02-07 18:22:00 +00:00
Pavel Labath bae220ce9c Fix headers for files added in r353047
I started working on that patch before the headers were updated. Since
they were new files, I didn't get any conflicts during rebase.

llvm-svn: 353429
2019-02-07 17:16:25 +00:00
Pavel Labath a5d19759b2 Fix signed/unsigned mismatches in ProcessInfoTest.cpp
llvm-svn: 353420
2019-02-07 15:56:40 +00:00
Pavel Labath 9303afb30e Fix incorrect log messages in NativeProcessLinux (pr40588)
The "signal" argument was removed from the MonitorCallback function, but
not from the log statements within it. This wasn't noticed because the
name "signal" suddenly started referring to the libc function with that
name.

This fixes that.

llvm-svn: 353419
2019-02-07 15:56:35 +00:00
Pavel Labath fe9bb8ff24 Breakpad: temporarily XFAIL line-table tests
The tests are failing on windows because the paths in the symbol file
are parsed using the host path style. I'm working on a patch to have
SymbolFileBreakpad auto-detect the correct path style (similar to dwarf
r351328).

I originally wanted to make this a part of the initial line-table patch,
but then I simply forgot.

llvm-svn: 353410
2019-02-07 14:47:12 +00:00
Pavel Labath 67f6d842fa use_lldb_suite.py: Fix potential infinite loop
The loop searching for use_lldb_suite_root had a bug where if the marker
file happened to be missing, it would enter an infinite loop. While this
shouldn't happen in normal circumstances, it can happen accidentally,
and debugging it is not very pleasant.

The loop had an exit condition, but it was incorrent (os.path.dirname
returning None). This will never happen as dirname will just return the
same folder over and over again once it reaches the root folder. This
fixes the exit condition to account for that.

llvm-svn: 353406
2019-02-07 14:03:43 +00:00
Pavel Labath 76016ba1ca Fix some warnings introduced in r353324 (ReproducerInstrumentation patch)
GetIndexForObjectImpl generated a bunch of "conversion casts away
constness warnings". Change the function to use "const void *" (and
static_cast, while I'm at it), to avoid this.

Driver.cpp: unused variable "replay" (this was actually caused by a
subsequent partial revert of this patch). I just finish the revert by
removing the variable completely.

llvm-svn: 353405
2019-02-07 13:51:38 +00:00
Pavel Labath 3f35ab8b30 SymbolFileBreakpad: Add line table support
Summary:
This patch teaches SymbolFileBreakpad to parse the line information in
breakpad files and present it to lldb.

The trickiest question here was what kind of "compile units" to present
to lldb, as there really isn't enough information in breakpad files to
correctly reconstruct those.

A couple of options were considered
- have the entire file be one compile unit
- have one compile unit for each FILE record
- have one compile unit for each FUNC record

The main drawback of the first approach is that all of the files would
be considered "headers" by lldb, and so they wouldn't be searched if
target.inline-breakpoint-strategy=never. The single compile unit would
also be huge, and there isn't a good way to name it.

The second approach will create mostly correct compile units for cpp
files, but it will still be wrong for headers. However, the biggest
drawback here seemed to be the fact that this can cause a compile unit
to change mid-function (for example when a function from another file is
inlined or another file is #included into a function). While I don't
know of any specific thing that would break in this case, it does sound
like a thing that we should avoid.

In the end, we chose the third option, as it didn't seem to have any
major disadvantages, though it was not ideal either. One disadvantage
here is that this generates a large number of compile units, and there
is still a question on how to name it. We chose to simply name it after
the first line record in that function. This should be correct 99.99% of
the time, though it can produce somewhat strange results if the very
first line record comes from an #included file.

Reviewers: clayborg, zturner, lemo, markmentovai

Subscribers: lldb-commits

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

llvm-svn: 353404
2019-02-07 13:42:32 +00:00
Raphael Isemann 5911a10946 Fix documentation formatting for ShellExpandArguments
llvm-svn: 353381
2019-02-07 09:47:57 +00:00
Kuba Mracek 92369dcffd [lldb] Make frame recognizers vend synthesized eValueTypeVariableArgument values
llvm-svn: 353363
2019-02-07 01:49:10 +00:00
Jonas Devlieghere 9a7356a60f [Driver] Don't try to replay reproducer in the driver.
Because the macros for the SBReproducers have not been committed yet,
the driver should not attempt to replay a reproducer this way.

llvm-svn: 353362
2019-02-07 01:49:07 +00:00
Jonas Devlieghere 9c18978825 Fix my mistake adding SBReproducer the Xcode project
llvm-svn: 353361
2019-02-07 01:42:47 +00:00
Davide Italiano 6c27a06302 [testsuite] Convert a pexpect test to lit.
Summary:

Reviewers: JDevlieghere, friss, zturner, labath, jingham, serge-sans-paille

Subscribers: llvm-commits, lldb-commits

Tags: #llvm

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

llvm-svn: 353345
2019-02-06 21:48:01 +00:00
Jonas Devlieghere e98f590c3e Add SBReproducer to Xcode project
llvm-svn: 353326
2019-02-06 19:05:43 +00:00
Jonas Devlieghere 58947cf854 [Reproducers] SBReproducer framework: Capture & Replay
This is part two of the reproducer instrumentation framework. It
contains the code to capture and replay function calls. The main user of
this framework will be the SB API layer.

For all the details refer to the RFC on the mailing list:
http://lists.llvm.org/pipermail/lldb-dev/2019-January/014530.html

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

llvm-svn: 353324
2019-02-06 18:57:42 +00:00
Aleksandr Urakov 823c66b617 [x64] Process the B field of the REX prefix correctly for the PUSH and POP
instructions

Summary: This patch makes `x86AssemblyInspectionEngine` to process zero value of
the `B` field of the `REX` prefix in a correct way for `PUSH` and `POP`
instructions. MSVC sometimes emits `pushq %rbp` instruction as `0x40 0x55`, and
it was not parsed correctly before.

Reviewers: jasonmolenda, labath

Reviewed By: jasonmolenda, labath

Subscribers: abidh, lldb-commits

Tags: #lldb

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

llvm-svn: 353281
2019-02-06 08:48:30 +00:00
Jan Kratochvil bb3609e49d Fix strlen() of unbound array undefined behavior
LLDB testsuite fails when built by GCC8 on:
  LLDB :: SymbolFile/DWARF/find-basic-namespace.cpp

This is because this code in LLDB codebase has undefined behavior:

  #include <algorithm>
  #include <string.h>
  // lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp:1731
  static struct section_64 {
    char sectname[16];
    char segname[16];
  } sect64 = { {'_','_','a','p','p','l','e','_','n','a','m','e','s','p','a','c'}, "__DWARF" };
  int main() {
    return std::min<size_t>(strlen(sect64.sectname), sizeof(sect64.sectname));
  }

It has been discussed as a (false) bugreport to GCC:
  wrong-code: LLDB testcase fails: SymbolFile/DWARF/find-basic-namespace.cpp
  https://bugzilla.redhat.com/show_bug.cgi?id=1672436

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

llvm-svn: 353280
2019-02-06 08:44:13 +00:00
Jonas Devlieghere edff5f4b21 [Reproducers] lldb-instr: tool to generate instrumentation macros.
This patch introduces a new tool called 'lldb-instr'. It automates the
workflow of inserting LLDB_RECORD and LLDB_REGSITER macros for
instrumentation.

Because the tool won't be part of the build process, I didn't want to
over-complicate it. SB_RECORD macros are inserted in place, while
SB_REGISTER macros are printed to stdout, and have to be manually copied
into the Registry's constructor. Additionally, the utility makes no
attempt to properly format the inserted macros. Please use clang-format
to format the changes after running the tool.

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

llvm-svn: 353271
2019-02-06 04:33:14 +00:00
Jason Molenda 8130bf67ba Add a warning to GDBRemoteRegisterContext (if packet logging enabled)
if the size of the g packet response was smaller than expected and is
going to be ignored.

llvm-svn: 353269
2019-02-06 04:08:09 +00:00
Petr Hosek 23fdd5a37f [CMake] Unify scripts for generating VCS headers
Previously, there were two different scripts for generating VCS headers:
one used by LLVM and one used by Clang and lldb. They were both similar,
but different. They were both broken in their own ways, for example the
one used by Clang didn't properly handle monorepo resulting in an
incorrect version information reported by Clang.

This change unifies two the scripts by introducing a new script that's
used from both LLVM, Clang and lldb, ensures that the new script
supports both monorepo and standalone SVN and Git setups, and removes
the old scripts.

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

llvm-svn: 353268
2019-02-06 03:51:00 +00:00
Jonas Devlieghere 7b3a0f17a5 [Reproducers] Add instrumentation to Xcode project
llvm-svn: 353259
2019-02-06 01:31:00 +00:00
Jonas Devlieghere cf26117095 Sort Xcode project
llvm-svn: 353258
2019-02-06 01:30:45 +00:00
Jim Ingham 1a377ca4cd Little more cleanup on https://reviews.llvm.org/D57552
Thanks Jonas...  One more early continue and using
a range where we had an iterator.

NFC

llvm-svn: 353257
2019-02-06 01:27:45 +00:00
Jim Ingham 78449f009a Add the source directory for https://reviews.llvm.org/D57552.
llvm-svn: 353251
2019-02-06 00:52:04 +00:00
Jim Ingham 052f7ff96a Fix PathMappingList::FindFile to handle relative incoming FileSpecs.
An equivalent change was made to RemapPaths, but it needed to be made 
here as well.  Also added a test for this and made the setup a little
more complex to avoid false successes.

<rdar://problem/47642498>

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

llvm-svn: 353243
2019-02-05 23:48:10 +00:00
Jonas Devlieghere 53ae55a207 Remove accidentally commited file in xcshareddata
llvm-svn: 353239
2019-02-05 23:35:01 +00:00
Davide Italiano 76046abbfa [Py3/TestAppleOSSimulator] Another byte<->str interoperability issue.
llvm-svn: 353226
2019-02-05 22:24:53 +00:00
Jonas Devlieghere 3e30062acb [unittests] Fix warning
warning: comparison of integers of different signs: 'const int' and
'const unsigned long' [-Wsign-compare]

llvm-svn: 353196
2019-02-05 18:46:37 +00:00
Jonas Devlieghere 494fd8f84f [Reproducers] Instrumentation Framework: Serialization
This is the is serialization/deserialization part of the reproducer
instrumentation framework.

For all the details refer to the RFC on the mailing list:
http://lists.llvm.org/pipermail/lldb-dev/2019-January/014530.html

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

llvm-svn: 353195
2019-02-05 18:46:36 +00:00
Davide Italiano 0d98b771b0 [Obj-C] Fix undefined behaviour(s) in the new NSTaggedDate formatter.
Type punning through a union -> no good.
double to uint64 to double again -> no good either.

The nice side effect, other than silencing the sanitizer bot
is that it fixes the formatting of some dates, e.g. Jan 1st 1970.

<rdar://problem/47617983>

llvm-svn: 353191
2019-02-05 17:30:53 +00:00
Stefan Granitz 26693b909c Update Xcode project after r353047
llvm-svn: 353174
2019-02-05 14:41:26 +00:00
Krasimir Georgiev 7ffc4681ca [Expressions] Fix -Wreorder warning from r353149
Summary:
```
ClangExpressionDeclMap.cpp:72:60: error: field 'm_struct_vars' will be initialized after field 'm_ctx_obj' [-Werror,-Wreorder]
      m_result_delegate(result_delegate), m_parser_vars(), m_struct_vars(),
```

Reviewers: bkramer, aleksandr.urakov

Reviewed By: aleksandr.urakov

Subscribers: aleksandr.urakov

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

llvm-svn: 353161
2019-02-05 11:35:45 +00:00
Aleksandr Urakov 40624a085c [Expressions] Add support of expressions evaluation in some object's context
Summary:
This patch adds support of expression evaluation in a context of some object.
Consider the following example:
```
struct S {
  int a = 11;
  int b = 12;
};

int main() {
  S s;
  int a = 1;
  int b = 2;
  // We have stopped here
  return 0;
}
```
This patch allows to do something like that:
```
lldb.frame.FindVariable("s").EvaluateExpression("a + b")
```
and the result will be `33` (not `3`) because fields `a` and `b` of `s` will be
used (not locals `a` and `b`).

This is achieved by replacing of `this` type and object for the expression. This
has some limitations: an expression can be evaluated only for values located in
the debuggee process memory (they must have an address of `eAddressTypeLoad`
type).

Reviewers: teemperor, clayborg, jingham, zturner, labath, davide, spyffe, serge-sans-paille

Reviewed By: jingham

Subscribers: abidh, lldb-commits, leonid.mashinskiy

Tags: #lldb

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

llvm-svn: 353149
2019-02-05 09:14:36 +00:00
Davide Italiano 60731071de [Python2 to Python 3] Fix print -> print().
llvm-svn: 353130
2019-02-05 00:59:57 +00:00
Jonas Devlieghere c0f00a1f38 Update stale comment in lang/c/struct_types/main.c
rdar://47322760

llvm-svn: 353087
2019-02-04 20:33:35 +00:00
Pavel Labath e7404d99d2 Fixes for the ProcessLaunchInfo move
llvm-svn: 353049
2019-02-04 15:03:06 +00:00
Pavel Labath eef758e949 Move FileAction, ProcessInfo and ProcessLaunchInfo from Target to Host
Summary:
These classes describe the details of the process we are about to
launch, and so they are naturally used by the launching code in the Host
module. Previously they were present in Target because that is the most
important (but by far not the only) user of the launching code.

Since the launching code has other customers, must of which do not care
about Targets, it makes sense to move these classes to the Host layer,
next to the launching code.

This move reduces the number of times that Target is included from host
to 8 (it used to be 14).

Reviewers: zturner, clayborg, jingham, davide, teemperor

Subscribers: emaste, mgorny, lldb-commits

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

llvm-svn: 353047
2019-02-04 14:28:08 +00:00
Stefan Granitz da8fe66cb4 Fix the xcode build for r352845, attempt #2
llvm-svn: 352902
2019-02-01 19:31:02 +00:00
Stefan Granitz 5c49a3f4cc Revert "Fix the xcode build for r352845."
This reverts commit 72c1213a5e901b80c0f1d2794e5088d7f71a3632.

llvm-svn: 352901
2019-02-01 19:30:57 +00:00
Thomas Anderson 7ba2d3e872 [lldb] Relax libc++ ABI version checking
libc++ has programmable ABI versioning controllable with the _LIBCPP_ABI_VERSION
macro.  Currently there are at least 3 settings used in real systems (1 as the
default, ndk1 for Anroid, Cr for Chromium).

Only the 1 and ndk1 cases were handled.  This change relaxes the check to allow
any ABI version.

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

llvm-svn: 352899
2019-02-01 19:10:39 +00:00
Jim Ingham 5c6544409a Fix the xcode build for r352845.
llvm-svn: 352894
2019-02-01 18:26:08 +00:00
Aleksandr Urakov 2c15fc56f8 [PDB] Fix build after r352845
llvm-svn: 352858
2019-02-01 11:10:28 +00:00
Aleksandr Urakov 758657e565 [PDB] Fix location retrieval for function local variables and arguments that are
stored relative to VFRAME

Summary:
This patch makes LLDB able to retrieve proper values for function arguments and
local variables stored in PDB relative to VFRAME register.

Patch contains retrieval of corresponding FPO table entries from PDB and a
generic translator from FPO programs to DWARF expressions to get correct VFRAME
value.

Patch also improves variables-locations.test and makes this test passable on
x86.

Patch By: leonid.mashinsky

Reviewers: zturner, asmith, stella.stamenova, aleksandr.urakov

Reviewed By: zturner

Subscribers: arphaman, labath, mgorny, aprantl, JDevlieghere, lldb-commits

Tags: #lldb

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

llvm-svn: 352845
2019-02-01 10:01:18 +00:00
Jonas Devlieghere 043ff33362 [unittest] Fix scalar unit test.
The test was using ASSERT_EQ instead of ASSERT_STREQ which meant we were
comparing string addresses instead of the actual string. This caused the
test to fail with with the sanitizers enabled.

llvm-svn: 352780
2019-01-31 18:48:17 +00:00
Shafik Yaghmour d03bf06883 Fix use of non-existing variable in crashlog.py
Summary:
The method find_matching_slice(self) uses uuid_str on one of the paths but the variable does not exist and so this results in a NameError exception if we take that path.

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

llvm-svn: 352772
2019-01-31 17:33:17 +00:00
David Carlier 4fda0720fe [LLDB] FreeBSD suppress compilation warning
Reviewers: labath, teemperor

Reviewed By: teemperor

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

M    source/Plugins/Process/FreeBSD/ProcessMonitor.cpp

llvm-svn: 352744
2019-01-31 11:54:58 +00:00
Petr Hosek 12062e0667 Revert "[CMake] Unify scripts for generating VCS headers"
This reverts commits r352729 and r352731: this broke Sanitizer Windows bots

llvm-svn: 352733
2019-01-31 07:12:43 +00:00
Petr Hosek 08c60c1894 [CMake] Migrate lldb to the new VCS script
This was accidentaly omitted from r352729 and broke lldb bots.

llvm-svn: 352731
2019-01-31 06:47:10 +00:00
Davide Italiano 46138cdb0d [testsuite] Fix TestAppleSimulator so that it works with Python 3.
llvm-svn: 352710
2019-01-31 01:17:47 +00:00
Davide Italiano 699bc17953 [Python] Fix gdb-remote and lldb-server utilities to work with Py3.
llvm-svn: 352709
2019-01-31 01:01:53 +00:00
Davide Italiano 96497da4ae [Python] Python 2 and Python 3 disagree on `/`.
One considers it integer division, the other doesn't.
Move to `//` (floor division) so that this test passes
independently from the version.

llvm-svn: 352706
2019-01-31 00:43:36 +00:00
Jonas Devlieghere 41287d511c Add Sphinx generated html files as output to the build phase.
This will ensure we don't rerun Sphinx when the files exist.

llvm-svn: 352703
2019-01-31 00:40:38 +00:00
Davide Italiano 0d298f5af5 [Python] String(s) and bytes are two different entities in 3.7.
So, we need an explicit call to decode() here to let it work with
both interpreters. Fixes TestXMMRegisters on 3.7.

llvm-svn: 352701
2019-01-31 00:11:33 +00:00
Jonas Devlieghere 732f455386 Add lldb-docs target to Xcode project
This patch adds the lldb-docs target which generates the Sphinx html
documentation.

llvm-svn: 352696
2019-01-30 23:56:55 +00:00
Shafik Yaghmour 1849dd4acc Fix handling of CreateTemplateParameterList when there is an empty pack
Summary:
When we are creating a ClassTemplateSpecializationDecl in ParseTypeFromDWARF(...) we are not handling the case where variadic pack is empty in the specialization. This patch handles that case and adds a test to prevent future regressions.

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

llvm-svn: 352677
2019-01-30 21:48:56 +00:00
Jonas Devlieghere edb874b231 Add LLDB website and documentation in reStructuredText for Sphinx
The current LLDB website is written in HTML which is hard to maintain.
We have quite a bit of HTML code checked in which can make it hard to
differentiate between documentation written by us and documentation
generated by a tool.

In line with the other LLVM projects, I propose generating the
documentation with Sphix. I think text/rst files provide a lower barrier
for new or casual contributors to fix or update.

This patch adds a copy of the LLDB website and documentation in
reStructuredText. It also adds a new ninja target `docs-lldb-html` when
-DLLVM_ENABLE_SPHINX:BOOL is enabled.

This is the first step in having the website and documentation being
generated from the repository, rather than having the output checked-in
under the www folder. During the hopefully short transition period,
please also update the reStructuredText files when modifying the
website.

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

llvm-svn: 352644
2019-01-30 18:51:40 +00:00
Davide Italiano 042f770738 [Scalar] Remove partially wrong and unused functions.
I originally thought about fixing them, but hey, nobody is
using them anyway.

llvm-svn: 352643
2019-01-30 18:40:05 +00:00
Davide Italiano 92a470edce [Scalar] Hoist a duplicated (and sometimes wrong) comment.
Pointed out by Zachary and Adrian.

llvm-svn: 352641
2019-01-30 18:24:16 +00:00
Davide Italiano 51d46bd4d2 [Scalar] Implement support for 512-bit values.
(useful, e.g. when reading 512-bits registers, a-la AVX-512).

<rdar://problem/46886288>

llvm-svn: 352639
2019-01-30 18:05:36 +00:00
Stefan Granitz f4283858fa [CMake] Accept entitlements for code signing in add_lldb_library()
Summary:
D57334 added entitlements support in `add_llvm_library()` so we can use it for library targets in LLDB.

Additionally this patch fixes the way that the entitlements argument is passed on from `add_lldb_executable()` to `add_llvm_executable()`. We still need the explicit parsing and passing on of single- and multi-value arguments as long as we are on CMake < 3.7 (due to bug https://gitlab.kitware.com/cmake/cmake/merge_requests/133).

Reviewers: beanz, JDevlieghere, aprantl

Reviewed By: JDevlieghere

Subscribers: mgorny, lldb-commits, #lldb

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

llvm-svn: 352629
2019-01-30 15:13:16 +00:00
Jonas Devlieghere 61d35249b1 Add FileCollector + test to Xcode project.
llvm-svn: 352570
2019-01-29 23:48:53 +00:00
Zachary Turner 52f8f34377 Fix some warnings in building LLDB.
Differential Revision: https://reviews.llvm.org/D57413

llvm-svn: 352557
2019-01-29 22:55:21 +00:00
Jonas Devlieghere 7d2192ca7b [test] Use correct macro in FileCollectorTest.cpp
This test was supposed to be skipped on Windows but was using the wrong
macro name.

llvm-svn: 352556
2019-01-29 22:53:47 +00:00
Adrian Prantl d55102a190 Make a blind attempt at fixing PDBASTParser nullability issues
llvm-svn: 352548
2019-01-29 21:46:34 +00:00
Jonas Devlieghere 46575176e9 [Reproducers] Add file provider
This patch adds the file provider which is responsible for capturing
files used by LLDB.

When capturing a reproducer, we use a file collector that is very
similar to the one used in clang. For every file that we touch, we add
an entry with a mapping from its virtual to its real path. When we
decide to generate a reproducer we copy over the files and their
permission into to reproducer folder.

When replaying a reproducer, we load the VFS mapping and instantiate a
RedirectingFileSystem. The latter will transparently use the files
available in the reproducer.

I've tested this on two macOS machines with an artificial example.
Still, it is very likely that I missed some places where we (still) use
native file system calls. I'm hoping to flesh those out while testing
with more advanced examples. However, I will fix those things in
separate patches.

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

llvm-svn: 352538
2019-01-29 20:36:38 +00:00