Commit Graph

20397 Commits

Author SHA1 Message Date
Jonas Devlieghere 4e053ff1d1 [NFC] Move dumping into GDBRemotePacket
This moves the dumping logic from the GDBRemoteCommunicationHistory
class into the GDBRemotePacket so that it can be reused from the
reproducer command object.

llvm-svn: 372028
2019-09-16 20:02:57 +00:00
Raphael Isemann 0d8a008611 [lldb] Remove SetCount/ClearCount from Flags
Summary:
These functions are only used in tests where we should test the actual flag values instead of counting all bits for an approximate check.
Also these popcount implementation aren't very efficient and doesn't seem to be optimised to anything fast.

Reviewers: davide, JDevlieghere

Reviewed By: davide, JDevlieghere

Subscribers: abidh, JDevlieghere, lldb-commits

Tags: #lldb

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

llvm-svn: 372018
2019-09-16 18:02:49 +00:00
Raphael Isemann 21641a2f6d [lldb][NFC] Make ApplyObjcCastHack less scary
llvm-svn: 372017
2019-09-16 18:02:21 +00:00
Fangrui Song b026b3e53d [test] Add -z separate-code to fix tests that ae sensitive to exact addresses after r371958
llvm-svn: 371962
2019-09-16 07:52:30 +00:00
Jan Kratochvil 9060643380 [lldb] Code cleanup: FormattersContainer.h: Use range-based for loops.
Suggested for an other loop by Pavel Labath in:
	https://reviews.llvm.org/D66654#inline-605808

llvm-svn: 371922
2019-09-14 15:46:51 +00:00
Jonas Devlieghere 97fc8eb438 [Reproducer] Add reproducer dump command.
This adds a reproducer dump commands which makes it possible to inspect
a reproducer from inside LLDB. Currently it supports the Files, Commands
and Version providers. I'm planning to add support for the GDB Remote
provider in a follow-up patch.

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

llvm-svn: 371909
2019-09-13 23:27:31 +00:00
Jonas Devlieghere ff5225bfb6 [Reproducer] Move GDB Remote Packet into Utility. (NFC)
To support dumping the reproducer's GDB remote packets, we need the
(de)serialization logic to live in Utility rather than the GDB remote
plugin. This patch renames StreamGDBRemote to GDBRemote and moves the
relevant packet code there.

Its uses in the GDBRemoteCommunicationHistory and the
GDBRemoteCommunicationReplayServer are updated as well.

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

llvm-svn: 371907
2019-09-13 23:14:10 +00:00
Jonas Devlieghere 61dc038f8d [test] Update TestAPILog to pass on Windows.
The pretty function macro is including __cdecl on Windows, which was
causing the pattern matching to fail. This should fix that.

llvm-svn: 371905
2019-09-13 22:14:59 +00:00
Tim Shen 573863ea18 [LLDB] Add missing breaks for switch statement
llvm-svn: 371902
2019-09-13 22:00:03 +00:00
Jonas Devlieghere a3e27633a8 [test] Print the log output on failure.
This ensures that if the assertion fails we dump the log content. This
should help me investigate what the output looks like on Windows, where
the test is failing.

llvm-svn: 371899
2019-09-13 21:15:03 +00:00
Jan Korous f69c91780f [Support] Add overload writeFileAtomically(std::function Writer)
Differential Revision: https://reviews.llvm.org/D67424

llvm-svn: 371890
2019-09-13 20:08:27 +00:00
Jonas Devlieghere 449ca01bac [Reproducer] Include the this pointer in the API log.
The new centralized way of doing API logging through the reproducer
macros is lacking a way to easily correlate instances of API objects.
Logging the this pointer makes that significantly easier. For methods
this is now always passed as the first argument, similar to the self
argument in Python.

This patch also adds a test case for API logging, which uncovered that
we were not quoting strings.

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

llvm-svn: 371885
2019-09-13 19:08:10 +00:00
Adrian McCarthy 646a893f15 Fix error in ProcessLauncherWindows.cpp
Restored missing parens on a function call.

llvm-svn: 371882
2019-09-13 18:50:39 +00:00
George Rimar 69ba3defaf [lldb] - Update unit tests after lib/ObjectYAML change.
An update after r371865

