Commit Graph

19817 Commits

Author SHA1 Message Date
Raphael Isemann c89a3d78f4 [lldb][NFC] Format 'type' commands in Options.td
llvm-svn: 366426
2019-07-18 11:43:45 +00:00
Raphael Isemann 0cadf7bb2e [lldb] Tablegenify thread commands and fix completion bug for thread step-*
Beside turning the options into the new tablegen format, this patch
also fixes that a few commands had source file completions for the
"count" and "end-linenumber" arguments (which both accepted only
integers). Reason for that are that somehow we added a '1' instead
of our usual '0' value to the initial value for completion.

llvm-svn: 366425
2019-07-18 11:12:00 +00:00
Raphael Isemann beadf7d0ae [lldb][NFC] Tablegenify type commands
llvm-svn: 366415
2019-07-18 08:22:19 +00:00
Raphael Isemann ce8df1f41d [lldb] Don't double emit option groups
We currently emit the option groups twice if Groups<[1,2,3]> is
used in the tablegen. This leads to compilation errors. This
patch just removes the line that accidentially emits the option
group a second time.

llvm-svn: 366414
2019-07-18 08:22:11 +00:00
Nathan Lanza bd3e74c73d Only build lldb-tblgen if it's not a current target
Summary:
When doing standalone builds, you could potentially be building against
an llvm which also built lldb. If this were the case, you'd be
attempting to build this target twice.

Reviewers: xiaobai

Subscribers: mgorny

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

llvm-svn: 366394
2019-07-18 01:26:53 +00:00
Nathan Lanza 0c6ad3d5d1 [cmake] Add NATIVE build for cross compiling standalone builds
TableGen is a host tool and requires a native variant for every build.
While building as a part of llvm this is trivial and llvm handles it.
However, building standalone means that lldb has to handle this itself.
Add a NATIVE build variant to enable this.

llvm-svn: 366392
2019-07-18 00:21:57 +00:00
Adrian McCarthy 3628a8fae9 [NFC] Clarify a Cmake status message regarding Python on LLDBConfig
llvm-svn: 366383
2019-07-17 22:36:26 +00:00
Jason Molenda 1375659e0f Ah, forgot a debug line I left in the dsym-for-uuid.sh script
to make sure it was correctly being disabled after this test
case completed.

llvm-svn: 366381
2019-07-17 21:55:39 +00:00
Jason Molenda be4be6120f Add support to ProcessMachCore::DoLoadCore to handle an EFI UUID str.
If a core file has an EFI version string which includes a UUID
(similar to what it returns for the kdp KDP_KERNELVERSION packet)
in the LC_IDENT or LC_NOTE 'kern ver str' load command.  In that
case, we should try to find the binary and dSYM for the UUID
listed.  The dSYM may have python code which knows how to relocate
the binary to the correct address in lldb's target section load
list and loads other ancillary binaries.

The test case is a little involved,

1. it compiles an inferior hello world apple (a.out),
2. it compiles a program which can create a corefile manually
   with a specific binary's UUID encoded in it,
3. it gets the UUID of the a.out binary,
4. it creates a shell script, dsym-for-uuid.sh, which will
   return the full path to the a.out + a.out.dSYM when called
   with teh correct UUID,
5. it sets the LLDB_APPLE_DSYMFORUUID_EXECUTABLE env var before
   creating the lldb target, to point to this dsym-for-uuid.sh,
6. runs the create-corefile binary we compiled in step #2,
7. loads the corefile from step #6 into lldb,
8. verifies that lldb loaded a.out by reading the LC_NOTE
   load command from the corefile, calling dsym-for-uuid.sh with
   that UUID, got back the path to a.out and loaded it.

whew!

<rdar://problem/47562911>

llvm-svn: 366378
2019-07-17 21:44:05 +00:00
Shafik Yaghmour a0858e2f20 Fix CreateFunctionTemplateSpecialization to prevent dangling poiner to stack memory
In ClangASTContext::CreateFunctionTemplateSpecializationInfo a TemplateArgumentList is allocated on the stack but is treated as if it is persistent in subsequent calls. When we exit the function func_decl will still point to the stack allocated memory. We will use TemplateArgumentList::CreateCopy instead which will allocate memory out of the DeclContext.

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

