Commit Graph

15289 Commits

Author SHA1 Message Date
Enrico Granata 543a26e958 Fix an issue where LLDB would not accept the --description-verbosity option to 'po' without an argument after the StringRef refactoring
Fixes rdar://28480275

llvm-svn: 282445
2016-09-26 21:36:17 +00:00
Todd Fiala 2cd84c905d added Linux support for test timeout sampling
This is the Linux counterpart to the sampling support I added
on the macOS side.

This change also introduces zip-file compression if the size of
the sample output is greater than 10 KB.  The Linux side can be
quite large and the textual content is averaging over a 10x
compression factor on tests that I force to time out.  When
compression takes place, the filename becomes:

    {session_dir}/{TestFilename.py}-{pid}.sample.zip

This support relies on the linux 'perf' tool.  If it isn't
present, the behavior is to ignore pre-kill processing of
the timed out test process.

Note calling the perf tool under the timeout command appears
to nuke the profiled process.  This was causing the timeout
kill logic to fail due to the process having disappeared.
I modified the kill logic to catch the case of the process
not existing, and I have it ignore the kill request in that
case.  Any other exception is still raised.

Reviewers: labath

Subscribers: lldb-commits

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

llvm-svn: 282436
2016-09-26 20:25:47 +00:00
Sean Callanan 5deb06eb43 Added a setting that enables saving all .o files from a given JIT expression.
This allows debugging of the JIT and other analyses of the internals of the
expression parser.  I've also added a testcase that verifies that the setting
works correctly when off and on.

llvm-svn: 282434
2016-09-26 20:18:51 +00:00
Jim Ingham f7e0725628 Fix serialization of Python breakpoint commands.
CommandData breakpoint commands didn't know whether they were
Python or Command line commands, so they couldn't serialize &
deserialize themselves properly.  Fix that.
I also changed the "breakpoint list" command to note in the output
when the commands are Python commands.  Fortunately only one test
was relying on this explicit bit of text output.

llvm-svn: 282432
2016-09-26 19:47:37 +00:00
Pavel Labath 194cae9aba Remove ancient icc decorators
Nobody is running the test suite with icc, so we have no idea if they pass. But
the bug they link to has definitely been fixed.

llvm-svn: 282408
2016-09-26 14:34:02 +00:00
Pavel Labath a6baf8c3c8 Remove an ancient XFAIL from TestBuiltinTrap
in refers to gcc-4.6. Hopefully noone is using that anymore, and I think there is
a good chance it was fixed anyway.

llvm-svn: 282406
2016-09-26 13:50:06 +00:00
Chris Bieneman aa098de715 [CMake] Generate LLDB_REVISION at build time
Summary:
This alters the generation of LLDB_REVISION to be heavily based on how clang generates its version header. There are two benefits of this aproach.

(1) The LLDB_REVISION is generated at build time, so it will be updated after an SCM pull/update even if CMake doesn't re-run
(2) This works on Windows

As noted this code is a simplified implementation of the code from clang.

Reviewers: tfiala, zturner

Subscribers: beanz, mgorny, lldb-commits

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

llvm-svn: 282314
2016-09-23 23:33:52 +00:00
Jim Ingham 100f99a94c Mutatis mutandis for char * -> StringRef.
llvm-svn: 282311
2016-09-23 22:36:00 +00:00
Enrico Granata f8802502f2 Add an accessor to get the value of RC_PLATFORM_NAME at build time
llvm-svn: 282310
2016-09-23 22:30:08 +00:00
Zachary Turner d4c6dae5c1 Fix build on Ubuntu.
This was in some code that was #ifdef'd out on Windows, so I
didn't see it.

llvm-svn: 282309
2016-09-23 22:27:03 +00:00
Zachary Turner 27a5c2b302 Change FileAction::GetPath() to return a StringRef.
llvm-svn: 282306
2016-09-23 22:11:51 +00:00
Francis Ricci 6951707943 Allow for tests to be disabled at runtime
Summary:
The current implementation of the test suite allows the user to run
a certain subset of tests using '-p', but does not allow the inverse,
where a user wants to run all but some number of known failing tests.
Implement this functionality.

Reviewers: labath, zturner, tfiala

Subscribers: jingham, sas, lldb-commits

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

llvm-svn: 282298
2016-09-23 21:32:47 +00:00
Enrico Granata 497ef1772f Install only the manpage and only in the proper location
llvm-svn: 282297
2016-09-23 21:24:08 +00:00
Zachary Turner a498f0ec93 Change Module::RemapPath to use StringRef.
llvm-svn: 282277
2016-09-23 18:42:38 +00:00
Zachary Turner 16b39131b6 Try again to match the logic of the code before re-writing.
llvm-svn: 282271
2016-09-23 18:13:18 +00:00
Zachary Turner 2f13958c56 Try to fix failing TestDataFormatterSkipSummary test case.
llvm-svn: 282270
2016-09-23 18:11:03 +00:00
Zachary Turner 514d8cd83e Update the prompt related functions to use StringRefs.
llvm-svn: 282269
2016-09-23 18:06:53 +00:00
Zachary Turner 8cef4b0bb4 Update OptionGroup::SetValue to take StringRef.
Then deal with all the fallout.

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

llvm-svn: 282265
2016-09-23 17:48:13 +00:00
Todd Fiala 72525622b2 add hook for calling platform-dependent pre-kill action on a timed out test
differential review: https://reviews.llvm.org/D24850

reviewers: clayborg, labath
llvm-svn: 282258
2016-09-23 16:10:01 +00:00
Pavel Labath 0f8f0d369d [gdb-remote] Remove the const char * version of SendPacketAndWaitForResponse
Switch all callers to use the StringRef version.

llvm-svn: 282236
2016-09-23 09:11:49 +00:00
Zachary Turner 5eb536069f Fix windows build caused by mixing enum and enum class.
llvm-svn: 282226
2016-09-23 02:54:26 +00:00
Jim Ingham 2d3628e1f0 Add the ability to append breakpoints to the save file.
llvm-svn: 282212
2016-09-22 23:42:42 +00:00
Jim Ingham 3acdf38519 Add the ability to deserialize only breakpoints matching a given name.
Also tests for this and the ThreadSpec serialization.

llvm-svn: 282207
2016-09-22 22:20:28 +00:00
Jim Ingham 778ef39294 Serilize the thread options within the breakpoint options.
llvm-svn: 282205
2016-09-22 22:00:59 +00:00
Chris Bieneman 7176862809 [CMake] Fixing a small hack in add_lldb_library
This code was adding an explicit dependency on libclang because lldb needs clang headers, changing this to instead depend on the clang tablegen targets means we don't have to depend on building the clang bits in libclang that lldb doesn't need.

Note this is still a bit of a hack because we're adding the dependency to all lldb libraries, instead of just the ones that need it.

llvm-svn: 282196
2016-09-22 21:08:27 +00:00
Zachary Turner 706024395f Try to fix build errors on Android.
It doesn't like the implicit conversion from T[] to ArrayRef<T>
so I'm using `llvm::makeArrayRef()`.  Hopefully I got everything.

llvm-svn: 282195
2016-09-22 21:06:13 +00:00
Zachary Turner 1f0f5b5b9e Convert option tables to ArrayRefs.
This change is very mechanical.  All it does is change the
signature of `Options::GetDefinitions()` and `OptionGroup::
GetDefinitions()` to return an `ArrayRef<OptionDefinition>`
instead of a `const OptionDefinition *`.  In the case of the
former, it deletes the sentinel entry from every table, and
in the case of the latter, it removes the `GetNumDefinitions()`
method from the interface.  These are no longer necessary as
`ArrayRef` carries its own length.

In the former case, iteration was done by using a sentinel
entry, so there was no knowledge of length.  Because of this
the individual option tables were allowed to be defined below
the corresponding class (after all, only a pointer was needed).
Now, however, the length must be known at compile time to
construct the `ArrayRef`, and as a result it is necessary to
move every option table before its corresponding class.  This
results in this CL looking very big, but in terms of substance
there is not much here.

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

llvm-svn: 282188
2016-09-22 20:22:55 +00:00
Enrico Granata 5edef42e7f Actually, do it this way because I will want to know if I am in a host build elsewhere too
llvm-svn: 282179
2016-09-22 17:59:58 +00:00
Enrico Granata 9a4a6b260f The host version of lldb always builds for macosx
llvm-svn: 282178
2016-09-22 17:47:33 +00:00
Todd Fiala 7ffdb1556b fix DarwinLog no-info/no-debug case
This started failing recently:
TestDarwinLogSourceDebug.py

It looks like the behavior of specifying the OS_ACTIVITY_MODE
env var with no value used to work for no-info/no-debug content.
That doesn't appear to be the case now.  Switch to specifying
the proper value ('default') when no info-level and no debug-level
content is expected.

llvm-svn: 282172
2016-09-22 16:29:48 +00:00
Todd Fiala 36bf6a46d8 added environment variable-related Args gtests
Also fixed up a couple misbehaving functions.  It is perfectly
legal to have env vars with no values (i.e. the '=' and following
need not be present).

llvm-svn: 282171
2016-09-22 16:00:01 +00:00
Pavel Labath 2a66884f78 Fix TestBreakpointSerialization on windows
The test exposed a bug in the StructuredData Serialization code, which did not
escape the backslash properly. This manifested itself as windows breakpoint
serialization roundtrip test not succeeding (as windows paths included
backslashes).