llvm-svn: 371866
2019-09-13 16:00:28 +00:00
Raphael Isemann 0d9a201e26 [lldb][NFC] Remove ArgEntry::ref member
The StringRef should always be identical to the C string, so we
might as well just create the StringRef from the C-string. This
might be slightly slower until we implement the storage of ArgEntry
with a string instead of a std::unique_ptr<char[]>. Until then we
have to do the additional strlen on the C string to construct the
StringRef.

llvm-svn: 371842
2019-09-13 11:26:48 +00:00
Raphael Isemann 1f644bb163 [lldb][NFC] Simplify Args::ReplaceArgumentAtIndex
This code is not on any performance critical path that would
justify this shortening optimization. It also makes it possible
to turn 'ref' into a function (as this is the only place where
we modify this ArgEntry member).

llvm-svn: 371836
2019-09-13 10:41:29 +00:00
Raphael Isemann a024f5e370 [lldb][NFC] Make ArgEntry::quote private and provide a getter
llvm-svn: 371823
2019-09-13 08:26:00 +00:00
Richard Smith c624510f13 For PR17164: split -fno-lax-vector-conversion into three different
levels:

 -- none: no lax vector conversions [new GCC default]
 -- integer: only conversions between integer vectors [old GCC default]
 -- all: all conversions between same-size vectors [Clang default]

For now, Clang still defaults to "all" mode, but per my proposal on
cfe-dev (2019-04-10) the default will be changed to "integer" as soon as
that doesn't break lots of testcases. (Eventually I'd like to change the
default to "none" to match GCC and general sanity.)

Following GCC's behavior, the driver flag -flax-vector-conversions is
translated to -flax-vector-conversions=integer.

This reinstates r371805, reverted in r371813, with an additional fix for
lldb.

llvm-svn: 371817
2019-09-13 06:02:15 +00:00
Alex Langford 5b2b38e053 [Target] Move InferiorCall to Process
Summary:
InferiorCall is only ever used in Process, and it is not specific to
POSIX. By moving it to Process, we can remove all dependencies on plugins from
Process. Moving InferiorCall to Process seems to achieve this quite well.
Additionally, the name InferiorCall is a little vague now, so we rename
it something a bit more specific.

Reviewers: JDevlieghere, clayborg, compnerd, labath

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 371796
2019-09-13 00:02:05 +00:00
Jason Molenda 0a39ef4704 The setUp/tearDown methods I added mssed up the test function; reorder.
Thanks to Ted Woodward for catching this one.

llvm-svn: 371795
2019-09-13 00:01:49 +00:00
Jonas Devlieghere decff073ee [NFC] Sort source files in Utility/CMakeLists.txt
llvm-svn: 371784
2019-09-12 22:34:59 +00:00
Raphael Isemann d23fab09a2 [lldb][NFC] Simplify makefiles also for breakpoint tests
These tests were temporarily missing when the big Makefile
simplification patch landed, so this just applies the same change
to these tests.

llvm-svn: 371738
2019-09-12 14:21:59 +00:00
Raphael Isemann 03a111dc46 [lldb] Remove duplicated breakpoint tests
After reverting the deletion of the functionalities/breakpoint tests,
we now have some tests twice in the test/ folder which breaks dotest:

* commands/breakpoint/basic
* functionalities/breakpoint/breakpoint_command

After looking over these tests, I think it makes sense to only
keep the original functionalities/ folder. The commands/breakpoint/basic
test are not exclusively testing the breakpoint command itself, so
they shouldn't be in commands/ in the first place. Note that these
folders have identical contents (beside small adjustments regarding
the Makefile which landed after the restructuring).

llvm-svn: 371734
2019-09-12 14:07:16 +00:00
Jonas Devlieghere 4a491ec491 [Reproducer] Move the command loader into the reproducer (NFC)
This just moves the CommandLoader utility into the reproducer namespace
and makes it accessible outside the API layer. This is setting things up
for a bigger change.

llvm-svn: 371689
2019-09-11 23:27:12 +00:00
Jonas Devlieghere d9aec34b97 [NFC] Reformat SBDebugger before making changes
llvm-svn: 371688
2019-09-11 23:27:09 +00:00
Jonas Devlieghere bcc24e46ba [Reproducer] Move GDB Remote Provider into Reproducer (NFC)
Originally the idea was for providers to be defined close to where they
are used. While this helped designing the providers in such a way that
they don't depend on each other, it also means that it's not possible to
access them from a central place. This proved to be a problem for some
providers and resulted in them living in the reproducer class.

