17814 Commits

Author SHA1 Message Date
Pavel Labath
4f5450742e Speculative fix for NetBSD bot for r341758
llvm-svn: 341759
2018-09-09 08:42:00 +00:00
Pavel Labath
f8b825f689 Re-commit "Modernize NativeProcessProtocol::GetSoftwareBreakpointTrapOpcode"
This recommits r341487, which was reverted due to failing tests with
clang. It turned out I had incorrectly expected that the literal arrays
passed to ArrayRef constructor will have static (permanent) storage.
This was only the case with gcc, while clang was constructing them on
stack, leading to dangling pointers when the function returns.

The fix is to explicitly assign static storage duration to the opcode
arrays.

llvm-svn: 341758
2018-09-09 06:01:12 +00:00
Pavel Labath
12286a2739 Revert "Modernize NativeProcessProtocol::GetSoftwareBreakpointTrapOpcode"
This reverts commit r341487. Jan Kratochvil reports it breaks LLDB when
compiling with clang.

llvm-svn: 341747
2018-09-08 10:33:14 +00:00
David Bolvansky
85dacd1116 Check if a terminal supports colors on Windows properly
Summary:
Previously we SetUseColor(true) wrongly when output was not a terminal so it broken some (not public) bots.

Thanks for issue report, @stella.stamenova

Reviewers: stella.stamenova, zturner

Reviewed By: stella.stamenova

Subscribers: abidh, lldb-commits, stella.stamenova

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

llvm-svn: 341746
2018-09-08 07:15:56 +00:00
Davide Italiano
fc89d18bb1 [XCodeproj] Remove extra whitespace in SBAPI path.
llvm-svn: 341732
2018-09-07 23:49:05 +00:00
Davide Italiano
6af9fe07b9 [Disassembler] Run ARM-specific tests only if the ARM backend is built.
<rdar://problem/44239070>

llvm-svn: 341714
2018-09-07 21:36:21 +00:00
Jason Molenda
25a1525e7e Add the Disassembler unit test dir.
llvm-svn: 341696
2018-09-07 18:51:10 +00:00
Jim Ingham
4911d36aa6 NFC: Move Searcher::Depth into lldb-enumerations as SearchDepth.
In a subsequent commit, I will need to expose the search depth
to the SB API's, so I'm moving this define into lldb-enumerations
where it will get added to the lldb module.

llvm-svn: 341690
2018-09-07 18:43:04 +00:00
Davide Italiano
f06ffeee21 [Scalar] Commit the correct patch, forgot git add.
<rdar://problem/44229924>

llvm-svn: 341685
2018-09-07 18:22:27 +00:00
Jim Ingham
effe60fdbd Add input files to the "prepare swig bindings" step.
This build phase had no inputs, so you always had to manually
delete LLDBWrapPython.cpp to get it to rebuild.  Add the correct
inputs.

llvm-svn: 341683
2018-09-07 18:10:26 +00:00
Davide Italiano
5ccc9df843 [Scalar] Fix undefined behaviour when converting double to long.
This showed up in an Ubsan build of lldb (inside the CFAbsoluteTime
data formatter). As we only care about the bit pattern, we just
round to the nearest double, and truncate to a size that fits
in ulonglong_t.

<rdar://problem/44229924>

llvm-svn: 341682
2018-09-07 18:03:43 +00:00
Alexander Polyakov
469304e8fb [ARC] Make char unsigned by default
Summary: This patch specifies 'char' default sign on ARC.

Reviewers: tatyana-krasnukha, clayborg

Reviewed By: tatyana-krasnukha, clayborg

Subscribers: clayborg, lldb-commits

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

llvm-svn: 341667
2018-09-07 14:45:32 +00:00
Jason Molenda
0dfb84ce9b Enable the fp-armv8 disassembler feature when disassembling Cortex-M
code.  This will enable disassembly of the optional subset of
neon that some Cortex cores support.  Add a unit test to check
that a few of these instructions disassemble as expected.

<rdar://problem/26674303> 

llvm-svn: 341623
2018-09-07 01:28:48 +00:00
Raphael Isemann
ee65d57321 Reland [ClangUserExpression][NFC] Removed unused code
The GetLanguageForExpr has side effects, so we can't remove this
call without breaking the completion mechanism. However, we can
keep the change that gets rid of this unnecessary variable.

llvm-svn: 341535
2018-09-06 10:24:11 +00:00
Raphael Isemann
20c88ebf57 Revert "[ClangUserExpression][NFC] Removed unused code"
GetLanguageForExpr has side effects, so this actually breaks
the completion. Should fix TestExprCompletion.

