Commit Graph

20497 Commits

Author SHA1 Message Date
Raphael Isemann 0ba85fdb4f [lldb][NFC] Remove useless cursor shifting in Options::HandleOptionCompletion
The cursor position is always at the end of the current argument (as the
argument cut off after the cursor position). So this code is a no-op and
can be removed.

llvm-svn: 372851
2019-09-25 12:04:48 +00:00
Hans Wennborg 4d23bd528c Revert r372788 "Host: use the platform identifiers from LLVM (NFC)"
> Use symbolic constants for the platform identifiers rather than replicating them
> locally.

This broke the build of LLDB on Windows, see
http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/9182 which
fails with e.g.

  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(96): error C2059: syntax error: 'constant'
  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(96): error C3805: 'constant': unexpected token, expected either '}' or a ','
  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(128): error C2059: syntax error: 'constant'
  ...

llvm-svn: 372847
2019-09-25 11:55:16 +00:00
Michal Gorny b73e3ca39a [lldb] [test] Add NetBSD to XFAIL list for thread_local test
llvm-svn: 372840
2019-09-25 10:18:38 +00:00
Raphael Isemann 1b16b94eef [lldb] Test data formatters for empty strings
llvm-svn: 372837
2019-09-25 10:07:23 +00:00
Raphael Isemann 4ca5180d7a [lldb][NFC] Refactor and document *DumpToStreamOptions
Those two classes were mostly copy-pasted.

llvm-svn: 372836
2019-09-25 09:56:23 +00:00
Michal Gorny 7efca81f7d [lldb] [cmake] Fix installing Python modules on systems using /usr/lib
Fix installing Python modules on systems that use /usr/lib for Python
while installing other libraries in /usr/lib64.  Rewrite CMake logic
to query correct directories from Python, similarly to how
prepare_binding_Python.py does it.  Furthermore, change the regex used
in get_relative_lib_dir.py to allow 'lib' without suffix.

I think that the code can be further improved but I'd like to take
this enterprise in smaller steps in case one of them breaks something.

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

llvm-svn: 372835
2019-09-25 09:47:35 +00:00
Raphael Isemann 286860986e [lldb][NFC] Remove unused method chaining from Read[Buffer/String]AndDumpToStreamOptions
All this code isn't used anywhere and method chaining isn't really useful for some
option struct.

llvm-svn: 372834
2019-09-25 09:21:00 +00:00
Raphael Isemann 436d9881a9 [lldb][NFC] Use default member initializers in ReadBufferAndDumpToStreamOptions
llvm-svn: 372830
2019-09-25 08:55:55 +00:00
Raphael Isemann e5ff8919c4 [lldb] Remove -nostdlib++ flag from import-std-module/sysroot test
That flag was introduced in Clang 6.0, so this made the test fail
with Clang <= 5.0. As it only influences linking builtin libraries
like -m which aren't relevant for this test, we can drop this flag.

llvm-svn: 372827
2019-09-25 08:32:25 +00:00
Raphael Isemann 06e98a8f40 [lldb] Fix undefined behavior when having fixits in undefined top level exprs
In top level expressions, we don't have a m_source_code and we don't need to change
the source bounds (as no wrapping happend there). Fixes the test on the
sanitizer bot.

llvm-svn: 372817
2019-09-25 07:34:56 +00:00
Raphael Isemann bf5e5834d9 [lldb][NFC] Refactor TestCallBuiltinFunction
Using asserts doesn't print a useful error message in case this test fails.

llvm-svn: 372815
2019-09-25 07:11:37 +00:00
Jonas Devlieghere 03f2a11cf7 [Make] Revert some changes from r372795.
These changes cause the corresponding test to fail on the Linux bots.

llvm-svn: 372801
2019-09-25 01:39:13 +00:00
Jonas Devlieghere 4d4a8eed06 remove unused method ResetOutputFileHandle()
ResetOutputFileHandle() isn't being used by anything. Also it's using
FILE*, which is something we should be doing less of. Remove it.

Patch by: Lawrence D'Anna

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