The ProcessGDBRemote provider is the last remaining exception. This
patch makes things consistent and moves it into the reproducer like the
other providers.

llvm-svn: 371685
2019-09-11 23:15:12 +00:00
Vedant Kumar 21d417dc18 [DWARF] Evaluate DW_OP_entry_value
Add support for evaluating DW_OP_entry_value. This involves parsing
DW_TAG_call_site_parameter and wiring the information through to the expression
evaluator.

rdar://54496008

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

llvm-svn: 371668
2019-09-11 21:23:45 +00:00
Vedant Kumar bb58118525 [Status] Add a LLDB_ERRORF macro for error reporting (similar to LLDB_LOGF)
llvm-svn: 371667
2019-09-11 21:23:42 +00:00
Alex Langford 1b385a1802 [Plugins/Process] Remove direct use of ClangASTContext from InferiorCallPOSIX
Summary:
InferiorCallPOSIX directly grabs a ClangASTContext from the Target it
has and does no error checking. I don't think these functions have a
reason to know about clang specifically. Additionally, using
`GetScratchTypeSystemForLanguage` forces us to do error checking since
it returns an Expected.

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

llvm-svn: 371654
2019-09-11 20:36:28 +00:00
Konrad Kleine 2f3884ca1d Revert "[LLDB][ELF] Load both, .symtab and .dynsym sections"
This reverts commit 3a4781bbf4.

llvm-svn: 371625
2019-09-11 14:33:37 +00:00
Konrad Kleine d44c4a71df Revert "[LLDB][ELF] Fixup for comments in D67390"
This reverts commit 813f05915d.

llvm-svn: 371624
2019-09-11 14:33:21 +00:00
Raphael Isemann 3ad8278737 [lldb][NFC] Make include directories in Clang expression parser a std::string
We never compare these directories (where ConstString would be good) and
essentially just convert this back to a normal string in the end. So we might
as well just use std::string. Also makes it easier to unittest this code
(which was the main motivation for this change).

llvm-svn: 371623
2019-09-11 14:33:11 +00:00
Raphael Isemann 1761f6fc42 [lldb][NFC] Remove dead code in SBAddress::GetDescription
llvm-svn: 371618
2019-09-11 13:57:41 +00:00
Raphael Isemann 9703f46fc1 [lldb][NFC] Sort files in unittests/Expression/CMakeLists.txt
llvm-svn: 371614
2019-09-11 12:57:49 +00:00
Konrad Kleine 813f05915d [LLDB][ELF] Fixup for comments in D67390
llvm-svn: 371600
2019-09-11 10:12:36 +00:00
Konrad Kleine 3a4781bbf4 [LLDB][ELF] Load both, .symtab and .dynsym sections
Summary:
This change ensures that the .dynsym section will be parsed even when there's already is a .symtab.