llvm-svn: 366365
2019-07-17 20:16:13 +00:00
Jonas Devlieghere c2cd84bcfb [docs] Adjust variable formatting table
While the in-place hints on valid formats are up to date (e.g. when
choosing an invalid format expr -f nonExisting -- 42), the corresponding
online docs table is not. The formats "address", "hex float",
"instruction" and "void" are missing, and "decimal" refers to an
outdated abbreviation 'i' instead of 'd'.

Patch by: Lukas Böger

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

llvm-svn: 366364
2019-07-17 19:49:01 +00:00
Jonas Devlieghere e37750b934 [CMake] Remove duplicated logic to find Python when doing a standalone build
I'm pretty sure there's no need to have this logic living in
LLDBStandalone. It doesn't appear anything in LLVM depends on this, and
We always go through LLDBConfig.cmake which has the canonical way to
find the Python libs and interpreter for LLDB.

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

llvm-svn: 366363
2019-07-17 19:36:20 +00:00
Jonas Devlieghere ca12cb9482 [CMake] Use LLVM_DIR and Clang_DIR for standalone builds.
When doing a standalone build, without setting LLDB_PATH_TO_LLVM_BUILD
or LLDB_PATH_TO_CLANG_BUILD, you get the following error.

```
CMake Error at cmake/modules/LLDBStandalone.cmake:23 (find_package):
  Could not find a package configuration file provided by "LLVM" with any of
  the following names:

    LLVMConfig.cmake
    llvm-config.cmake

  Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set
  "LLVM_DIR" to a directory containing one of the above files.  If "LLVM"
  provides a separate development package or SDK, be sure it has been
  installed.
```

This suggests setting LLVM_DIR to LLVM's install directory. However,
LLDBStandalone.cmake takes LLDB_PATH_TO_LLVM_BUILD as its hint. As
someone who isn't familiar with the standalone process, this is rather
confusing. This patch removes LLDB_PATH_TO_LLVM_BUILD and
LLDB_PATH_TO_CLANG_BUILD and instead use LLVM_DIR and Clang_DIR
respectively.

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

llvm-svn: 366362
2019-07-17 19:24:15 +00:00
Jonas Devlieghere f90d3dff6e [dotest] Disable color while testing.
Disable colors so we don't risk having unexpected ANSI codes in the test
output. Currently, the behavior of a test can change depending on
whether it's run under a color-supporting terminal, or under a dummy
terminal, for example when using lit or multiprocessing.

llvm-svn: 366356
2019-07-17 17:56:57 +00:00
Jonas Devlieghere dce1954f45 [Test] Add module cache for TestWeakSymbols
Explicitly set the module cache in the Makefile with
-fmodules-cache-path.

llvm-svn: 366352
2019-07-17 17:22:29 +00:00
Stefan Granitz ee24b40b9e [CMake] Avoid liblldb genex when figuring out the copy destination for framework tools
This genex created an order-only dependency to liblldb for every framework tool. It reduced build throughput in the first half of the compilation and pulled in unnecessary build units, e.g. debugserver required ~900 build units. With this change debugserver is (again) down at 52 build units!

llvm-svn: 366350
2019-07-17 17:14:40 +00:00
Raphael Isemann 3fce6b5da1 [lldb] Make log for ClangModulesDeclVendor's compiler flag less verbose
Summary:
Currently the ClangModulesDeclVendor is spamming the expression log with the compiler flags it is using, which creates a log that looks like this:

```
clang

 -fmodules

 -fimplicit-module-maps
```

This patch removes all these newlines and just prints the compiler flags in one line as you see in the command line:

```
clang -fmodules -fimplicit-module-maps [...]
```

Reviewers: shafik, davide

Reviewed By: davide

Subscribers: davide, abidh, lldb-commits

Tags: #lldb

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

llvm-svn: 366347
2019-07-17 16:51:16 +00:00
Jonas Devlieghere 7f24757b8e [CMake] Move standalone check so we don't have to reconfigure LLDB
By moving the standalone check into the main CMake file, the whole file
is ignored in a regular (non-standalone) build. This means that you can
make changes to LLDBStandalone.cmake without having to reconfigure a
build in a different directory. This matters when you share one source
repository with different build directories (e.g. release-assert, debug,
standalone).

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