llvm-svn: 282167
2016-09-22 15:26:43 +00:00
Ilia K a3174853b7 Fix parsing expressions to evaluate with spaces and optional args (MI)
Summary:
When extracting options for long options (starting with `--`), the use of
`MIUtilString::SplitConsiderQuotes` to split all the arguments was being
conditioned on the option type to be expected. This was wrong as this caused
other options to be parsed incorrectly since it was not taking into account the
presence of quotes.

Patch by Ed Munoz <edmunoz@microsoft.com>

Reviewers: edmunoz, ki.stfu

Subscribers: ki.stfu, lldb-commits

Projects: #lldb

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

llvm-svn: 282135
2016-09-22 05:08:41 +00:00
Todd Fiala 150aa321f7 fix Args function broken in r281942
The method was hard-coded to check only the 0th element of the array.
This manifested as NSLog messages behaving incorrectly on macOS.
(This is independent of the broken DarwinLog feature).

llvm-svn: 282128
2016-09-22 00:59:23 +00:00
Ed Maste 2ce823d0d8 Fix typo in lldb --help
Patch by Yacine Belkadi

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

llvm-svn: 282123
2016-09-21 23:30:36 +00:00
Ed Maste 0509203952 Fix for loop sign fix in r282112 for column = 0
llvm-svn: 282119
2016-09-21 22:36:51 +00:00
Zachary Turner 4037780485 Fix an incorrect nullptr conversion.
llvm-svn: 282117
2016-09-21 22:33:30 +00:00
Ed Maste ac77fe3b55 Fix integer sign warning from r282105
llvm-svn: 282112
2016-09-21 21:14:31 +00:00
Ed Maste 228e4abb63 Fix -Wcovered-switch-default warning in StackFrame.cpp
The switch coveres all possible values. If a new one is added in the
future the compiler will start warning, providing a notification that
the switch needs updating.

llvm-svn: 282111
2016-09-21 21:08:30 +00:00
Chris Bieneman d3199f5ed2 [CMake] Initial support for LLDB.framework
Summary:
This patch adds a CMake option LLDB_BUILD_FRAMEWORK, which builds libLLDB as a macOS framework instead of as a *nix shared library.

With this patch any LLDB executable that has the INCLUDE_IN_FRAMEWORK option set will be built into the Framework's resources directory, and a symlink to the exeuctable will be placed under the build directory's bin folder. Creating the symlinks allows users to run commands from the build directory without altering the workflow.

The framework generated by this patch passes the LLDB test suite, but has not been tested beyond that. It is not expected to be fully ready to ship, but it is a first step.

With this patch binaries that are placed inside the framework aren't being properly installed. Fixing that would increase the patch size significantly, so I'd like to do that in a follow-up.

Reviewers: zturner, tfiala

Subscribers: beanz, lldb-commits, mgorny

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

llvm-svn: 282110
2016-09-21 21:02:16 +00:00
Todd Fiala 9666ba7526 add stop column highlighting support
This change introduces optional marking of the column within a source
line where a thread is stopped.  This marking will show up when the
source code for a thread stop is displayed, when the debug info
knows the column information, and if the optional column marking is
enabled.

There are two separate methods for handling the marking of the stop
column:

* via ANSI terminal codes, which are added inline to the source line
  display.  The default ANSI mark-up is to underline the column.

* via a pure text-based caret that is added in the appropriate column
  in a newly-inserted blank line underneath the source line in
  question.

There are some new options that control how this all works.

* settings set stop-show-column

  This takes one of 4 values:

  * ansi-or-caret: use the ANSI terminal code mechanism if LLDB
    is running with color enabled; if not, use the caret-based,
    pure text method (see the "caret" mode below).

  * ansi: only use the ANSI terminal code mechanism to highlight
    the stop line.  If LLDB is running with color disabled, no
    stop column marking will occur.

  * caret: only use the pure text caret method, which introduces
    a newly-inserted line underneath the current line, where
    the only character in the new line is a caret that highlights
    the stop column in question.

  * none: no stop column marking will be attempted.

* settings set stop-show-column-ansi-prefix

  This is a text format that indicates the ANSI formatting
  code to insert into the stream immediately preceding the
  column where the stop column character will be marked up.
  It defaults to ${ansi.underline}; however, it can contain
  any valid LLDB format codes, e.g.

      ${ansi.fg.red}${ansi.bold}${ansi.underline}

* settings set stop-show-column-ansi-suffix

  This is the text format that specifies the ANSI terminal
  codes to end the markup that was started with the prefix
  described above.  It defaults to: ${ansi.normal}.  This
  should be sufficient for the common cases.

Significant leg-work was done by Adrian Prantl.  (Thanks, Adrian!)

differential review: https://reviews.llvm.org/D20835

reviewers: clayborg, jingham
llvm-svn: 282105
2016-09-21 20:13:14 +00:00
Jim Ingham 1ac2f2c4d3 Probably should add the breakpoint names test directory as well...
llvm-svn: 282103
2016-09-21 19:21:38 +00:00
Zachary Turner 2552acd945 Fix failing regex tests.
r282079 converted the regular expression interface to accept
and return StringRefs instead of char pointers.  In one case
a null pointer check was converted to an empty string check,
but this was an incorrect conversion because an empty string
is a valid regular expression.  Removing this check should
fix the test failures.

llvm-svn: 282090
2016-09-21 17:13:51 +00:00
Zachary Turner 9a4e30117f Fix an inefficient StringRef conversion.
Since the original object was already an llvm::SmallString<>
there's no point calling c_str() first.

llvm-svn: 282080
2016-09-21 16:01:43 +00:00
Zachary Turner 95eae4235d Make lldb::Regex use StringRef.
This updates getters and setters to use StringRef instead of
const char *.  I tested the build on Linux, Windows, and OSX
and saw no build or test failures.  I cannot test any BSD
or Android variants, however I expect the required changes
to be minimal or non-existant.

llvm-svn: 282079
2016-09-21 16:01:28 +00:00
Valentina Giusti 58db5bb20e Refactor NativeRegisterContextLinux_x86_64 code.
This patch refactors the way the XState type is checked and, in order to
simplify the code, it removes the usage of the 'cpuid' instruction: just checking
if the ptrace calls done throuhg ReadFPR is enough to verify both if there is
HW support and if there is kernel support. Also the XCR0 bits are enough to check if
there is both HW and kernel support for AVX and MPX.

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

llvm-svn: 282072
2016-09-21 13:33:01 +00:00
Luke Drummond 451dd080ed Remove an invalid doxygen `@return` docstring on a void function
`ClangASTSource::FindExternalVisibleDecls` has void return type, so the
previous docstring was misleading.

llvm-svn: 282066
2016-09-21 11:12:50 +00:00
Jim Ingham ff9a91ea98 Adds tests for breakpoint names, and a FindBreakpointsByName.
Also if you set a breakpoint with an invalid name, we'll
refuse to set the breakpoint rather than silently ignoring
the name.

llvm-svn: 282043
2016-09-21 01:21:19 +00:00
Eugene Zelenko 3eb83b4a0d Fix Clang initialization and Clang-tidy modernize-use-nullptr warnings in source/Plugins/Process/Utility.
Differential revision: https://reviews.llvm.org/D24694

llvm-svn: 282041
2016-09-21 00:59:22 +00:00
Jim Ingham 92d1960e3b Add some more tests for breakpoint serialization.
Serialize breakpoint names & the hardware_requested attributes.
Also added a few missing affordances to SBBreakpoint whose absence
writing the tests pointed out.

<rdar://problem/12611863>

llvm-svn: 282036
2016-09-20 22:54:49 +00:00
Kamil Rytarowski d4487347e3 Unbreak the NetBSD build after recent changes
Similar to r281922 "Try to fix freebsd and android builds."

Replace .AppendArgument(cstr) with .AppendArgument(llvm::StringRef(cstr))

llvm-svn: 282032
2016-09-20 22:26:29 +00:00
Zachary Turner 4c5506a64d Enable clang attributes when using clang-cl.
llvm-svn: 282029
2016-09-20 22:15:07 +00:00
Zachary Turner fb3b3bd111 [PECOFF] Use the COFF subsystem field when determining the Triple.
Patch by walter erquinigo
Differential revision: https://reviews.llvm.org/D24284

llvm-svn: 282013
2016-09-20 20:44:50 +00:00
Enrico Granata 9800539f19 Make it so that one can register prefix matches as well as identical matches as extra cases for NSDictionary data formatting
llvm-svn: 281993
2016-09-20 18:26:30 +00:00
Sean Callanan 1355f4735d Fixed the build by changing a couple of const char *s to StringRefs.
llvm-svn: 281943
2016-09-19 22:06:12 +00:00
Zachary Turner 5c725f3a06 Convert 3 more functions to use a StringRef.
This converts Args::Unshift, Args::AddOrReplaceEnvironmentVariable,
and Args::ContainsEnvironmentVariable to use StringRefs.  The code
is also simplified somewhat as a result.

llvm-svn: 281942
2016-09-19 21:56:59 +00:00
Zachary Turner 552d012b7e Fix compilation of unit tests.
llvm-svn: 281926
2016-09-19 18:32:23 +00:00
Zachary Turner 92b146e5fa Try to fix freebsd and android builds.
llvm-svn: 281922
2016-09-19 18:03:54 +00:00
Zachary Turner ecbb0bb169 Fix more functions in Args to use StringRef.
This patch also marks the const char* versions as =delete to prevent
their use.  This has the potential to cause build breakages on some
platforms which I can't compile.  I have tested on Windows, Linux,
and OSX.  Best practices for fixing broken callsites are outlined in
Args.h in a comment above the deleted function declarations.