llvm-svn: 341532
2018-09-06 09:42:44 +00:00
Jason Molenda
b0d33e9b3c Re-instate a bit of code that was commented out in r188246 which
reads an ObjectFileMachO's string table in one chunk.  Originally
this was commented out because binaries in the system's shared cache
all share a mega-string table and so reading the entire mega-strtab
for each binary was a performance problem.

In the reinstated code, I add a check that the binary we're reading
from memory is not in the shared cache (there isn't a constant in
<mach-o/loader.h> for this bit yet; we hardcode the value in one
other place in ObjectFileMachO alread).  For binaries that we're
reading out of memory that are NOT in the shared cache, reading 
the string table in one chunk is a big performance improvement.

Also have debugserver send up the flags value for binaries in its
response to the jGetLoadedDynamicLibrariesInfos request.

NFC.

<rdar://problem/33604496> 

llvm-svn: 341511
2018-09-06 00:55:27 +00:00
Adrian Prantl
4954f6a565 Print column info in backtraces et al. if available
This patch allows LLDB to print column info in backtraces et al. if
available, which is useful when the backtrace contains a frame like
the following:

  f(can_crash(0), can_crash(1));

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

llvm-svn: 341506
2018-09-05 23:52:08 +00:00
David Bolvansky
8aa23614af Set Windows console mode to enable support for ansi escape codes
Summary:
Windows console now supports supports ANSI escape codes, but we need to enable it using SetConsoleMode with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag.

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences.

Syntax hightlighting now works fine on Windows:
https://i.imgur.com/P0i04A7.png

Reviewers: JDevlieghere, teemperor, zturner

Reviewed By: zturner

Subscribers: abidh, lldb-commits

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

llvm-svn: 341497
2018-09-05 22:06:58 +00:00
Pavel Labath
ef1b1b5d17 Modernize NativeProcessProtocol::GetSoftwareBreakpointTrapOpcode
return the opcode as a Expected<ArrayRef> instead of a
Status+pointer+size combo.

I also move the linux implementation to the base class, as the trap
opcodes are likely to be the same for all/most implementations of the
class (except the arm one, where linux chooses a different opcode than
what the arm spec recommends, which I keep linux-specific).

llvm-svn: 341487
2018-09-05 18:08:56 +00:00
Tatyana Krasnukha
bc555237a4 Hold GIL while allocating memory for PythonString.
Summary:
Swig wraps C++ code into SWIG_PYTHON_THREAD_BEGIN_ALLOW; ...  SWIG_PYTHON_THREAD_END_ALLOW;
Thus, LLDB crashes with "Fatal Python error: Python memory allocator called without holding the GIL" when calls an lldb_SB***___str__ function.

Reviewers: clayborg

Reviewed By: clayborg

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

llvm-svn: 341482
2018-09-05 17:07:29 +00:00
Raphael Isemann
23ee5cbd2c [www] Updated outdated download links [NFC]
Also added ubuntu and Arch Linux links.

llvm-svn: 341471
2018-09-05 14:27:48 +00:00
Frederic Riss
412f24dd2d Change TestCompletion to only ever look inside of BaseDir
TestCompletion was failing quite frequently on our Linux bots. Some tracing
revealed that when we are iterating BaseDir we are not getting all the entries.
More specifically, we are sometimes missing the entry corresponding to the
TestCompletion directory that the first test in DirCompletionAbsolute is
looking for. BaseDir is the directory where lit is creating all the temporary
files. The semantics of opendir/readdir are unclear when it comes to iterating
over a directory that changes contents, but it seems like on Linux you might
fail to list an entry even if it was there before opendir and is still present
throughout the iteration. Changing the test to only look inside of the test-
specific directory seems to fix the instability.

This commit also removes some assertions that were added to try to track down
this issue.

llvm-svn: 341425
2018-09-04 23:09:49 +00:00
David Bolvansky
4d46fde679 Terminate debugger if an assert was hit
Reviewers: JDevlieghere, teemperor, #lldb

Reviewed By: JDevlieghere

Subscribers: clayborg, lemo, lldb-commits

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

llvm-svn: 341387
2018-09-04 17:19:15 +00:00
David Bolvansky
52cadf0d2d [NFC] Fixed enum constant in boolean context error
Summary:
/home/xbolva00/LLVM/llvm/tools/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:656:59: warning: enum constant in boolean context [-Wint-in-bool-context]
     if (mh.magic == llvm::MachO::MH_CIGAM || llvm::MachO::MH_MAGIC)
                                                           ^~~~~~~~