It is motivated because of minidebuginfo (https://sourceware.org/gdb/current/onlinedocs/gdb/MiniDebugInfo.html#MiniDebugInfo).

There it says:

    Keep all the function symbols not already in the dynamic symbol table.

That means the .symtab embedded inside the .gnu_debugdata does NOT contain the symbols from .dynsym. But in order to put a breakpoint on all symbols we need to load both. I hope this makes sense.

My other patch D66791 implements support for minidebuginfo, that's why I need this change.

Reviewers: labath, espindola, alexshap

Subscribers: JDevlieghere, emaste, arichardson, MaskRay, lldb-commits

Tags: #lldb

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

llvm-svn: 371599
2019-09-11 10:00:30 +00:00
David Zarzycki b250d5ff5e [LLDB] Do not try to canonicalize gethostname() result
This code is trying too hard and failing. Either the result of
gethostname() is canonical or it is not. If it is not, then trying to
canonicalize it is – for various reasons – a lost cause. For example, a
given machine might have multiple network interfaces with multiple
addresses per interface, each with a different canonical name.
Separably, the result of HostInfoPosix::GetHostname() and latency
thereof shouldn't depend on whether networking is up or down or what
network the machine happened to be attached to at any given moment (like
a laptop that travels between work and home).

https://reviews.llvm.org/D67230

llvm-svn: 371596
2019-09-11 08:32:37 +00:00
Jason Molenda 9b27586e83 Ah, only skip this for embedded darwin targets.
llvm-svn: 371583
2019-09-11 01:03:24 +00:00
Jason Molenda f0321c094d Skip a test in TestProcessIO.py when running against ios devices.
llvm-svn: 371582
2019-09-11 01:02:30 +00:00
Jim Ingham 6ca76ceb63 Fix a thinko in handling the QSetLogging packet.
The comparison against LOG_MEMORY shortcut all the LOG_MEMORY_*
log channels.  It has to come last.

llvm-svn: 371560
2019-09-10 21:58:22 +00:00
Vedant Kumar 3ef7dbd665 [lldbtest] Add an "expected_cmd_failure" option to the filecheck helper
llvm-svn: 371544
2019-09-10 18:36:53 +00:00
Vedant Kumar ff02109ad4 [Function] Factor out GetCallEdgeForReturnAddress, NFC
Finding the call edge in a function which corresponds to a particular
return address is a generic/useful operation.

llvm-svn: 371543
2019-09-10 18:36:50 +00:00
Adrian Prantl 9b23df63ec Implement DW_OP_convert
This patch adds basic support for DW_OP_convert[1] for integer
types. Recent versions of LLVM's optimizer may insert this opcode into
DWARF expressions. DW_OP_convert is effectively a type cast operation
that takes a reference to a base type DIE (or zero) and then casts the
value at the top of the DWARF stack to that type. Internally this
works by changing the bit size of the APInt that is used as backing
storage for LLDB's DWARF stack.

I managed to write a unit test for this by implementing a mock YAML
object file / module that takes debug info sections in yaml2obj
format.

[1] Typed DWARF stack. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1

<rdar://problem/48167864>

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

llvm-svn: 371532
2019-09-10 16:17:38 +00:00
Raphael Isemann d9442afba1 [lldb] Readd missing functionalities/breakpoint tests
It seems when I restructured the test folders the functionalities/breakpoint
was deleted. This just reverts this change and re-adds the tests.

llvm-svn: 371512
2019-09-10 12:04:04 +00:00
David Carlier c190890c29 [LLDB] FreeBSD fix new SetFile call.
llvm-svn: 371491
2019-09-10 07:33:39 +00:00
Jonas Devlieghere e0ea8d87eb [Utility] Replace `lldb_private::CleanUp` by `llvm::scope_exit`
This removes the CleanUp class and replaces its usages with llvm's
ScopeExit, which has similar semantics.

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

llvm-svn: 371474
2019-09-10 00:20:50 +00:00
Alex Langford 1dbee8f043 [Expression] Remove unused header from LLVMUserExpression
llvm-svn: 371472
2019-09-09 23:59:54 +00:00
Alex Langford 9e86561878 [Symbol] Give ClangASTContext a PersistentExpressionState instead of a ClangPersistentVariables
ClangASTContext doesn't use m_persistent_variables in a way specific to
ClangPersistentVariables. Therefore, it should hold a unique pointer to
PersistentExpressionState instead of a ClangPersistentVariablesUP.
This also prevents you from pulling in a plugin header when including
ClangASTContext.h

Doing this exposed an implicit dependency in ObjCLanguage that was
corrected by including ClangModulesDeclVendor.h

llvm-svn: 371470
2019-09-09 23:11:43 +00:00
Jonas Devlieghere e0bce4e1c2 Revert "[Reproducer] Add a `cont` to ModuleCXX.test"
This should no longer be necessary after r371459.

llvm-svn: 371460
2019-09-09 22:07:45 +00:00
Jonas Devlieghere 9b961cc604 [Reproducer] Disconnect when the replay server is out of packets.
This is a fix for the issue described in r371144.

> On more than one occasion I've found this test got stuck during replay
> while waiting for a packet from debugserver when the debugger was in
> the process of being destroyed.

When the replay server is out of packets we should just disconnect so
the debugger doesn't have to do any cleanup that it wouldn't do during
capture.

llvm-svn: 371459
2019-09-09 22:05:48 +00:00