Eventually we can remove these =delete declarations, but for now they
are important to make sure that all implicit conversions from
const char * are manually audited to make sure that they do not invoke a
conversion from nullptr.

llvm-svn: 281919
2016-09-19 17:54:06 +00:00
Todd Fiala ba8a82dbe4 Xcode: support gtests that use the Inputs dir
This change adds support for the gtests that require input data
in the Inputs files.  This is done through a new Xcode script
phase that runs the scripts/Xcode/prepare-gtest-run-dir.sh script.
That script simply copies the contents of all unittests/**/Inputs
dirs into ${TARGET_BUILD_DIR}/Inputs before running the test.

This change also renames the Xcode 'gtest-for-debugging' to
'gtest-build', and makes the gtest "build and run" target
depend on gtest-build.  This reduces replication within the
targets.  gtest .c/.cpp files now should only be added to
the gtest-build target.

llvm-svn: 281913
2016-09-19 16:42:41 +00:00
Zachary Turner 0ab39359de Fix boolean logic error in BreakpointID.
llvm-svn: 281804
2016-09-17 02:34:40 +00:00
Zachary Turner 6fa7681bb6 Convert many functions to use StringRefs.
Where possible, remove the const char* version.  To keep the
risk and impact here minimal, I've only done the simplest
functions.

In the process, I found a few opportunities for adding some
unit tests, so I added those as well.

Tested on Windows, Linux, and OSX.

llvm-svn: 281799
2016-09-17 02:00:02 +00:00
Greg Clayton 8e0d63112b Fix compiler warnings where two values weren't being initialized.
llvm-svn: 281770
2016-09-16 20:10:02 +00:00
Zachary Turner e04c274e35 Set the correct triple when creating an ArchSpec for Windows.
Patch by Walter Erquinigo
Differential Revision: https://reviews.llvm.org/D24283

llvm-svn: 281765
2016-09-16 19:09:19 +00:00
Zachary Turner 7b2e5a36e4 Add unit tests for a few string conversion functions in Args.
Also provided a StringRef overload for these functions and have
the const char* overloads delegate to the StringRef overload.

llvm-svn: 281764
2016-09-16 19:09:12 +00:00
Luke Drummond 7f193d6903 [RenderScript] Support tracking and dumping reduction kernels
Initial implementation of support for tracking
[RenderScript Reductions](https://developer.android.com/guide/topics/renderscript/compute.html#reduction-in-depth)

With this patch, `language renderscript module dump` properly lists reductions
that are part of loaded RenderScript modules as well the the consituent
functions and their roles, within the reduction.

This support required new tracking mechanisms for the `#pragma(reduce)`
mechanism, and extension of `RSModuleDescriptor::ParseRSInfo` to support
the metadata output by `bcc`. This work was also an opportunity to
refactor/improve parse code:

- `RSModuleDescriptor::ParseExportReduceCount` now has a complete
  implementation and the debugger can correctly track reductions on
  receipt of a module hook.
- `RSModuleDescriptor::Dump` now dumps Reductions as well as `ForEach`
  kernels. Also, fixed indentation of the output, and made indentation
  groupings in the source clearer.
- `RSModuleDescriptor::ParseRSInfo` now returns true if the `".rs.info"`
  packet has nonzero linecount, rather than rejecting RenderScripts that
  don't contain kernels (an unlikely situation, but possibly valid). This
  was changed because scripts that only contained reductions were not
  being tracked in `RenderScriptRuntime::LoadModule`.
- Refactor `RSModuleInfo::ParseRSInfo` and add reduction spec parser stub
 - Prepared ParseRSInfo to more easily be able to add new parser types
 - Use llvm::StringRef and llvm::StringMap helpers to make the parsing code cleaner
 - factor out forEachCount, globalVarCount, and pragmaCount parsing block to their own methods
 - Add ExportReduceCount Parser
 - Use `llvm::StringRef` in `RSKernelDescriptor` constructor
 - removed now superfluous `MAXLINE` macros as we've switched from `const
   char *` to `llvm::StringRef`

llvm-svn: 281717
2016-09-16 11:28:12 +00:00
Todd Fiala d15aa24a7e add availability check to DarwinLog event tests
The pexpect-based tests properly checked for the stub reporting
DarwinLog support.  The event-based ones did not.  This is fixed
here.  Swift CI bots are not currently building debugserver on
macOS, so they don't have the DarwinLog support even when they
pass the macOS 10.12 check.

llvm-svn: 281696
2016-09-16 03:07:14 +00:00
Jim Ingham 6d1e4696a2 First tests for serializing breakpoints.
Plus a few bug fixes I found along the way.

llvm-svn: 281690
2016-09-16 01:41:27 +00:00
Zachary Turner aa9f1c59d2 Allow ArchSpec to take a StringRef.
llvm-svn: 281662
2016-09-15 21:32:57 +00:00
Zachary Turner e13ffee009 [cmake] Don't depend on lldb-server unless it's built.
llvm-svn: 281661
2016-09-15 21:32:51 +00:00
Chris Bieneman 3045d703f6 Fixing bot failures
Need to only add debugserver as a test dependency on Darwin.

llvm-svn: 281652
2016-09-15 20:23:31 +00:00
Chris Bieneman 4851558f55 [LIT] First pass of LLDB LIT support
Summary:
This patch supplies basic infrastructure for LLDB to use LIT, and ports a few basic test cases from the LLDB test suite into LIT.

With this patch the LLDB lit system is not capable or intended to fully replace the existing LLDB test suite, but this first patch enables people to write lit tests for LLDB.

The lit substitution for %cc and %cxx default to the host compiler unless the CMake option LLDB_TEST_CLANG is On, in which case the in-tree clang will be used.

The target check-lldb-lit will run all lit tests including the lit-based executor for the unit tests. Alternatively there is a target generated for each subdirectory under the lit directory, so check-lldb-unit and check-lldb-expr will run just the tests under their respective directories.

The ported tests are not removed from the existing suite, and should not be until such a time when the lit runner is mature and in use by bots and workflows.

Reviewers: zturner, labath, jingham, tfiala

Subscribers: beanz, mgorny, lldb-commits

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

llvm-svn: 281651
2016-09-15 20:13:55 +00:00
Zachary Turner f6607454d4 Convert ArchSpec::ParseMachOCPUDashSubtypeTriple to use StringRef.
This makes the code easier to grok, and since this is a very low
level function it also is very helpful to have this take a StringRef
since it means anyone higher up the chain who has a StringRef would
have to first convert it to a null-terminated string.  This way it
can work equally well with StringRefs or const char*'s, which will
enable the conversion of higher up functions to StringRef.

Tested on Windows, Linux, and OSX and saw no regressions.

llvm-svn: 281642
2016-09-15 18:41:48 +00:00
Todd Fiala ab7ccf0ecb added LLDB_PYTHON_TESTSUITE_ARCH Xcode variable
This Xcode build variable defaults to x86_64.  It can be set to i386
to cause the lldb-python-test-suite target run the tests in the
specified architecture.

This flag is being added for the zorg build script so that Green Dragon
can run the test suite against both x86_64 and i386 macOS targets.

llvm-svn: 281639
2016-09-15 18:28:03 +00:00
Dimitar Vlahovski 6d78a1a417 Reformat x86_64 register infos defines table
Fix the table format of the register defines after clang-format.
Added guards to prevent future reformatting again from clang-format.

llvm-svn: 281606
2016-09-15 12:58:27 +00:00
Tamas Berghammer b293fc783b Fix TestSymbolContextTwoFiles on Android after rL281595
llvm-svn: 281601
2016-09-15 10:49:55 +00:00
Tamas Berghammer 2540a553e5 Add support for DW_AT_ranges_base attribute
It is a new attribute emitted by clang as a GNU extension and will
be part of Dwarf5. The purpose of the attribute is to specify a compile
unit level base value for all DW_AT_ranges to reduce the number of
relocations have to be done by the linker.

Fixes (at least partially): https://llvm.org/pr28826

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

llvm-svn: 281595
2016-09-15 08:53:33 +00:00
Tamas Berghammer 2cc4e3e04e Try to fix windows build after rL281569
llvm-svn: 281594
2016-09-15 08:47:59 +00:00
Jim Ingham 75f0f5830b Make the keys enumerations for options and resolvers enum classes.
This keeps them from conflicting with other symbols names, so it's
worth their being less convenient to use for indexing.

llvm-svn: 281569
2016-09-15 01:47:22 +00:00
Sean Callanan 561a9bbffc More cleanup in `frame diagnose,` eliminating a bunch of messy cases.
llvm-svn: 281545
2016-09-14 21:54:28 +00:00
Sean Callanan aa4b44c662 Replaced two instances of std::function with auto.
Thanks to Zachary Turner for the suggestion.  It's distasteful that the actual
type of the lambda can't be spelled out, but it should be evident from the
definition of the lambda body.

llvm-svn: 281536
2016-09-14 20:58:31 +00:00
Sean Callanan 0ac172d8ed Cleaned up a little bit of redundant code in 'frame diagnose.`
llvm-svn: 281534
2016-09-14 20:29:57 +00:00
Valentina Giusti 97e57e9b39 Use 'enum class' instead of 'enum' in NativeRegisterContextLinux_x86_x64.
Reviewers: labath, clayborg, zturner

Subscribers: lldb-commits

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

llvm-svn: 281528
2016-09-14 20:12:12 +00:00
Jim Ingham 01f1666471 Add SB API's for writing breakpoints to & creating the from a file.
Moved the guts of the code from CommandObjectBreakpoint to Target (should
have done it that way in the first place.)  Added an SBBreakpointList class
so there's a way to specify which breakpoints to serialize and to report the
deserialized breakpoints.

<rdar://problem/12611863> 

llvm-svn: 281520
2016-09-14 19:07:35 +00:00
Jim Ingham db30877477 Fix some const-ness issues with BreakpointID & BreakpointIDList.
llvm-svn: 281519
2016-09-14 19:05:27 +00:00
Valentina Giusti 5f957b54c8 Use Intel CPU flags to determine target supported features.
Summary:
This patch uses the instruction CPUID to verify that FXSAVE, XSAVE, AVX
and MPX are supported by the target hardware. In case the HW supports XSAVE,
and at least one of the extended register sets, it further checks if the
target software has the kernel support for such features, by verifying that
their XSAVE part is correctly managed.

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

llvm-svn: 281507
2016-09-14 17:27:48 +00:00
Sean Callanan 5085710892 Cleaned up the code that handles function return addresses in "frame diagnose."
llvm-svn: 281428
2016-09-14 00:48:19 +00:00
Zachary Turner 471932de24 Force c++14 when running tests on Windows.
VS 2015 and higher begin making use of c++14 in their standard
library headers.  As such, -std=c++11 makes it so you can't compile
trivial programs.  Bump this to -std=c++14 when this situation is
detected.

llvm-svn: 281420
2016-09-13 23:45:11 +00:00
Jason Molenda d82e1063f9 TestQueues could error out because the one second sleep main.c was
using to enqueue all the jobs wasn't enough time on a slow/overloaded
system.  Instead use a global to indicate when all the work has
been enqueued, let's see if this makes the CIs work more reliably.

llvm-svn: 281418
2016-09-13 23:29:46 +00:00
Sean Callanan 807ee2ff69 Cleaned up some of the "frame diagnose" code to use Operands as currency.
Also added some utility functions around Operands to make code easier and more
compact to write.

llvm-svn: 281398
2016-09-13 21:18:27 +00:00
Zachary Turner a8b668432d Add some unit tests for ArchSpec.
I'm was trying to do some cleanup and code modernization and in
doing so I needed to change ParseMachCPUDashSubtypeTriple to take
a StringRef.  To ensure I don't break anything, I'm adding some
unit tests for this function.  As a side benefit, this also expands
test coverage of this function to all platforms, since in general
this code would rarely be exercised on non Mac platforms, and never
in the test suite.

llvm-svn: 281387
2016-09-13 20:40:26 +00:00
Zachary Turner 4e4fbe8211 Some more pointer safety in Breakpoint.
Plumb unique_ptrs<> all the way through the baton interface.
NFC, this is a minor improvement to remove the possibility of an
accidental pointer ownership issue.

Reviewed By: jingham
Differential Revision: https://reviews.llvm.org/D24495

llvm-svn: 281360
2016-09-13 17:53:38 +00:00
Todd Fiala 662b51f606 fixup Xcode build for removal of MIUtilParse.*
llvm-svn: 281352
2016-09-13 16:53:07 +00:00
Dimitar Vlahovski 812072c244 Fix a merge mishap in rL281348
llvm-svn: 281349
2016-09-13 16:22:15 +00:00
Dimitar Vlahovski 1d2859ef6d MinidumpParsing: pid, modules, exceptions, strings
Summary:
Added parsing of the MiscInfo data stream.
The main member of it that we care about is the process_id
On Linux generated Minidump (from breakpad) we don't have
the MiscInfo, we have the /proc/$pid/status from where we can get the
pid.
Also parsing the module list - the list of all of the loaded
modules/shared libraries.
Parsing the exception stream.
Parsing MinidumpStrings.

I have unit tests for all of that.
Also added some tests using a Minidump generated from Windows tools (not
from breakpad)

Reviewers: labath, zturner

Subscribers: beanz, lldb-commits

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

llvm-svn: 281348
2016-09-13 15:54:38 +00:00
Pavel Labath df91b2fea8 Remove MIUtilParse (no longer used)
Summary: follow-up to https://reviews.llvm.org/D23882

Reviewers: dawn, krytarowski, labath, ki.stfu

Subscribers: beanz, mgorny, labath, ki.stfu, lldb-commits

Differential Revision: https://reviews.llvm.org/D23883
Author: Michał Górny <mgorny@gentoo.org>

llvm-svn: 281317
2016-09-13 10:39:12 +00:00
Tamas Berghammer f8199a736c Fix linux build after rL281273
llvm-svn: 281309
2016-09-13 09:27:21 +00:00
Jason Molenda e1489bde3b Reduce the number of simultaneous debug sessions to 10 and remove
the expectedFlakeyDarwin annotation.

I've been running this test in isolation on my macOS Sierra system
and haven't seen a failure in 20-30 runs.  The number of simultaneous
debug sessions that it spins up could be a problem when the testbots
are running under load, so I'm reducing this from 20 simultaneous
debug sessions to see if we can get enough stability to leave this
enabled.

llvm-svn: 281291
2016-09-13 02:45:45 +00:00
Jim Ingham 1a81b27378 Add a few const's (thanks Zachary) and return shared or unique pointers
in places where they help prevent leaks.

llvm-svn: 281288
2016-09-13 01:58:08 +00:00
Enrico Granata b82825b6d5 Fix an issue where LLDB was not masking enough bits off of objc classes data() pointers, effectively rendering us unable to generate descriptors for some classes
Fixes rdar://27758358

llvm-svn: 281282
2016-09-13 00:22:49 +00:00
Jim Ingham e14dc26857 This is the main part of a change to add breakpoint save and restore to lldb.
Still to come:
1) SB API's
2) Testcases
3) Loose ends:
   a) serialize Thread options
   b) serialize Exception resolvers