/home/xbolva00/LLVM/llvm/tools/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:658:62: warning: enum constant in boolean context [-Wint-in-bool-context]
     if (mh.magic == llvm::MachO::MH_CIGAM_64 || llvm::MachO::MH_MAGIC_64)

Reviewers: JDevlieghere, teemperor

Reviewed By: teemperor

Subscribers: abidh, lldb-commits

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

llvm-svn: 341340
2018-09-03 22:09:08 +00:00
David Bolvansky
122441d8fd [NFC] Use llvm_unreachable instead of lldb::assert
Summary: Fixes implicit fall through warnings

Reviewers: JDevlieghere, teemperor

Reviewed By: teemperor

Subscribers: lldb-commits

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

llvm-svn: 341339
2018-09-03 22:08:30 +00:00
David Bolvansky
7a213d2f9b [ClangUserExpression][NFC] Removed unused code
llvm-svn: 341334
2018-09-03 18:21:21 +00:00
David Bolvansky
26e97995c4 [PseudoTerminal][NFC] Use llvm errno helpers
Summary:
LLVM provide (str)errno helpers, so convert code to use it.

Also fixes warning:
/home/xbolva00/LLVM/llvm/tools/lldb/source/Host/common/PseudoTerminal.cpp:248:25: warning: ignoring return value of ‘char* strerror_r(int, char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
             ::strerror_r(errno, error_str, error_len);

Reviewers: JDevlieghere

Reviewed By: JDevlieghere

Subscribers: abidh, lldb-commits

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

llvm-svn: 341320
2018-09-03 14:59:57 +00:00
David Bolvansky
aa75dd128c [Symtab][NFC] Added llvm_unreachable to supress compiler warning
Reviewers: JDevlieghere

Reviewed By: JDevlieghere

Subscribers: lldb-commits

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

llvm-svn: 341315
2018-09-03 12:57:54 +00:00
Aleksandr Urakov
e8fc05ce7d [DWARF] Fix dwarf5-index-is-used.cpp
Summary:
`dwarf5-index-is-used.cpp` have been failing after rL340206, because `clang`
have stopped to emit pubnames by default after that change. Current patch adds
`-gpubnames` option to the `clang` command line in the test to emit pubnames.

Reviewers: labath, dblaikie

Reviewed By: labath

Subscribers: clayborg, probinson, teemperor, lldb-commits, aprantl, JDevlieghere, abidh, stella.stamenova

Tags: #lldb

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

llvm-svn: 341296
2018-09-03 07:16:06 +00:00
Pavel Labath
89d2245a2a Ignore unicode decode errors in test suite's encoded_file class
These happen in a couple of tests when lldb tries to pretty print a
const char * variable in the inferior which points to garbage. Instead,
we have the python replace the invalid sequences with the unicode
replacement character.

llvm-svn: 341274
2018-09-01 12:15:46 +00:00
Frederic Riss
78a10a7a9b File completion bugfix
If you tried to complete somwthing like ~/., lldb would come up with a lot
of non-existent filenames by concatenating every exisitng file in the directory
with an initial '.'.

This was due to a workaround for an llvm::fs::path::filename behavior that
was not applied selectively enough.

llvm-svn: 341268
2018-08-31 23:03:28 +00:00
Pavel Labath
332447f4b4 Avoid using short identifiers in some tests
This applies the same workaround  as r321271 to other tests. The root
problem is that lldb finds an internal symbol with the same name in the
debug info of system libraries, and then fails to disambiguate between
the two.

llvm-svn: 341235
2018-08-31 18:25:01 +00:00
Frederic Riss
7f03f3d7f9 Fix a comment to use the correct variable name.
llvm-svn: 341233
2018-08-31 18:14:53 +00:00
Pavel Labath
8b0853a6da XFail one more VSCode test which fails under heavy load
llvm-svn: 341186
2018-08-31 08:31:27 +00:00
Pavel Labath
d9e8c773de Fix a typo in mac SIP workaround
presumably the or subexpression was meant to be evaluated first. The way
it is now means that we apply the workaround for any python in `/usr`,
which matches pretty much every unix system.

llvm-svn: 341167
2018-08-31 06:01:02 +00:00
Pavel Labath
e7ec083f19 Increase qHostInfo packet timeout
Host info computation can involve DNS traffic (to compute the remote
host name). On very unreliable networks (such as free WiFi on trains),
this can take several seconds to complete or timeout. Increase the
qHostInfo timeout to account for this.

llvm-svn: 341164
2018-08-31 05:34:03 +00:00
Pavel Labath
d5fa57eb19 Silence some "control reaches end of non-void function" warnings with gcc
llvm-svn: 341163
2018-08-31 05:18:11 +00:00
Raphael Isemann
1f0b1027f1 Fixed missing sidebars on the website
We didn't mark these HTML files as executable, which means that
the SSI includes for including the sidebar didn't work.

llvm-svn: 341157
2018-08-31 02:07:05 +00:00
Raphael Isemann
960b133749 Fixed comment for UserExpression::Complete [NFC]
llvm-svn: 341126
2018-08-30 21:31:04 +00:00
Raphael Isemann
c11a780ed6 Use a CompletionRequest in the expression command completion [NFC]
The patch was originally written before we had a CompletionRequest,
so it still used a StringList to pass back the completions to
the request.

llvm-svn: 341124
2018-08-30 21:26:32 +00:00
Raphael Isemann
d424c2a8a1 Move NoBuiltin=true closer to the other LangOpts code [NFC]
llvm-svn: 341121
2018-08-30 20:56:58 +00:00
Raphael Isemann
20892fb4b0 Adjusting some comments in ClangExpressionParser.cpp
llvm-svn: 341112
2018-08-30 20:19:57 +00:00
Raphael Isemann
b83f914b6e Added missing include to <cctype> for 'std::isalnum'
Should fix the failing Windows bots.

llvm-svn: 341109
2018-08-30 20:14:22 +00:00
Raphael Isemann
39ec6e7049 Fixed code style for the CodeCompletion members [NFC]
This code is in LLDB, so it should also follow the LLDB code style
and use the m_ prefix for members.

llvm-svn: 341105
2018-08-30 19:47:53 +00:00
Pavel Labath
a95c33f600 Fix deadlock in gdb-client tests
Using a listen queue of length 0 caused a deadlock on my machine in the
gdb-client tests while attempting to establish the loopback socket
connection.

I am not sure if this is down to a different python or kernel version,
but in either case, having queue of length zero sounds like a bad idea,
so I'm bumping that to one (which also fixes the deadlock).

llvm-svn: 341096
2018-08-30 19:14:02 +00:00
Raphael Isemann
7fae4932ad Move Predicate.h from Host to Utility
Summary:
This class was initially in Host because its implementation used to be
very OS-specific. However, with C++11, it has become a very simple
std::condition_variable wrapper, with no host-specific code.

It is also a general purpose utility class, so it makes sense for it to
live in a place where it can be used by everyone.

This has no effect on the layering right now, but it enables me to later
move the Listener+Broadcaster+Event combo to a lower layer, which is
important, as these are used in a lot of places (notably for launching a
process in Host code).

Reviewers: jingham, zturner, teemperor

Reviewed By: zturner

Subscribers: xiaobai, mgorny, lldb-commits

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

llvm-svn: 341089
2018-08-30 17:51:10 +00:00
Raphael Isemann
7482973411 Added initial code completion support for the expr command
Summary:
This patch adds initial code completion support for the `expr` command.

We now have a completion handler in the expression CommandObject that
essentially just attempts to parse the given user expression with Clang with
an attached code completion consumer. We filter and prepare the
code completions provided by Clang and send them back to the completion
API.

The current completion is limited to variables that are in the current scope.
This includes local variables and all types used by local variables. We however
don't do any completion of symbols that are not used in the local scope (or
in some other way already in the ASTContext).

This is partly because there is not yet any code that manually searches for additiona
information in the debug information. Another cause is that for some reason the existing
code for loading these additional symbols when requested by Clang doesn't seem to work.
This will be fixed in a future patch.

Reviewers: jingham, teemperor

Reviewed By: teemperor

Subscribers: labath, aprantl, JDevlieghere, friss, lldb-commits

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

llvm-svn: 341086
2018-08-30 17:29:37 +00:00
Adrian Prantl
2305c049a3 Remove redundant initialization
llvm-svn: 341080
2018-08-30 15:39:08 +00:00
Adrian Prantl
431b158400 Support setting a breakpoint by FileSpec+Line+Column in the SBAPI.
This patch extends the SBAPI to allow for setting a breakpoint not
only at a specific line, but also at a specific (minimum) column. When
a column is specified, it will try to find an exact match or the
closest match on the same line that comes after the specified
location.

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

llvm-svn: 341078
2018-08-30 15:11:00 +00:00
Frederic Riss
0d0a5960a5 Provide a default implementation of TypeSystem::GetNumTemplateArguments
... and remove the dummy implementations from the languages that do not
support it.

llvm-svn: 341006
2018-08-30 00:37:23 +00:00