llvm-svn: 372800
2019-09-25 01:29:41 +00:00
Jonas Devlieghere db90b39099 [CMake] Don't modify LLVM_DISTRIBUTION_COMPONENTS if it's not set
Don't try to remove debugserver from LLVM_DISTRIBUTION_COMPONENTS if the
list is not set.

llvm-svn: 372799
2019-09-25 01:23:05 +00:00
Jonas Devlieghere 4cd71260c2 [Documentation] Expand on testing variants.
The testing documentation appears to be from an era when the only kind
of tests were the lldbsuite python tests. This patch adds a short
description of the unittests and LIT tests and how to run them.

Patch by: Lawrence D'Anna

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

llvm-svn: 372797
2019-09-25 00:58:39 +00:00
Adrian Prantl 5c4c9e6172 Canonicalize variable usage in testsuite Makefiles
This test streamlines our use of variables that are expected by
Makefile.rules throughout the test suite. Mostly it replaced
potentially dangerous overrides and updates of variables like CFLAGS
with safe assignments to variables reserved for this purpose like
CFLAGS_EXTRAS.

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

llvm-svn: 372795
2019-09-25 00:36:00 +00:00
Jonas Devlieghere 24f6317634 [CMake] Don't try to install the system debugserver.
The custom target for the system debugserver has no install target, so
we need to remove it from the LLVM_DISTRIBUTION_COMPONENTS list.

llvm-svn: 372793
2019-09-25 00:21:31 +00:00
Saleem Abdulrasool 56eae602da Host: use the platform identifiers from LLVM (NFC)
Use symbolic constants for the platform identifiers rather than replicating them
locally.

llvm-svn: 372788
2019-09-24 22:55:44 +00:00
Jonas Devlieghere cb4cda2d45 [CMake] Copy over the system debugserver when using LLDB_USE_SYSTEM_DEBUGSERVER
r366433 broke support for the system debugserver. Although the change
was well-intended, it (presumably) unintentionally removed the logic to
copy over the debugserver. As a result, even with
LLDB_USE_SYSTEM_DEBUGSERVER enabled, we ended up building, signing and
using the just-built debugserver.

This patch partially recovers the old behavior: when
LLDB_USE_SYSTEM_DEBUGSERVER is set we don't build debugserver and just
copy over the system one.

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

llvm-svn: 372786
2019-09-24 22:39:04 +00:00
Jonas Devlieghere 7de14dc3c6 [unittest] Skip the socket tests if we $TMPDIR is too long.
Adrian added a sanity check to the socket tests to ensure the $TMPDIR is
not too long for a socket. While this is great for diagnosing the
problem it doesn't really solve the problem for environment where you
have no control over that variable such as in CI. I propose to just skip
the test in that case similar to what we do for tests that rely on
targets that are not currently build, etc.

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

llvm-svn: 372774
2019-09-24 19:34:50 +00:00
Tatyana Krasnukha 5a4355324e [NFC] Fix typo in the "kind" description for the software single-step breakpoint
llvm-svn: 372763
2019-09-24 14:24:52 +00:00
Michal Gorny a292a4943b [lldb] [Process/NetBSD] Fix handling LLDB_INVALID_SIGNAL_NUMBER
Fix NativeProcessNetBSD::Resume() to handle LLDB_INVALID_SIGNAL_NUMBER
correctly.  Fixes breakage caused by r372090 and r372300.  I have major
rewrite of that function pending; however, the fixes to gdb-remote
were committed prior to that.

llvm-svn: 372755
2019-09-24 13:41:54 +00:00
Pavel Labath 13a4e8f3ef Enhance SymbolFileDWARF::ParseDeclsForContext performance
This implements
DWARFASTParserClang::EnsureAllDIEsInDeclContextHaveBeenParsed so as to
provide a faster way to ensure all DIEs linked to a certain declaration
context have been parsed.