4) "break list --file" should list breakpoints contained in a file and
   "break read -f 1 3 5" should then read in only those breakpoints.

<rdar://problem/12611863>

llvm-svn: 281273
2016-09-12 23:10:56 +00:00
Todd Fiala d0c1c3220a xfail TestQueues.py and TestDarwinLogFilterMatchMessage.py
It looks like the message-content-retrieval aspect of DarwinLog
support is flaky, not just the regex match against it.  Slightly
less frequently than the regex matching, I am seeing the
direct string-match variant of log-message-content matching
also fail.

Tracked by:
llvm.org/pr30299
rdar://28237450

llvm-svn: 281251
2016-09-12 20:23:13 +00:00
Todd Fiala d207c678d7 fix Xcode build after r281226
llvm-svn: 281243
2016-09-12 18:49:22 +00:00
Pavel Labath 72090c2162 Move StdStringExtractor to tools/debugserver
The class is only used in the debugserver. The rest of lldb has the StringExtractor class.

Xcode project will need to be updated after this.

llvm-svn: 281226
2016-09-12 16:13:05 +00:00
Ilia K 94df34f72d Add MiSyntaxTestCase.test_lldbmi_output_grammar test (MI)
Summary: This patch adds a new test and fixes extra new-line before exit

Reviewers: abidh

Subscribers: ki.stfu, dawn, lldb-commits, abidh

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

llvm-svn: 281199
2016-09-12 07:14:51 +00:00
Ilia K 4f730dc750 Fix about a dozen compile warnings
Summary:
It fixes the following compile warnings:
1. '0' flag ignored with precision and ‘%d’ gnu_printf format
2. enumeral and non-enumeral type in conditional expression
3. format ‘%d’ expects argument of type ‘int’, but argument 4 has type ...
4. enumeration value ‘...’ not handled in switch
5. cast from type ‘const uint64_t* {aka ...}’ to type ‘int64_t* {aka ...}’ casts away qualifiers
6. extra ‘;’
7. comparison between signed and unsigned integer expressions
8. variable ‘register_operand’ set but not used
9. control reaches end of non-void function

Reviewers: jingham, emaste, zturner, clayborg

Subscribers: lldb-commits

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

llvm-svn: 281191
2016-09-12 05:25:33 +00:00
Todd Fiala fcdb1af655 async structured data packet handling improvements
This change does the following:
* Changes the signature for the continuation delegate method that handles
  async structured data from accepting an already-parsed structured data
  element to taking just the packet contents.
* Moves the conversion of the JSON-async: packet contents from
  GDBRemoteClientBase to the continuation delegate method.
* Adds a new unit test for verifying that the $JSON-asyc: packets get
  decoded and that the decoded packets get forwarded on to the delegate
  for further processing. Thanks to Pavel for making that whole section of
  code easily unit testable!
* Tightens up the packet verification on reception of a $JSON-async:
  packet contents. The code prior to this change is susceptible to a
  segfault if a packet is carefully crafted that starts with $J but
  has a total length shorter than the length of "$JSON-async:".

Reviewers: labath, clayborg, zturner

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

llvm-svn: 281121
2016-09-10 00:06:29 +00:00
Todd Fiala ace732a069 xfail DarwinLog "filter message by regex" tests
These tests are not working reliably.  I'm marking them
xfail until I resolve the issue.

Tracked by:
llvm.org/pr30299