llvm-svn: 366346
2019-07-17 16:47:02 +00:00
Nathan Lanza 3b96ebeee4 [NativePDB] Add a FromCompilerDecl for going from lldb -> clang
Summary:
A common transformation in NativePDB is to go from lldb types to clang
types and vice versa. This function automates one of those steps.

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

llvm-svn: 366345
2019-07-17 16:43:36 +00:00
Gabor Marton aefcf5100a [ASTImporter] Fix LLDB lookup in transparent ctx and with ext src
Summary:
With LLDB we use localUncachedLookup(), however, that fails to find
Decls when a transparent context is involved and the given DC has
external lexical storage.  The solution is to use noload_lookup, which
works well with transparent contexts.  But, we cannot use only the
noload_lookup since the slow case of localUncachedLookup is still needed
in some other cases.

These other cases are handled in ASTImporterLookupTable, but we cannot
use that with LLDB since that traverses through the AST which initiates
the load of external decls again via DC::decls().

We must avoid loading external decls during the import becuase
ExternalASTSource is implemented with ASTImporter, so external loads
during import results in uncontrolled and faulty import.

Reviewers: shafik, teemperor, jingham, clayborg, a_sidorin, a.sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits, lldb-commits

Tags: #clang, #lldb

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

llvm-svn: 366325
2019-07-17 13:47:46 +00:00
Raphael Isemann 60bd7a9c13 [lldb][NFC] Tablegenify watchpoint commands
Part of the project that migrates these struct initializers to our
new lldb-tablegen.

llvm-svn: 366316
2019-07-17 11:48:29 +00:00
Alex Langford fc1c8f5d7d [Target][NFCI] Remove commented out code
llvm-svn: 366295
2019-07-17 07:13:42 +00:00
Nathan Lanza 06bf5d8538 [NativePDB] Make GetTranslationUnitDecl return an lldb CompilerDeclCtx
Summary:
We intend to make PdbAstBuilder abstract and implement
PdbAstBuilderClang along with any other languages that wish to use
PDBs. This is the first step.

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

llvm-svn: 366293
2019-07-17 07:05:49 +00:00
Alex Langford e574f8b3d8 [Target][NFCI] Rename variable
This variable doesn't have anything to do with clang.

llvm-svn: 366292
2019-07-17 07:03:17 +00:00
Nathan Lanza 98a48794ec Don't require python exe and lib versions to match while crosscompiling
Summary:
While cross compiling, the python executable is used to run a handful
of scripts while the libraries are linked and headers are included.
Theoretically it's possible for the versions to match completely, but
requiring the build to match 2.7.10 to 2.7.15 is unnecessary.

Subscribers: mgorny

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

llvm-svn: 366285
2019-07-16 23:54:17 +00:00
Nathan Lanza e71679082c add a workaround in GetLine to account for ReadFile not reporintg error
Summary:
ReadFile on Windows is supposed to set ERROR_OPERATION_ABORTED according
to the docs on MSDN. However, this has evidently been a known bug since
Windows 8. Therefore, we can't detect if a signal interrupted in the
fgets. So pressing ctrl-c causes the repl to end and the process to
exit. A temporary workaround is just to attempt to fgets twice until
this bug is fixed.

A possible alternative would be to set a flag in the `sigint_handler`
and simply check that flag in the true part of the if statement.
However, signal handlers on Windows are asynchronous and this would
require sleeping on the repl loop thread while still not necessarily
guarnateeing that you caught the sigint.

Reviewers: jfb

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

llvm-svn: 366281
2019-07-16 23:01:59 +00:00
Alex Langford 0e534de4fe [Symbol] Remove unused fields from ClangASTContext
llvm-svn: 366261
2019-07-16 21:05:08 +00:00
Reid Kleckner 1d58c1d9d6 Fix LLDB Windows build Python version logic after r366243
llvm-svn: 366247
2019-07-16 18:46:51 +00:00
Jonas Devlieghere 5826ab6b0c [CMake] Fail when Python interpreter doesn't match Python libraries version
Because of how CMake finds the Python libraries and interpreter, it's
possible to end up with a discrepancy between the two. For example,
you'd end up using a Python 3 interpreter to run the test suite while
LLDB was built and linked against Python 2.

This patch adds a fatal error to CMake so we find out at configuration
time, instead of finding out at test time.

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