Currently, we rely on SymbolFileDWARF::ParseDeclsForContext calling
DWARFASTParserClang::GetDIEForDeclContext, and only then
DWARFASTParserClang::GetDeclForUIDFromDWARF. This change shortcuts that
logic and removes redundant calls to DWARFASTParserClang::
GetClangDeclForDIE by deleting DIEs from the m_decl_ctx_to_die map once
they have been parsed.

Differential Revision: https://reviews.llvm.org/D67760
Patch by Guilherme Andrade <guiandrade@google.com>.

llvm-svn: 372744
2019-09-24 12:36:54 +00:00
Martin Storsjo 544c8f48c8 [LLDB] Add tests for PECOFF arm architecture identification
Add a test case for the change from SVN r372657, and for the
preexisting ARM identification.

Add a missing ArchDefinitionEntry for PECOFF/arm64, and tweak
the ArmNt case to set the architecture to armv7 (ArmNt never ran
on anything lower than that). (This avoids a case where
ArchSpec::MergeFrom would override the arch from arm to armv7 and
ArchSpec::CoreUpdated would reset the OS to unknown at the same time.)

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

llvm-svn: 372741
2019-09-24 12:20:52 +00:00
Martin Storsjo 5bb1525392 [LLDB] [test] Allow differing order of some matches
These can appear in a different order depending on the relative
layout of the source and build trees.

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

llvm-svn: 372740
2019-09-24 12:20:38 +00:00
Martin Storsjo 79b76f0ce1 [LLDB] [test] Add a few missing cases of REQUIRES: python
Differential Revision: https://reviews.llvm.org/D67952

llvm-svn: 372739
2019-09-24 12:20:33 +00:00
Martin Storsjo e37b882421 [LLDB] Fix typo in RegisterContextDarwin_arm64
In these cases, the register number should be calculated from
fpu_d0, not fpu_s0.

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

llvm-svn: 372738
2019-09-24 12:20:21 +00:00
Raphael Isemann 1a2805b887 [lldb] Also force posix paths in CppModuleConfigurationTest
llvm-svn: 372737
2019-09-24 12:13:35 +00:00
Raphael Isemann fa4a2a9152 [lldb][NFC] Use default member initializers in ReadStringAndDumpToStreamOptions
llvm-svn: 372736
2019-09-24 12:01:15 +00:00
Raphael Isemann 08f90e3d57 [lldb] Use convert_to_slash in CppModuleConfiguration
That's what we actually want to do. Might fix the Windows bot.

llvm-svn: 372729
2019-09-24 11:17:38 +00:00
Raphael Isemann 6bac09afe8 [lldb][NFC] Use llvm::StringRef in formatters::NSStringSummaryProvider
llvm-svn: 372724
2019-09-24 11:00:37 +00:00
Raphael Isemann 9379d19ff8 [lldb] Decouple importing the std C++ module from the way the program is compiled
Summary:
At the moment, when trying to import the `std` module in LLDB, we look at the imported modules used in the compiled program
and try to infer the Clang configuration we need from the DWARF module-import. That was the initial idea but turned out to
cause a few problems or inconveniences:

* It requires that users compile their programs with C++ modules. Given how experimental C++ modules are makes this feature inaccessible
for many users. Also it means that people can't just get the benefits of this feature for free when we activate it by default
(and we can't just close all the associated bug reports).
* Relying on DWARF's imported module tags (that are only emitted by default on macOS) means this can only be used when using DWARF (and with -glldb on Linux).
* We essentially hardcoded the C standard library paths on some platforms (Linux) or just couldn't support this feature on other platforms (macOS).

This patch drops the whole idea of looking at the imported module DWARF tags and instead just uses the support files of the compilation unit.
If we look at the support files and see file paths that indicate where the C standard library and libc++ are, we can just create the module
configuration this information. This fixes all the problems above which means we can enable all the tests now on Linux, macOS and with other debug information
than what we currently had. The only debug information specific code is now the iteration over external type module when -gmodules is used (as `std` and also the
`Darwin` module are their own external type module with their own files).

The meat of this patch is the CppModuleConfiguration which looks at the file paths from the compilation unit and then figures out the include paths
based on those paths. It's quite conservative in that it only enables modules if we find a single C library and single libc++ library. It's still missing some
test mode where we try to compile an expression before we actually activate the config for the user (which probably also needs some caching mechanism),
but for now it works and makes the feature usable.

Reviewers: aprantl, shafik, jdoerfert

Reviewed By: aprantl

Subscribers: mgorny, abidh, JDevlieghere, lldb-commits

Tags: #c_modules_in_lldb, #lldb

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

llvm-svn: 372716
2019-09-24 10:08:18 +00:00
Raphael Isemann 75c57b587d [lldb][NFC] Relax completion tests for log command to make them pass on Linux
The log channels change depending on platform, so listing them breaks on
some platforms. Let's just check that the 'lldb' and 'dwarf' channels are
there which are independent of platform.

llvm-svn: 372701
2019-09-24 08:41:10 +00:00
Martin Storsjo 3abbd43a59 [LLDB] Avoid warnings about redefining posix mode defines on MinGW
Since these defines were added in LLVM SVN r189364 in 2013,
mingw-w64 got defines for S_I?GRP, S_IRWXG, S_I?OTH and S_IRWXO
in 2015.

Also change the existing defined(_MSC_VER) into ifndef S_IRUSR, for
consistency.

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

llvm-svn: 372700
2019-09-24 08:39:12 +00:00
Martin Storsjo 02dddfd2ae [LLDB] [Windows] Add missing ifdefs to fix building for non-x86 architectures
While debugging on those architectures might not be supported yet,
the generic code should still be buildable. This file accesses x86
specific fields in the CONTEXT struct.

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

llvm-svn: 372699
2019-09-24 08:39:06 +00:00
Raphael Isemann 8126340b3f [lldb] Fix log output and UtilityTests/LogChannelTest.List
I refactored this code in 372691 and it seems I didn't fully
replicate the original log output, so that test was failing.

llvm-svn: 372696
2019-09-24 08:20:05 +00:00
Raphael Isemann ef06dd4328 [lldb] Remove redundant argument lists in CompletionRequest
We currently have two lists in the CompletionRequest that we
inherited from the old API: The complete list of arguments ignoring
where the user requested completion and the list of arguments that
stops at the cursor. Having two lists of arguments is confusing
and can lead to subtle errors, so let's remove the complete list
until we actually need it.

llvm-svn: 372692
2019-09-24 07:22:44 +00:00
Raphael Isemann 6ba63d8851 [lldb] Add completion support for log enable/disable/list
Reviewers: #lldb, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: JDevlieghere, lldb-commits

Tags: #lldb

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

llvm-svn: 372691
2019-09-24 07:18:09 +00:00
Raphael Isemann bd2a910a63 Ignore generated @import statements in the expression evaluator
Summary:
The ClangModulesDeclVendor is currently interpreting all injected `@import` statements in our expression
wrapper as modules that the user has explicitly requested to be persistently loaded. As we inject
`@import` statements with our std module prototype, the ClangModulesDeclVendor will start compiling
and loading unrelated C++ modules because it thinks the user has requested that it should load them. As
the ClangModulesDeclVendor is lacking the setup to compile these modules (e.g. it lacks the include paths),
it will then actually just fail to compile them and cause the whole expression evaluation to fail. This causes
these tests to fail on systems that enable the ClangModulesDeclVendor (such as macOS).

This patch fixes this by preventing the ClangModulesDeclVendor from interpreting `@import` statements
in the wrapper source code. This is done by check if the import happens in the fake source file containing
our wrapper code (which implies it was generated by LLDB).

This patch doesn't reenable the tests as there is more work needed to get the tests running on macOS (D67760)

Reviewers: aprantl, shafik, jingham

Subscribers: lldb-commits

Tags: #c_modules_in_lldb, #lldb

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

llvm-svn: 372690
2019-09-24 06:58:39 +00:00
Adrian Prantl c41dba9929 Adapt test to upstream clang compiler changes.
Clang now emits the correct C++ language version in DWARF.

llvm-svn: 372677
2019-09-24 00:27:13 +00:00
Jonas Devlieghere 1cefad10cf [Make] Add support for building NeXT-style frameworks
This patch extends the Makefile.rules to build NeXT-style frameworks. It
also fixes a bug in the clean logic that would accidentally delete the
.mm source file instead of the .o object file.

Thanks a lot to Adrian who was instrumental is getting this to work!

llvm-svn: 372669
2019-09-23 22:31:16 +00:00
Martin Storsjo e64849b11e [LLDB] [Windows] Map COFF ARM machine ids to the right triple architectures
Differential Revision: https://reviews.llvm.org/D67913

llvm-svn: 372658
2019-09-23 20:43:22 +00:00
Martin Storsjo 638f072f87 [LLDB] [PECOFF] Recognize arm64 executables
Differential Revision: https://reviews.llvm.org/D67912

llvm-svn: 372657
2019-09-23 20:43:16 +00:00
Martin Storsjo c98bb8658e [LLDB] Rework a MinGW build fix from D65691
That change didn't contain any explanation for this bit. There shouldn't
be any need for a check for MinGW ifdefs here, as long as the include
uses lowercase windows.h (as is used consistently elsewhere in
the llvm projects).

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

llvm-svn: 372656
2019-09-23 20:43:11 +00:00
Jonas Devlieghere 948786c929 File::SetDescriptor() should require options
lvm_private::File::GetStream() can fail if m_options == 0

It's not clear from the header a File created with a descriptor will be
not be usable by many parts of LLDB unless SetOptions is also called,
but it is.

This is because those parts of LLDB rely on GetStream() to use the
file, and that in turn relies on calling fdopen on the descriptor. When
calling fdopen, GetStream relies on m_options to determine the access
mode. If m_options has never been set, GetStream() will fail.

This patch adds options as a required argument to File::SetDescriptor
and the corresponding constructor.

Patch by: Lawrence D'Anna

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

llvm-svn: 372652
2019-09-23 20:36:46 +00:00
Jonas Devlieghere a7d186c796 [Host] File::GetWaitableHandle() should call fileno()
If the file has m_stream, it may not have a m_descriptor.
GetWaitableHandle() should call GetDescriptor(), which will call
fileno(), so it will get waitable descriptor whenever one is available.

Patch by: Lawrence D'Anna

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

llvm-svn: 372644
2019-09-23 19:34:26 +00:00
Jonas Devlieghere 869ef0a627 [ABISysV] Fix regression for Simulator and MacABI
The ABISysV ABI was refactored in r364216 to support the Windows ABI for
x86_64. In particular it changed ABISysV_x86_64::CreateInstance to
switch on the OS type. This breaks debugging MacABI apps as well as apps
in the simulator. This adds back the necessary cases.

We have a test on Github that exercises this code path and which I'd
like to upstream once the remaining MacABI parts become available in
clang.

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

llvm-svn: 372642
2019-09-23 19:06:00 +00:00
Stella Stamenova 1962122c4d [lldb-suite] TestCallOverriddenMethod.py is now passing on Windows
The test is now passing, so remove the expected failure. No other tests associated with the bug are passing, though, so only remove expected failure from this one test

llvm-svn: 372634
2019-09-23 17:51:27 +00:00
Konrad Kleine c45fe95e97 [LLDB] Fix logically dead code
Summary:
The indicated dead code may have performed some action; that action will never occur.

In lldb_private::LoadedModuleInfoList::LoadedModuleInfo::operator ==(lldb_private::LoadedModuleInfoList::LoadedModuleInfo const &): Code can never be reached because of a logical contradiction (CWE-561)

Coverity Scan: https://scan.coverity.com/projects/kwk-llvm-project?tab=overview

CID 221581

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 372608
2019-09-23 14:05:51 +00:00
Martin Storsjo 8b98f12a7a [LLDB] Check for _WIN32 instead of _MSC_VER for code specific to windows in general
These ifdefs contain code that isn't specific to MSVC but useful for
any windows target, like MinGW.

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

llvm-svn: 372592
2019-09-23 12:03:56 +00:00