llvm-svn: 281058
2016-09-09 17:07:15 +00:00
Nitesh Jain 817bc16d19 [LLDB][MIPS] Fix Emulation for JALR64 Instruction
Subscribers: jaydeep, bhushan, slthakur, sdardis, lldb-commits
llvm-svn: 281032
2016-09-09 10:46:25 +00:00
Nitesh Jain e9cb0d89c4 [LLDB][MIPS] Fix TestEhFrameUnwind.py for MIPS
Reviewers: clayborg, labath

Subscribers: jaydeep, bhushan, slthakur, lldb-commits

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

llvm-svn: 281031
2016-09-09 10:20:08 +00:00
Dimitar Vlahovski 80dfec8ce3 Fixing a build breakage caused from a change in LLVM rL281019
Summary:
LLVM guys did some clean-up of the Attribute getters/setters
and because of that the build was failing.

Reviewers: ldrumm

Subscribers: lldb-commits

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

llvm-svn: 281030
2016-09-09 10:14:11 +00:00
Pavel Labath fd25193463 NFC: Reformat ABISysV_i386 register context into something readable
add clang-format guards so it does not reformat it again.

llvm-svn: 281029
2016-09-09 10:12:57 +00:00
Nitesh Jain 4a82350239 [LLDB][MIPS] Fix TestLldbGdbServer.py failure
Subscribers: jaydeep, bhushan, slthakur, lldb-commits
llvm-svn: 281026
2016-09-09 09:50:33 +00:00
Pavel Labath 6e5e49fbdf Fix new gdb-remote client unit test for windows
The behaviour of FileSpec differed between host OS versions. Hardcode the path
syntax to posix, as we don't care about that in this test.

llvm-svn: 281025
2016-09-09 09:49:54 +00:00
Pavel Labath cfc7ae6616 Fix MSVC error from r280919
MSVC did not understand my brace-initializer syntax. :/

llvm-svn: 280965
2016-09-08 16:58:30 +00:00
Valentina Giusti cda0ae46ac Fix for rL280668, Intel(R) Memory Protection Extensions (Intel(R) MPX) support.
Summary: Signed-off-by: Valentina Giusti <valentina.giusti@intel.com>

Reviewers: dvlahovski, granata.enrico, clayborg, labath

Subscribers: lldb-commits

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

llvm-svn: 280942
2016-09-08 14:16:45 +00:00
Ed Maste 1c365dc268 Fix -Wcovered-switch-default warning in AppleObjCRuntimeV2.cpp
The switch coveres all possible values. If a new one is added in the
future the compiler will start warning, providing a notification that
the switch needs updating.

llvm-svn: 280933
2016-09-08 13:17:42 +00:00
Ed Maste 7771462b28 Fix unused variable and integer sign warnings from r280906
llvm-svn: 280931
2016-09-08 13:11:31 +00:00
Abhishek Aggarwal 3c7f070956 LLDB: API for iPermission of object file's sections
Summary:
 - Added an API to public interface that provides permissions (RWX) of
   individual sections of an object file
   
 - Earlier, there was no way to find out this information through SB
   APIs
    
 - A possible use case of this API is:
   when a user wants to know the sections that have executable machine
   instructions and want to write a tool on top of LLDB based on this
   information

 - Differential Revision: https://reviews.llvm.org/D24251

llvm-svn: 280924
2016-09-08 12:22:56 +00:00
Pavel Labath 6f22b771c4 Fix test breakage in r280919
It turns out that self.dbg.GetSelectedPlatform().GetTriple() is not a good way
to get the triple of the process, as it returns the incorrect triple in case of a
32-bit process running on a 64-bit platform.

Instead, go the long way round and ask the stub for the process triple. This
fixes the test for i386.

llvm-svn: 280922
2016-09-08 11:09:14 +00:00
Pavel Labath 2f1fbaebe2 gdb-remote: Add jModulesInfo packet
Summary:
This adds the jModulesInfo packet, which is the equivalent of qModulesInfo, but it enables us to
query multiple modules at once. This makes a significant speed improvement in case the
application has many (over a hundred) modules, and the communication link has a non-negligible
latency. This functionality is accessed by ProcessGdbRemote::PrefetchModuleSpecs(), which does
the caching. GetModuleSpecs() is modified to first consult the cache before asking the remote
stub. PrefetchModuleSpecs is currently only called from POSIX-DYLD dynamic loader plugin, after
it reads the list of modules from the inferior memory, but other uses are possible.

This decreases the attach time to an android application by about 40%.

Reviewers: clayborg

Subscribers: tberghammer, lldb-commits, danalbert

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

llvm-svn: 280919
2016-09-08 10:07:04 +00:00
Jason Molenda 0b4c26b2cc I'm experimenting with changing how the mixed source & assembly
mode in lldb works.  I've been discussing this with Jim Ingham,
Greg Clayton, and Kate Stone for the past week or two.

Previously lldb would print three source lines (centered on the
line table entry line for the current line) followed by the assembly.
It would print the context information (module`function + offset)
before those three lines of source.

Now lldb will print up to two lines before/after the line table
entry.  It prints two '*' characters for the line table line to
make it clear what line is showing assembly.  There is one line of
whitespace before/after the source lines so the separation between
source & assembly is clearer.  I don't print the context line
(module`function + offset).  I stop printing context lines if it's
a different line table entry, or if it's a source line I've already
printed as context to another source line.  If I have two line table
entries one after another for the same source line (I get these often
with clang - with different column information in them), I only print
the source line once.

I'm also using the target.process.thread.step-avoid-regexp setting
(which keeps you from stepping into STL functions that have been inlined
into your own code) and avoid printing any source lines from functions
that match that regexp.

When lldb disassembles into a new function, it will try to find the
declaration line # for the function and print all of the source lines
between the decl and the first line table entry (usually a { curly brace)
so we have a good chance of including the arguments, at least with the
debug info emitted by clang.

Finally, the # of source lines of context to show has been separated
from whether we're doing mixed source & assembly or not.  Previously
specifying 0 lines of context would turn off mixed source & assembly.

I think there's room for improvement, and maybe some bugs I haven't
found yet, but it's in good enough shape to upstream and iterate at
this point.

I'm not sure how best to indicate which source line is the actual line
table # versus context lines.  I'm using '**' right now.  Both Kate
and Greg had the initial idea to reuse '->' (normally used to indicate
"currently executing source line") - I tried it but I wasn't thrilled,
I'm too used to the established meaning of ->.

Greg had the interesting idea of avoiding context source lines only 
in two line table entries in the same source file.  So we'd print
two lines before & after a source line, and then the next line table
entry (if it was on the next source line after those two context lines)
we'd display only the following two lines -- the previous two had just
been printed.  If an inline source line was printed between these two,
though, we'd print the context lines for both of them.  It's an
interesting idea, and I want to see how it works with both -O0 and -O3
codegen where we have different amounts of inlining.

<rdar://problem/27961419> 

llvm-svn: 280906
2016-09-08 05:12:41 +00:00
Jason Molenda 2e819ccc41 I had a problem with one SDK where dispatch_release was actually a
macro, so writing ::dispatch_release did not work as expected.
Remove the global anon namespace :: designation; the header will
get us the correct declaration.

llvm-svn: 280903
2016-09-08 02:29:40 +00:00
Jason Molenda f81f15a706 Force the initialization of the m_type ivar in
Function::GetStartLineSourceInfo before we try to
return the start line information about a function;
this function requires it to have been initialized.

llvm-svn: 280902
2016-09-08 02:26:58 +00:00
Jim Ingham 34b0ff5ee4 Remove lldb coding conventions as they are no longer relevant.
llvm-svn: 280892
2016-09-08 00:42:02 +00:00
Jason Molenda 180ccb4e78 Remove CxaDemangle.cpp / .h from xcode project file.
llvm-svn: 280879
2016-09-07 23:08:36 +00:00
Rafael Espindola 9aa7d66aab Use llvm's demangler.
LLVM now has a copy of libcxxabi demangler, so lldb doesn't need to
keep one too.

llvm-svn: 280821
2016-09-07 16:14:00 +00:00
Pavel Labath 46031e6fec Fix unittest compilation on windows
After the reformat, the unittests do not compile due to missing due to redefinition errors
between PosixApi.h and ucrt/direct.h. This is a bit of a shot in the dark, as I have not tested
it on windows, but I am restoring the original include order, so it should hopefully fix it.

llvm-svn: 280793
2016-09-07 08:46:50 +00:00
Zachary Turner 87daab322f Revert "Fix tests on Windows."
This reverts commit 9b757b6e3946311802972409f38c6cefbea917b3.

This seems to cause strange breakages about on Ubuntu.

llvm-svn: 280763
2016-09-06 22:40:11 +00:00
Zachary Turner 4349e8f9b0 Fix tests on Windows.
This wasn't actually a problem with the reformat, but rather a
problem with Visual Studio 2015 Update 3, which uses some c++14
features in its standard libraries.  So we had to change -std=c++11
to -std=c++14.

llvm-svn: 280759
2016-09-06 22:14:22 +00:00
Zachary Turner 816e762fcc Put the LLVM_ALIGNAS directive in the right place.
llvm-svn: 280758
2016-09-06 22:02:06 +00:00
Zachary Turner 415a189c09 Make LLDB compile on Windows after the reformat.
Most of these issues arose as a result of header re-ordering, but
it turned up a real bug, which is that MSVC doesn't support
__attribute__((packed)) or __attribute__((aligned)).  This was
working before because there's a Windows header that #defines
__attribute__(x) to nothing.  We should fix this by removing
that #define entirely, and dealing with the fallout separately
which may turn up even more bugs.

I fixed this by replacing them with the corresponding LLVM
macros which understand how to do these operations on all the
different compilers.

llvm-svn: 280757
2016-09-06 21:52:14 +00:00
Ed Maste 8a0e3f828a Reorder FreeBSD Host.cpp #includes to fix build
llvm-svn: 280755
2016-09-06 21:25:31 +00:00
Kate Stone b9c1b51e45 *** This commit represents a complete reformatting of the LLDB source code
*** to conform to clang-format’s LLVM style.  This kind of mass change has
*** two obvious implications:

Firstly, merging this particular commit into a downstream fork may be a huge
effort.  Alternatively, it may be worth merging all changes up to this commit,
performing the same reformatting operation locally, and then discarding the
merge for this particular commit.  The commands used to accomplish this
reformatting were as follows (with current working directory as the root of
the repository):

    find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} +
    find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ;