llvm-svn: 366243
2019-07-16 18:27:12 +00:00
Stefan Granitz e8ced86deb [CMake] Add Apple-lldb-Xcode.cmake cache that avoids install options
llvm-svn: 366226
2019-07-16 16:57:45 +00:00
Jonas Devlieghere 63a0c2bce8 Revert "[swig] Add workaround for old swig"
With the deprecation of swig 1.x (r366213), this workaround should no
longer be necessary.

llvm-svn: 366221
2019-07-16 15:54:33 +00:00
Jonas Devlieghere d3941e6630 [SWIG] Deprecate SWIG 1.x
The last swig 1.x release dates from 2009, now 10 years ago. Recently, I
fixed an issue that prevented us from using swig 4 (r364974), which
turned out to be not backward compatible with swig 1.x (r365718).

This patch deprecates this (really old) version of swig and makes swig 2
the minimum supported version in LLDB . This should be fine for the
build bots, which are all running swig 3 or later.

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

llvm-svn: 366213
2019-07-16 15:14:01 +00:00
Raphael Isemann c5a2d7470e [lldb] Rename Options.inc to CommandOptions.inc [NFC]
It seems having two Options.inc files in the same project is giving our
custom Xcode project a hard time. This patch renames the new Options.inc
to CommandOptions.inc to prevent this conflict.

llvm-svn: 366196
2019-07-16 09:27:02 +00:00
Jan Kratochvil d0ac1888aa [lldb] Handle EOF from `lldb-vscode`
Sometimes (when running lldb-vscode under strace) I get:

read(0, "", 16)                         = 0
read(0, "", 16)                         = 0
read(0, "", 16)                         = 0
...

With this patch testcases finish properly even with strace:

read(0, "", 16)                         = 0
futex(0x1346508, FUTEX_WAKE_PRIVATE, 2147483647) = 0
stat("", 0x7ffe8f2634c8)                = -1 ENOENT (No such file or directory)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=9124, si_uid=1001, si_status=SIGINT, si_utime=1, si_stime=0} ---
close(4)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

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

llvm-svn: 366187
2019-07-16 06:34:44 +00:00
Alex Langford 0d12127318 [Target] Remove unused method Target::GetDefaultClangModuleSearchPaths
llvm-svn: 366161
2019-07-16 01:02:32 +00:00
Jason Molenda c245249b7b Update some file changes, but there's a dependency loop so
it doesn't quite work rigtht now.

llvm-svn: 366156
2019-07-15 23:55:22 +00:00
Alex Langford b5701710a4 [LanguageRuntime] Move ObjCLanguageRuntime into a plugin
Summary:
Following up to my CPPLanguageRuntime change, I'm moving
ObjCLanguageRuntime into a plugin as well.

Reviewers: JDevlieghere, compnerd, jingham, clayborg

Subscribers: mgorny, arphaman, lldb-commits

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

llvm-svn: 366148
2019-07-15 22:56:12 +00:00
Raphael Isemann 3329721e64 [lldb][doc] Document how our LLDB table gen initialized options
Summary: This patch adds documentation that should make it easier to migrate from using the old initializers to the table gen format.

Reviewers: jingham

Reviewed By: jingham

Subscribers: abidh, lldb-commits, JDevlieghere

Tags: #lldb

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

llvm-svn: 366083
2019-07-15 17:10:44 +00:00
Michal Gorny 1447b60eeb [lldb] [test] Un-XFAIL TestFormattersSBAPI on NetBSD
llvm-svn: 365991
2019-07-13 06:24:14 +00:00
Jonas Devlieghere 497bb44fc4 Make Python version setting actually effective
This needs to be outside the if to actually work. Also, this adjusts the
list of versions to match LLVM.

Patch by: Christian Biesinger

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

llvm-svn: 365988
2019-07-13 03:30:55 +00:00
Jonas Devlieghere b016de51e0 [DWARFContext] Strip leading dot in section names
The LLVM context doesn't expect the leading dot in the section name.

llvm-svn: 365978
2019-07-13 00:12:22 +00:00
Alex Langford e0678ca547 [LanguageRuntime] Move CPPLanguageRuntime into a plugin
Summary: This seems better suited to be in a plugin.