The version of clang-format used was 3.9.0, and autopep8 was 1.2.4.

Secondly, “blame” style tools will generally point to this commit instead of
a meaningful prior commit.  There are alternatives available that will attempt
to look through this change and find the appropriate prior commit.  YMMV.

llvm-svn: 280751
2016-09-06 20:57:50 +00:00
Kate Stone e5a5104e27 Updated .clang-format rules so bring LLDB in line with LLVM standards.
llvm-svn: 280721
2016-09-06 17:19:00 +00:00
Dimitar Vlahovski e3950574a0 Fixing an MSVC error from rL280692
MSVC emits an error when one uses a const variable in a lambda without
capturing it.

gcc and clang don't emit an error in this scenario.

llvm-svn: 280707
2016-09-06 12:48:10 +00:00
Pavel Labath de970cfb0c Second round of fixups for r280692
Android targets don't have std::to_string and std::stoul. Use llvm::to_string and strtoul
instead.

llvm-svn: 280704
2016-09-06 11:08:02 +00:00
Dimitar Vlahovski ee44a92df6 Revert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."
This reverts commit rL280668 because the register tests fail on i386
Linux.

I investigated a little bit what causes the failure - there are missing
registers when running 'register read -a'.
This is the output I got at the bottom:
"""
...
Memory Protection Extensions:
      bnd0 = {0x0000000000000000 0x0000000000000000}
      bnd1 = {0x0000000000000000 0x0000000000000000}
      bnd2 = {0x0000000000000000 0x0000000000000000}
      bnd3 = {0x0000000000000000 0x0000000000000000}

unknown:
2 registers were unavailable.
"""

Also looking at the packets exchanged between the client and server:
"""
...
history[308] tid=0x7338 <  19> send packet: $qRegisterInfo4a#d7
history[309] tid=0x7338 < 130> read packet:
$name:bnd0;bitsize:128;offset:1032;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:101;dwarf:101;#48
history[310] tid=0x7338 <  19> send packet: $qRegisterInfo4b#d8
history[311] tid=0x7338 < 130> read packet:
$name:bnd1;bitsize:128;offset:1048;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:102;dwarf:102;#52
history[312] tid=0x7338 <  19> send packet: $qRegisterInfo4c#d9
history[313] tid=0x7338 < 130> read packet:
$name:bnd2;bitsize:128;offset:1064;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:103;dwarf:103;#53
history[314] tid=0x7338 <  19> send packet: $qRegisterInfo4d#da
history[315] tid=0x7338 < 130> read packet:
$name:bnd3;bitsize:128;offset:1080;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:104;dwarf:104;#54
history[316] tid=0x7338 <  19> send packet: $qRegisterInfo4e#db
history[317] tid=0x7338 <  76> read packet:
$name:bndcfgu;bitsize:64;offset:1096;encoding:vector;format:vector-uint8;#99
history[318] tid=0x7338 <  19> send packet: $qRegisterInfo4f#dc
history[319] tid=0x7338 <  78> read packet:
$name:bndstatus;bitsize:64;offset:1104;encoding:vector;format:vector-uint8;#8e
...
"""

The bndcfgu and bndstatus registers don't have the 'Memory Protections
Extension' set. I looked at the code and it seems that that is set
correctly.

So I'm not sure what's the problem or where does it come from.

Also there is a second failure related to something like this in the
tests:
"""
registerSet.GetName().lower()
"""

For some reason the registerSet.GetName() returns None.

llvm-svn: 280703
2016-09-06 11:00:37 +00:00
Pavel Labath 5cf1ece222 Fix build breakage in r280692
The commit introduced an array of const objects, which libstdc++ does not like. Make the object
non-const.

Also fix a compiler warning while I'm in there.

llvm-svn: 280697
2016-09-06 10:04:22 +00:00
Sean Callanan 4740a734bb Added the "frame diagnose" command and use its output to make crash info better.
When a process stops due to a crash, we get the crashing instruction and the
crashing memory location (if there is one).  From the user's perspective it is
often unclear what the reason for the crash is in a symbolic sense.

To address this, I have added new fuctionality to StackFrame to parse the 
disassembly and reconstruct the sequence of dereferneces and offsets that were
applied to a known variable (or fuction retrn value) to obtain the invalid
pointer.

This makes use of enhancements in the disassembler, as well as new information
provided by the DWARF expression infrastructure, and is exposed through a
"frame diagnose" command.  It is also used to provide symbolic information, when
available, in the event of a crash.

The algorithm is very rudimentary, and it needs a bunch of work, including
  - better parsing for assembly, preferably with help from LLVM
  - support for non-Apple platforms
  - cleanup of the algorithm core, preferably to make it all work in terms of
    Operands instead of register/offset pairs
  - improvement of the GetExpressioPath() logic to make prettier expression
    paths, and
  - better handling of vtables.
I welcome all suggestios, improvements, and testcases.

llvm-svn: 280692
2016-09-06 04:48:36 +00:00
Todd Fiala 7ed76d275f remove dependence of TestGdbRemoteExitCode.py on parent directory source
As Pavel pointed out in a comment on llvm.org/pr30271, the VPATH I was
using here to eliminate duplication of a .cpp file had a side effect of
attempting to pull in a .o/.obj file from that same parent dir, where
other tests can be running in parallel.  This is no good.

For now, I have removed the VPATH, which should address
llvm.org/pr30271.  I have also removed the XFAIL.

llvm-svn: 280675
2016-09-05 22:03:02 +00:00
Valentina Giusti f105abbc0d Intel(R) Memory Protection Extensions (Intel(R) MPX) support.
Summary:

The Intel(R) Memory Protection Extensions (Intel(R) MPX) associates pointers
to bounds, against which the software can check memory references to
prevent out of bound memory access.

This patch allows accessing the MPX registers:
  * bnd0-3: 128-bit registers to hold the bound values,
  * bndcfgu, bndstatus: 64-bit configuration registers,

This patch also adds read/write tests for the MPX registers in the register
command tests and adds a new subdirectory for MPX specific tests.

Signed-off-by: Valentina Giusti <valentina.giusti@intel.com>

Reviewers: labath, granata.enrico, lldb-commits, clayborg

Subscribers: lldb-commits

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

llvm-svn: 280668
2016-09-05 17:43:10 +00:00
Pavel Labath 305229bd72 Replace uses of MIUtilParse::CRegexParser with llvm::Regex
Summary:
Replace uses of the local MIUtilParse::CRegexParser class with the LLVM support class llvm::Regex. This reduces duplication of code, and makes it possible to remove the MIUtilParse::CRegexParser class that requires LLVM internal implementation headers.

Bug: https://llvm.org/bugs/show_bug.cgi?id=29138

Reviewers: dawn, abidh, ki.stfu

Subscribers: labath, ki.stfu, lldb-commits

Differential Revision: https://reviews.llvm.org/D23882
Author:	Michał Górny <mgorny@gentoo.org>

llvm-svn: 280662
2016-09-05 15:15:12 +00:00
Pavel Labath 56b23506c5 Add default_packet_timeout key to the new TestGdbRemoteHostInfo test
android targets use this key, so the test should recognize it.

llvm-svn: 280652
2016-09-05 08:34:56 +00:00
Todd Fiala b1a503bd13 XFAIL TestGdbRemoteExitCode failing tests
Tracked by:
llvm.org/pr30271

llvm-svn: 280606
2016-09-04 00:43:10 +00:00
Todd Fiala e77fce0a50 [NFC] Darwin llgs support from Week of Code
This code represents the Week of Code work I did on bringing up
lldb-server LLGS support for Darwin.  It does not include the
Xcode project changes needed, as we don't want to throw that switch
until more support is implemented (i.e. this change is inert, no
build systems use it yet.  I've verified on Ubuntu 16.04, macOS
Xcode and macOS cmake builds).

This change does some minimal refactoring of code that is shared
with the Linux LLGS portion, moving it from NativeProcessLinux into
NativeProcessProtocol.  That code is also used by NativeProcessDarwin.

Current state on Darwin:
* Process launching is implemented.  (Attach is not).
  Launching on devices has not yet been tested (FBS/BKS might
  need a bit of work).
* Inferior waitpid monitoring and communication of exit status
  via MainLoop callback is implemented.
* Memory read/write, breakpoints, thread register context, etc.
  are not yet implemented.  This impacts process stop/resume, as
  the initial launch suspended immediately starts the process
  up and running because it doesn't know it is supposed to remain
  stopped.
* I implemented the equivalent of MachThreadList as
  NativeThreadListDarwin, in anticipation that we might want to
  factor out common parts into NativeThreadList{Protocol} and share
  some code here.  After writing it, though, the fallout from merging
  Mach Task/Process into a single concept plus some other minor
  changes makes the whole NativeThreadListDarwin concept nothing more
  than dead weight.  I am likely going to get rid of this class and
  just manage it directly in NativeProcessDarwin, much like I did
  for NativeProcessLinux.
* There is a stub-out call for starting a STDIO thread.  That will
  go away and adopt the MainLoop pselect-based IOObject reading.

I am developing the fully-integrated changes in the following repo,
which contains the necessary Xcode bits and the glue that enables
lldb-debugserver on a macOS system:

  https://github.com/tfiala/lldb/tree/llgs-darwin

This change also breaks out a few of the lldb-server tests into
their own directory, and adds some $qHostInfo tests (not sure why
I didn't write those tests back when I initially implemented that
on the Linux side).

llvm-svn: 280604
2016-09-04 00:18:56 +00:00
Enrico Granata b370f18391 Check for null
llvm-svn: 280513
2016-09-02 18:15:48 +00:00
Tamas Berghammer 2a2712e062 Fix build breakage caused by r280490
llvm-svn: 280492
2016-09-02 15:56:33 +00:00
Tamas Berghammer 1d1613c966 Fix 2 waring in the OCaml AST context
llvm-svn: 280490
2016-09-02 15:52:19 +00:00
Pavel Labath f92756e9ec Reapply "Make Scalar::GetValue more consistent"
this is a resubmission of r280476. The problem with the original commit was that it was printing
out all numbers as signed, which was wrong for unsigned numbers with the MSB set. Fix that and
add a unit test covering that case.

llvm-svn: 280480
2016-09-02 10:58:52 +00:00
Pavel Labath e6ece918e9 Revert "Make Scalar::GetValue more consistent"
This reverts commit r280476 as it breaks several tests on i386. I was fixing an 32-bit
breakage, and I did not run the 32-bit test suite before submitting, oops.

llvm-svn: 280478
2016-09-02 09:52:18 +00:00
Pavel Labath ce57a33e58 Bump up TestCallWithTimeout timeout
Still a bit flaky on remote targets. Trying a larger bump this time. :/

llvm-svn: 280477
2016-09-02 09:25:42 +00:00
Pavel Labath 21159ee681 Make Scalar::GetValue more consistent
Summary:
It seems the original intention of the function was printing signed values in decimal format, and
unsigned values in hex (without the leading "0x"). However, signed and unsigned long were
exchanged, which lead to amusing test failures in TestMemoryFind.py.

Instead of just switching the two, I think we should just print everything in decimal here, as
the current behaviour is very confusing (especially when one does not request printing of types).
Nothing seems to depend on this behaviour except and we already have a way for the user to
request the format he wants when printing values for most commands (which presumably does not go
through this function).

I also add a unit tests for the function in question.

Reviewers: clayborg, granata.enrico

Subscribers: lldb-commits

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

llvm-svn: 280476
2016-09-02 09:25:36 +00:00
Enrico Granata 7e3da7140a When updating a ValueObjectRegister, set the flag to remind yourself of whether it changed
llvm-svn: 280395
2016-09-01 18:31:40 +00:00
Enrico Granata df43d25fd3 Change the formula for tagged NSIndexPath data formatting
Fixes rdar://25192935

llvm-svn: 280389
2016-09-01 18:09:01 +00:00
Dimitar Vlahovski 2e50d8edc6 Minidump parsing
Summary:
This is a Minidump parsing code.
There are still some more structures/data streams that need to be added.
The aim ot this is to be used in the implementation of
a minidump debugging plugin that works on all platforms/architectures.
Currently we have a windows-only plugin that uses the WinAPI to parse
the dump files.
Also added unittests for the current functionality.

Reviewers: labath, amccarth

Subscribers: tberghammer, danalbert, srhines, lldb-commits, dschuff

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

llvm-svn: 280356
2016-09-01 11:29:53 +00:00
Pavel Labath cce9a609fb XFail TestMemoryFind on 32-bit architectures
the test fails for a very prosaic reason: `(const char *)0x1000` returns "4096" on x86_64 and
"1000" (without the "0x") on i386. I haven't tried other 32-bit arches, but I am guessing the
behaviour is the same. XFAIL until someone can get a chance to look at this.

llvm-svn: 280344
2016-09-01 09:17:37 +00:00
Enrico Granata 4fd2f404ae There exists at least one compiler on one platform that doesn't know how to assert on a std::shared_ptr<>
Appease it by being very very very explicit about what I mean

llvm-svn: 280328
2016-09-01 00:32:53 +00:00
Enrico Granata 7eef5fa147 Change "memory find" over to using a variation of the Boyer–Moore search algorithm
Fixes rdar://15455621 (and adds a test case for this command which - surprisingly and sadly - was not there originally)

llvm-svn: 280327
2016-09-01 00:09:59 +00:00
Enrico Granata 1b54baef15 Add a data formatter for std::function in libcxx
llvm-svn: 280295
2016-08-31 21:46:37 +00:00
Enrico Granata 9b6d4cf9bd Fix an issue where a synthetic child provider could only provide a value of the same size as the containing type
llvm-svn: 280294
2016-08-31 21:46:21 +00:00
Zachary Turner 6c978aa9da Remove unused variables.
Patch by Taras Tsugrii

llvm-svn: 280283
2016-08-31 20:03:14 +00:00
Pavel Labath c7f76104b3 Always rely on CFI unwind info for linux vdso
Summary:
The vdso is full of hand-written assembly which the instruction emulator has a hard time
understanding. Luckily, the kernel already provides us with correct unwind info for them. So
let's use it.

This fixes (at least) the AssertingInferiorTestCase.test_inferior_asserting_disassemble test on
android N i386.

Reviewers: tberghammer

Subscribers: tberghammer, danalbert, lldb-commits

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

llvm-svn: 280264
2016-08-31 17:43:49 +00:00
Pavel Labath 93b5b660e8 Fixup TestPyObjSynthProvider.py and enable it again
Summary:
- copies the new file in the cmake build
- adds an additional import statement
- marks the test as no-debug-info specific, as it seems to be testing a python feature

Reviewers: granata.enrico

Subscribers: lldb-commits

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

llvm-svn: 280261
2016-08-31 17:38:17 +00:00
Zachary Turner 9099901099 Add more unit tests for StringExtractor hex/endian functions.
There were a few corner cases that weren't tested for dealing with
extraction of an odd number of nibbles.  Add tests for those here.

llvm-svn: 280253
2016-08-31 15:50:50 +00:00
Pavel Labath b1c4b836b9 XFail new TestPyObjSynthProvider.py on linux until I can investigate the cause of the problem
llvm-svn: 280208
2016-08-31 08:43:40 +00:00
Pavel Labath b9739d4090 Revert r280137 and 280139 and subsequent build fixes
The rewrite of StringExtractor::GetHexMaxU32 changes functionality in a way which makes
lldb-server crash. The crash (assert) happens when parsing the "qRegisterInfo0" packet, because
the function tries to drop_front more bytes than the packet contains. It's not clear to me
whether we should consider this a bug in the caller or the callee, but it any case, it worked
before, so I am reverting this until we can figure out what the proper interface should be.

llvm-svn: 280207
2016-08-31 08:43:37 +00:00
Pavel Labath 1e3b086749 Revert r280200 and put it a proper fix
PeekChar returns a character, we want the whole string there.

llvm-svn: 280204
2016-08-31 07:49:37 +00:00
Pavel Labath 30ff4b4851 Fix lldb build on Mac.
Summary:
e80f43fd78
greatly improved an API, but missed one more occurence of legacy usage.

This leads to:
  if (extractor.GetHexBytes(&payload_bytes[0], payload_bytes.size(), '\xdd') != payload_bytes.size())
                                ~~~~~~~~~~~~~~~~~~~~~                                          ^~~~~~
  /lldb/include/lldb/Utility/StringExtractor.h:151:5: note: 'GetHexBytes' declared here

Reviewers: zturner

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D24064
Author: Taras Tsugrii <ttsugrii@fb.com>

llvm-svn: 280202
2016-08-31 07:42:38 +00:00
Sylvestre Ledru 2c07a069b8 Update the Linux code to reflect the changes done by zturner in r280139
llvm-svn: 280200
2016-08-31 07:16:56 +00:00
Enrico Granata f6275a08ef Rename the test class
llvm-svn: 280173
2016-08-30 23:00:52 +00:00
Enrico Granata 42ff957e25 Add an helper class lldb.formatters.synth.PythonObjectSyntheticChildProvider
This class enables one to easily write a synthetic child provider by writing a class that returns pairs of names and primitive Python values - the base class then converts those into LLDB SBValues

Comes with a test case

llvm-svn: 280172
2016-08-30 23:00:02 +00:00
Enrico Granata b9bddc4c7f Teach ValueObject::ReadPointedString how to read char[] in host memory
llvm-svn: 280166
2016-08-30 21:33:47 +00:00
Enrico Granata befba52f89 Fix a typo/thinko - this was generating the wrong kind of array
llvm-svn: 280164
2016-08-30 21:33:29 +00:00
Enrico Granata 639392fe76 Add SBType::GetArrayType() such that - given a type - one can make an array (of a given size) of that type
This is currently only implemented for the clang-based TypeSystem, but other languages are welcome to jump in!