Reviewers: JDevlieghere, clayborg, jingham, compnerd, labath

Subscribers: mgorny, lldb-commits

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

llvm-svn: 365951
2019-07-12 20:09:32 +00:00
Jonas Devlieghere 69de1bbe32 [ObjectContainerBSDArchive] Simplify a few things (NFC)
Differential revision: https://reviews.llvm.org/D64661

llvm-svn: 365950
2019-07-12 20:08:41 +00:00
Alex Langford 24604ec799 [Core] Generalize ValueObject::MaybeCalculateCompleteType
Summary:
Instead of hardcoding ClangASTContext and ObjCLanguageRuntime, we can
generalize this by creating the method GetRuntimeType in
LanguageRuntime and moving the current MaybeCalculateCompleteType
implementation into ObjCLanguageruntime::GetRuntimeType

Reviewers: jingham, clayborg, JDevlieghere

Subscribers: lldb-commits

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

llvm-svn: 365939
2019-07-12 18:34:37 +00:00
Raphael Isemann 6f4fb4e7ad [lldb] Let table gen create command option initializers.
Summary:
We currently have man large arrays containing initializers for our command options.
These tables are tricky maintain as we don't have any good place to check them for consistency and
it's also hard to read (`nullptr, {}, 0` is not very descriptive).

This patch fixes this by letting table gen generate those tables. This way we can have a more readable
syntax for this (especially for all the default arguments) and we can let TableCheck check them
for consistency (e.g. an option with an optional argument can't have `eArgTypeNone`, naming of flags', etc.).

Also refactoring the related data structures can now be done without changing the hundred of option initializers.

For example, this line:
```
{LLDB_OPT_SET_ALL, false, "hide-aliases",         'a', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Hide aliases in the command list."},
```
becomes this:
```
  def hide_aliases : Option<"hide-aliases", "a">, Desc<"Hide aliases in the command list.">;
```

For now I just moved a few initializers to the new format to demonstrate the change. I'll slowly migrate the other
option initializers tables  in separate patches.

Reviewers: JDevlieghere, davide, sgraenitz

Reviewed By: JDevlieghere

Subscribers: jingham, xiaobai, labath, mgorny, abidh, lldb-commits

Tags: #lldb

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

llvm-svn: 365908
2019-07-12 15:30:55 +00:00
Nathan Lanza 320d6795b2 [windows] re-call signal in sigint_handler for Windows
Summary:
Windows requires re-setting the signal handler each time it is used
and thus ctrl-c was not behaving properly on Windows

Reviewers: jfb

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

llvm-svn: 365868
2019-07-12 04:43:46 +00:00
Alex Langford bab7e3d78b [Expression] Move IRDynamicChecks to ClangExpressionParser
Summary:
IRDynamicChecks in its current form is specific to Clang since it deals
with the C language family. It is possible that we may want to
instrument code generated for other languages, but we can factor in a
more general mechanism to do so at a later time.

This decouples ObCLanguageRuntime from Expression!

Reviewers: compnerd, clayborg, jingham, JDevlieghere

Subscribers: mgorny, lldb-commits

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

llvm-svn: 365853
2019-07-12 00:58:02 +00:00
Alex Langford 2c3c045dcb [Target] Replace Plugin headers with non-plugin headers
llvm-svn: 365843
2019-07-11 23:45:35 +00:00
Jonas Devlieghere f4af9a9d80 Add convenience methods to convert LLDB to LLVM data structures.
This patch adds two convenience methods named GetAsLLVM to the LLDB
counterparts of the DWARF DataExtractor and the DWARF context. The
DWARFContext, once created, is cached for future usage.

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

llvm-svn: 365819
2019-07-11 20:26:53 +00:00
Raphael Isemann 2bc8ab6852 [lldb] Make TestDeletedExecutable more reliable
Summary:
It seems that calling Popen can return to the caller before the started process has read all the needed information
from its executable. This means that in case we delete the executable while the process is still starting up,
this test will create a zombie process which in turn leads to a failing test. On my macOS system this happens quite frequently.

This patch fixes this by letting the test synchronize with the inferior after it has started up.

Reviewers: davide

Reviewed By: davide

Subscribers: labath, friss, lldb-commits

Tags: #lldb

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

llvm-svn: 365813
2019-07-11 19:27:33 +00:00