llvm-svn: 280151
2016-08-30 20:39:58 +00:00
Zachary Turner 2d240d00da A few minor stylistic cleanups in StringExtractor.
Makes Peek() return a StringRef instead of a const char*.

This leads to a few callers of Peek() being able to be made a
little nicer (for example using StringRef member functions instead
of c-style strncmp and related functions) and generally safer
usage.

llvm-svn: 280139
2016-08-30 19:47:05 +00:00
Zachary Turner 9cbc8db016 Use llvm to do endian conversions.
LLDB was rolling its own endian conversion code, but functions to
do this already exist in LLVM.  While the code was probably
correct, no point reinventing the wheel when we have well tested
equivalents in LLVM that are one-liners.

llvm-svn: 280137
2016-08-30 19:28:01 +00:00
Zachary Turner eb666b7ac5 Add a few more unit tests for StringExtractor.
This is a NFC that adds more unit test coverage of the GetHex***
functions as well as the functions to extract numbers with a
specific endianness.

llvm-svn: 280124
2016-08-30 18:12:18 +00:00
Zachary Turner d08f09c113 Convert some StringExtractor functions to accept MutableArrayRefs.
MutableArrayRef<T> is essentially a safer version of passing around
(T*, length) pairs and provides some convenient functions for working
with the data without having to manually manipulate indices.

This is a minor NFC.

llvm-svn: 280123
2016-08-30 18:12:11 +00:00
Tamas Berghammer 7b21db9daa Remove mention of autoconf from the build instructions
autoconf+make have been removed from LLVM and LLDB ~6month ago. We
shouldn't advertise it on the website as a valid way to build LLDB.

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

llvm-svn: 280102
2016-08-30 15:32:52 +00:00
Pavel Labath 5c95ee4dd8 Revert "gdb-remote: Make the sequence mutex non-recursive"
This reverts commit r279725 as it breaks "dynamic register size" feature of mips.

llvm-svn: 280088
2016-08-30 13:56:11 +00:00
Pavel Labath fdc628f721 Fix darwin cmake build for r279997
llvm-svn: 280087
2016-08-30 13:18:46 +00:00
Pavel Labath e1c716c36c Fix fallout from the GetNameColonValue() refactor (r280000)
This fixes the linux test suite.

llvm-svn: 280074
2016-08-30 11:17:00 +00:00
Jason Molenda 455d3569d8 Update debugserver project to pull in StdStringExtractor.cpp instead of the new
llvm-using StringExtractor.cpp in the xcode project file settings.

llvm-svn: 280039
2016-08-30 00:58:23 +00:00
Zachary Turner 54695a339f Convert GetNameColonValue to return StringRefs.
StringExtractor::GetNameColonValue() looks for a substring of the
form "<name>:<value>" and returns <name> and <value> to the caller.
This results in two unnecessary string copies, since the name and
value are not translated in any way and simply returned as-is.

By converting this to return StringRefs we can get rid of hundreds
of string copies.

llvm-svn: 280000
2016-08-29 19:58:14 +00:00
Zachary Turner 44c35e80b1 Copy StringExtractor to StdStringExtractor.
I have some improvements to make to StringExtractor that require
using LLVM.  debugserver can't take a dependency on LLVM but uses
this file, so I'm forking it off into StdStringExtractor and
StringExtractor, so that StringExtractor can take advantage of
some performance improvements and readability improvements that
LLVM can provide.

llvm-svn: 279997
2016-08-29 19:45:59 +00:00
Zachary Turner 9b1669ae35 Remove std::atomic from lldb::Address.
std::atomic<uint64_t> requires 64-bit alignment in order to
guarantee atomicity.  Normally the compiler is pretty good about
aligning types, but an exception to this is when the type is
passed by value as a function parameter.  In this case, if your
stack is 4-byte aligned, most modern compilers (including clang
as of LLVM 4.0) fail to align the type, rendering the atomicity
ineffective.

A deeper investigation of the class's implementation suggests
that the use of atomic was in vain anyway, because if the class
were to be shared amongst multiple threads, there were already
other data races present, and that the proper way to ensure
thread-safe access to this data would be to use a mutex from a
higher level.

Since the std::atomic was not serving its intended purpose anyway,
and since the presence of it generates compiler errors on some
platforms that cannot be workaround, we remove std::atomic from
Address here.  Although unlikely, if data races do resurface
the proper fix should involve a mutex from a higher level, or an
attempt to limit the Address's access to a single thread.

llvm-svn: 279994
2016-08-29 19:30:26 +00:00
Zachary Turner 70a5ef15bd Fix some build bot breakages.
There was some code that was ifdef'ed out that I didn't catch
in my earlier patch.

llvm-svn: 279920
2016-08-27 16:38:11 +00:00
Zachary Turner 05c4ceba3d Add some unit tests for StringExtractor::GetNameColonValue.
These are helpful on their own, but will be even more useful
once the GetNameColonValue is updated to return StringRefs
instead of std::strings.

llvm-svn: 279919
2016-08-27 16:35:15 +00:00
Zachary Turner 26709df81d Convert some functions to use StringRef instead of c_str, len
This started as an effort to change StringExtractor to store a
StringRef internally instead of a std::string.  I got that working
locally with just 1 test failure which I was unable to figure out the
cause of.  But it was also a massive changelist due to a trickle
down effect of changes.

So I'm starting over, using what I learned from the first time to
tackle smaller, more isolated changes hopefully leading up to
a full conversion by the end.

At first the changes (such as in this CL) will seem mostly
a matter of preference and pointless otherwise.  However, there
are some places in my larger CL where using StringRef turned 20+
lines of code into 2, drastically simplifying logic.  Hopefully
once these go in they will illustrate some of the benefits of
thinking in terms of StringRef.

llvm-svn: 279917
2016-08-27 15:52:29 +00:00
Jim Ingham fb1bdc4922 This test now succeeds.
llvm-svn: 279897
2016-08-27 00:35:48 +00:00
Sean Callanan 3a878af29c Fixed the location of a conditional to make the following code clearer.
llvm-svn: 279896
2016-08-27 00:35:37 +00:00
Sean Callanan 8a33f6124c The error stream in IRForTarget is never null, so use it instead of the log.
llvm-svn: 279894
2016-08-27 00:20:38 +00:00
Sean Callanan 950e4ce8fc Fixed a bad lldbassert() condition.
llvm-svn: 279884
2016-08-26 23:48:03 +00:00
Kate Stone ac9c3a62a1 Tables of command options in LLDB benefit from hand-formatting to make it
easier to scan a set of options with a relatively large number of positional
arguments. This commit standardizes their formatting throughout LLDB and
applies surrounding directives to exempt them from being formatted by
clang-format.

These kinds of exemptions should be rare cases that benefit significantly
from alternative formatting. They also imply a long-term obligation to
maintain their format since the automated tools will not do so.

llvm-svn: 279882
2016-08-26 23:28:47 +00:00
Sean Callanan fc670cf6d0 Don't crash when trying to capture persistent variables in a block.
Reports an error instead.  We can fix this later to make persistent variables
work, but right now we hit an LLVM assertion if we get this wrong.

<rdar://problem/27770298>

llvm-svn: 279850
2016-08-26 18:12:39 +00:00
Pavel Labath 5e02fe6275 Switch linux and android CODE_OWNERS
Summary:
Oleksiy is no longer active in LLDB, I'd like to formally assume ownership of the linux and
android parts.

Reviewers: ovyalov, clayborg

Subscribers: tberghammer, danalbert, lldb-commits

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

llvm-svn: 279812
2016-08-26 10:06:13 +00:00
Pavel Labath 0e947eb636 Add cmake option to choose whether to use the builtin demangler
Summary:
Previously the builting demangler was on for platforms that explicitly set a flag by modifying
Mangled.cpp (windows, freebsd). The Xcode build always used builtin demangler by passing a
compiler flag. This adds a cmake flag (defaulting to ON) to configure the demangling library used
at build time. The flag is only available on non-windows platforms as there the system demangler
is not present (in the form we're trying to use it, at least).
The impact of this change is:
- linux: switches to the builtin demangler
- freebsd, windows: NFC (I hope)
- netbsd: switches to the builtin demangler
- osx cmake build: switches to the builtin demangler (matching the XCode build)

The main motivation for this is the cross-platform case, where it should bring more consistency
by removing the dependency on the host demangler (which can be completely unrelated to the debug
target).

Reviewers: zturner, emaste, krytarowski

Subscribers: emaste, clayborg, lldb-commits

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

llvm-svn: 279808
2016-08-26 09:47:58 +00:00
Jim Ingham 1bf7d30469 Make all the Function implementations different so the compiler won't share them.
Clang on ARM64 was making the three Function methods with identical bodies have
one implementation that was shared.  That threw off the count of breakpoints, since
we don't count as separate locations three functions with the same address.

I also cleaned up the test case while I was at it.

<rdar://problem/27001915>

llvm-svn: 279800
2016-08-26 01:27:50 +00:00
Enrico Granata ce8b743d59 Add a notification message in 'type lookup' when the current language doesn't yield results and one has to go across multiple languages to scan for types
Fixes rdar://22422313

llvm-svn: 279784
2016-08-25 22:11:01 +00:00