Commit Graph

11735 Commits

Author SHA1 Message Date
Ed Maste 8e45371307 Revert r238425, it undoes the purpose of the test
llvm.org/pr23686

llvm-svn: 238437
2015-05-28 15:58:10 +00:00
Aidan Dodds 5f2d0c3c23 Fix THUMB function detection when function name is not prefixed.
Differential Revision: http://reviews.llvm.org/D10062

llvm-svn: 238433
2015-05-28 15:37:01 +00:00
Tamas Berghammer 034980681d Fix write register context in EmulateInstructionARM::EmulateMOVRdRm
llvm-svn: 238431
2015-05-28 15:09:45 +00:00
Ed Maste 7daee53732 Fix TestCommandScript: return an error if target executable is not set
The test invokes the 'targetname' test command before setting a
target executable, which caused Python to raise TypeError: cannot
concatenate 'str' and 'NoneType' objects.

llvm.org/pr23686

llvm-svn: 238425
2015-05-28 14:22:57 +00:00
Pavel Labath fb7d5b8384 Fix race in IOHandlerProcessSTDIO
Summary:
IOHandlerProcessSTDIO::Run() was opening the pipe for interrupt requests lazily. This was racing
with another thread executing IOHandlerProcessSTDIO::Cancel() simultaneously. I fix this by
opening the pipe in the object constructor. The pipe will be automatically closed when the object
is destroyed.

Test Plan: Tests pass on linux.

Reviewers: clayborg, ribrdb

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10060

llvm-svn: 238423
2015-05-28 13:41:08 +00:00
Pavel Labath b1f24ad3cf Cleanup the forked child in TestChangeProcessGroup
if the test fails for some reason, we can end up leaking a process. This has a tendency to
confuse the buildbots. I have added a cleanup hook to make sure we cleanup the child.

llvm-svn: 238421
2015-05-28 13:12:48 +00:00
Ed Maste 3d3c60117f Add thumb breakpoint for FreeBSD (currently disabled)
Patch by Tom Rix, with additional changes to sync whitespace/style with
PlatformLinux.cpp.

It is currently disabled pending kernel support.

Differential Revision:	http://reviews.llvm.org/D9170

llvm-svn: 238420
2015-05-28 13:06:09 +00:00
Pavel Labath e749b20171 Don't check breakpoint location count in TestChangeProcessGroup
apparently, we get two locations for the breakpoint on android.

llvm-svn: 238417
2015-05-28 12:46:13 +00:00
Tamas Berghammer 157e84f5a9 Fix breakpoint setting in gdb remote test cases on arm
llvm-svn: 238411
2015-05-28 10:55:01 +00:00
Tamas Berghammer 64d807e95d Fix write register context in EmulateInstructionARM::EmulateADDRdSPImm
llvm-svn: 238410
2015-05-28 10:38:32 +00:00
Pavel Labath b9d6e89931 Move prctl call in TestChangeProcessGroup to the child
I was hoping the enable-tracing flag will be inherited from the parent. It is not.

llvm-svn: 238408
2015-05-28 10:28:34 +00:00
Pavel Labath 05a1f2ac4c [NativeProcessLinux] Support inferiors which change their process group
Summary:
Previously, we wait()ed for events from the inferiors process group. This is resulted in a
failure if the inferior changed its process group in the middle of execution. To avoid this, I
pass -1 to the wait() call. The flag __WNOTHREAD makes sure we don't actually wait for events
from any process, but only the processes(threads) which are our children (or traced by us). Since
this happens on the monitor thread, which is dedicated to monitoring a single inferior, we will
be getting events only from this inferior.

Test Plan: All tests pass on linux. I have added a test to check the new functionality.

Reviewers: chaoren, ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10061

llvm-svn: 238405
2015-05-28 08:59:21 +00:00
Jason Molenda de905773ae Add quick bit of doc about SBFrame::GetCFA().
llvm-svn: 238395
2015-05-28 04:55:53 +00:00
Greg Clayton 424a5dbc73 Added a new API to SBFrame:
lldb::addr_t SBFrame::GetCFA();

This gets the CFA (call frame address) of the frame so it allows us to take an address that is on the stack and figure out which thread it comes from.

Also modified the heap.py module to be able to find out which variable in a frame's stack frame contains an address. This way when ptr_refs finds a match on the stack, it get then report which variable contains the pointer.

llvm-svn: 238393
2015-05-28 03:27:22 +00:00
Greg Clayton 08765fac3f I finally found the strong reference that was keeping all lldb_private::Process instances from ever destroying themselves: ProcessModID.m_mod_id was holding onto the last stop event with ProcessModID::SetStopEventForLastNaturalStopID(EventSP). This is a bad idea because ProcessEventData contains a strong refereence to the process. This is now fixed by calling ProcessModID::SetStopEventForLastNaturalStopID(EventSP()) to clear this event in Process::SetExitStatus() and in Process::Finalize().
This was the original cause of the file descriptor leaks that would cause the test suite to die after running a few hundred processes since no process would ever get destroyed and the communication channel in ProcessGDBRemote and the ProcessIOHandler would never close their pipes. 

This process leak was previously worked around by closing the pipes when the communication channel was disconnected.

This was found by using "ptr_refs" from the heap.py in the lldb.macosx.heap module. It was able to find all strong references to the Process and helped me to figure out who was holding this extra reference.

llvm-svn: 238392
2015-05-28 03:24:30 +00:00
Siva Chandra b100a34cfb [TestDataFormatterUnordered] Use patterns to match unordered_<multi>set elements
Summary: This fixes the test for i386 targets.

Test Plan: dotest.py -C clang --arch i386 TestDataFormatterUnordered

Reviewers: chying, chaoren, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10078

llvm-svn: 238385
2015-05-28 01:18:11 +00:00
Siva Chandra 825a7681db [TestNamespace] Fix an accidentally committed local change.
Test Plan: dotest.py -p TestNamespace

Reviewers: sivachandra

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10076

llvm-svn: 238368
2015-05-27 22:39:21 +00:00
Greg Clayton 4e1042e1bf Allow expresions to have unique expression prefixes:
expr_options = lldb.SBExpressionOptions()
expr_options.SetPrefix('''
struct Foo {
   int a;
   int b;
   int c;
}
'''
expr_result = frame.EvaluateExpression ("Foo foo = { 1, 2, 3}; foo", expr_options)

This fixed a current issue with ptr_refs, cstr_refs and malloc_info so that they can work. If expressions define their own types and then return expression results that use those types, those types get copied into the target's AST context so they persist and the expression results can be still printed and used in future expressions. Code was added to the expression parser to copy the context in which types are defined if they are used as the expression results. So in the case of types defined by expressions, they get defined in a lldb_expr function and that function and _all_ of its statements get copied. Many types of statements are not supported in this copy (array subscript, lambdas, etc) so this causes expressions to fail as they can't copy the result types. To work around this issue I have added code that allows expressions to specify an expression specific prefix. Then when you evaluate the expression you can pass the "expr_options" and have types that can be correctly copied out into the target. I added this as a way to work around an issue, but I also think it is nice to be allowed to specify an expression prefix that can be reused by many expressions, so this feature is very useful.

<rdar://problem/21130675>

llvm-svn: 238365
2015-05-27 22:32:39 +00:00
Siva Chandra 3154aa23f3 [TestBase.runCmd] Better error message when runCmd fails.
Summary:
Before:
    AssertionError: False is not True : Process is launched successfully

After:
    AssertionError: False is not True : Command 'run a.out' failed.
    >>> error: invalid target, create a target using the 'target create' command
    >>> Process could not be launched successfully

Reviewers: clayborg

Reviewed By: clayborg

Subscribers: lldb-commits, vharron

Differential Revision: http://reviews.llvm.org/D9948

llvm-svn: 238363
2015-05-27 22:27:41 +00:00
Siva Chandra 27ab2b3143 [TestDataFormatterUnordered] Fix a few typos in the test.
Summary: The typos were exposed by http://reviews.llvm.org/D9948.

Test Plan: dotest.py -p TestDataFormatterUnordered

Reviewers: vharron, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10071

llvm-svn: 238361
2015-05-27 22:03:09 +00:00
Ed Maste bfd05631da XTIMEOUT another test timing out on the FreeBSD buildbot
llvm-svn: 238348
2015-05-27 19:11:29 +00:00
Greg Clayton dead71a829 Make sure we print timestamps correctly to 9 places since we are printing nanoseconds.
<rdar://problem/21090231>

llvm-svn: 238334
2015-05-27 16:25:01 +00:00
Ewan Crawford 9aa2da0025 Change ProcessGDBRemote last stop packet to a container.
In ProcessGDBRemote we currently have a single packet, m_last_stop_packet, used to set the thread stop info.
However in non-stop mode we can receive several stop reply packets in a sequence for different threads. As a result we need to use a container to hold them before they are processed.

This patch also changes the return type of CheckPacket() so we can detect async notification packets.

Reviewers: clayborg

Subscribers: labath, ted, deepak2427, lldb-commits

Differential Revision: http://reviews.llvm.org/D9853

llvm-svn: 238323
2015-05-27 14:12:34 +00:00
Tamas Berghammer 0cb78b3b2a Fix xcode project after r238319
llvm-svn: 238321
2015-05-27 14:04:26 +00:00
Tamas Berghammer 9c9ecce077 Make log options uniform betwwen lldb-platform and lldb-gdbserver
This change also get rid of an unused Debugger instance in
GDBRemoteCommunicationServerLLGS and the command interpreter from
lldb-platform what was used only for enabling logging.

Differential revision: http://reviews.llvm.org/D9876

llvm-svn: 238319
2015-05-27 13:34:04 +00:00
Ed Maste efa25c2836 Add real time signals support to FreeBSDSignals
Apply r238009 to FreeBSD as well.

Differential Revision:	http://reviews.llvm.org/D10037

llvm-svn: 238316
2015-05-27 13:19:46 +00:00
Colin Riley d6aa9bab21 Add a language log category.
Differential Revision: http://reviews.llvm.org/D9994

llvm-svn: 238314
2015-05-27 12:48:14 +00:00
Pavel Labath 4446487d71 Improve LLDB prompt handling
Summary:
There is an issue in lldb where the command prompt can appear at the wrong time. The partial fix
we have in for this is not working all the time and is introducing unnecessary delays. This
change does:
- Change Process:SyncIOHandler to use integer start id's for synchronization to avoid it being
  confused by quick start-stop cycles. I picked this up from a suggested patch by Greg to
  lldb-dev.
- coordinates printing of asynchronous text with the iohandlers. This is also based on a
  (different) Greg's patch, but I have added stronger synchronization to it to avoid races.

Together, these changes solve the prompt problem for me on linux (both with and without libedit).
I think they should behave similarly on Mac and FreeBSD and I think they will not make matters
worse for windows.

Test Plan: Prompt comes out alright. All tests still pass on linux.

Reviewers: clayborg, emaste, zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9823

llvm-svn: 238313
2015-05-27 12:40:32 +00:00
Tamas Berghammer bed77de002 Fix write register context in EmulateInstructionARM::EmulateMOVRdRm
llvm-svn: 238312
2015-05-27 12:32:28 +00:00
Tamas Berghammer 729dcfb7ee Fix BreakpointLocationCollection::ShouldStop to handle breakpoint removal
Differential revision: http://reviews.llvm.org/D9886

llvm-svn: 238308
2015-05-27 09:46:47 +00:00
Tamas Berghammer 3afb2527ce Parse function name from DWARF DW_AT_abstract_origin
A DW_TAG_subprogram entry can contain a reference to a
DW_AT_abstract_origin entry instead of duplicating the information
from it (e.g.: name) when the same function is inlined in some case
and not inlined in other cases.

This CL fixes name parsing for the case when the DW_TAG_subprogram
for the non inlined version contains just a reference to the
DW_AT_abstract_origin entry instead of the full information.

Differential revision: http://reviews.llvm.org/D10034

llvm-svn: 238307
2015-05-27 09:43:44 +00:00
Enrico Granata e87764f247 Add support for custom commands to set flags on themselves
This works for Python commands defined via a class (implement get_flags on your class) and C++ plugin commands (which can call SBCommand::GetFlags()/SetFlags())

Flags allow features such as not letting the command run if there's no target, or if the process is not stopped, ...
Commands could always check for these things themselves, but having these accessible via flags makes custom commands more consistent with built-in ones

llvm-svn: 238286
2015-05-27 05:04:35 +00:00
Vince Harron 9b7f6677d9 www - updated build server URLs
llvm-svn: 238284
2015-05-27 04:55:31 +00:00
Vince Harron 4c7b8c8476 Changed Flags::clang_type_resolve_state to unsigned for gcc
to work around a very noisy gcc warning

llvm-svn: 238283
2015-05-27 04:54:36 +00:00
Vince Harron 847e261e5d test Makefile.rules - pick a more sensible default CC on Linux
Differential Revision: http://reviews.llvm.org/D9920

llvm-svn: 238282
2015-05-27 04:42:54 +00:00
Vince Harron dcc2b9f7f5 dosep - force timeout processes to dump core when they timeout
move all core files to the session dir after all tests have completed

TEST PLAN
Run tests. Force a timeout by decreasing a timeout
export LLDB_EVENTS_TIMEOUT=10s
./dosep.py

Differential Revision: http://reviews.llvm.org/D9905

llvm-svn: 238281
2015-05-27 04:40:36 +00:00
Greg Clayton 2a2949cf47 Allow clients to get parsing errors and also fix the ApplePropertyList so it parses the structured data correctly.
llvm-svn: 238280
2015-05-27 03:24:17 +00:00
Greg Clayton 66b8294cae Make StructureData objects dump themselves with correct indentation.
llvm-svn: 238279
2015-05-27 03:23:26 +00:00
Greg Clayton b1ca494b6e Add StructuredData.h to the Xcode project.
llvm-svn: 238278
2015-05-27 03:22:42 +00:00
Robert Flack 62efb1f6d0 Implement and use adb push for PlatformAndroid::PutFile
Using the adb push protocol is significantly faster than the current method of
sending the hex encoded file data for the remote to write to the file.

Test Plan:
Tests continue to pass - and much faster (e.g. TestSBValuePersist.py takes 10s
down from 4m51s on mac -> android)

Differential Revision: http://reviews.llvm.org/D9943

llvm-svn: 238274
2015-05-27 02:18:50 +00:00
Ying Chen 294c92651c Add 'qXfer:features:read' to known stub list
Summary:
-Fix darwin bot failure "unknown qSupported stub feature reported: qXfer:features:read"
-TestGdbRemoteAuxvSupport.py and TestLldbGdbServer.py were affected by this problem

Test Plan:
dotest.py -m --executable /Users/lldb_build/testSlave/buildDir/lldb.src/build/Debug/lldb --framework /Users/lldb_build/testSlave/buildDir/lldb.src/build/Debug/LLDB.framework -A x86_64 -C clang -p TestLldbGdbServer.py
dotest.py -m --executable /Users/lldb_build/testSlave/buildDir/lldb.src/build/Debug/lldb --framework /Users/lldb_build/testSlave/buildDir/lldb.src/build/Debug/LLDB.framework -A x86_64 -C clang -p TestGdbRemoteAuxvSupport.py

Reviewers: clayborg, sivachandra, vharron

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D10043

llvm-svn: 238262
2015-05-26 23:08:09 +00:00
Greg Clayton ee8f994077 Modify the ApplePropertyList to be able to create StructuredData objects from the plist XML.
llvm-svn: 238260
2015-05-26 22:49:19 +00:00
Zachary Turner ffc7d6fe6e Have lldb-mi tests import pexpect at a narrower scope.
The tests are xfail'ed on Windows, but would still error out since
they were importing pexpect at global scope.  This way the tests
will correctly report as unsupported.

llvm-svn: 238249
2015-05-26 20:26:43 +00:00
Zachary Turner 306278ff0d Also don't try to copy a logfile if it doesn't exist.
In some cases no log file will be written, so don't attempt to
call os.rename() with a non-existent source path.

llvm-svn: 238248
2015-05-26 20:26:29 +00:00
Ed Maste 6b414edbcb Sync PlatformFreeBSD::GetSupportedArchitectureAtIndex with PlatformLinux
Reviewed by Ted Woodward
Differential Revision:	http://reviews.llvm.org/D9764

llvm-svn: 238246
2015-05-26 20:23:20 +00:00
Zachary Turner 5de068bf31 On Windows, delete existing log file before renaming temp file.
On non-Windows platforms, os.rename() will silently replace the
destination file if it already exists.  On Windows, it doesn't do
this, and the filesystem has no mechanism to simulate the same type
of atomic rename operation.  So on Windows, delete the file first
before calling os.rename().

llvm-svn: 238239
2015-05-26 19:52:24 +00:00
Greg Clayton df9f6364b2 Fix some logic where we used to have char arrays, but we now use std::string. Use the correctly API to detect if they are not empty.
<rdar://problem/21090173>

llvm-svn: 238231
2015-05-26 18:29:03 +00:00
Greg Clayton d04f0edad9 Added XML to the host layer.
We know have on API we should use for all XML within LLDB in XML.h. This API will be easy back the XML parsing by different libraries in case libxml2 doesn't work on all platforms. It also allows the only place for #ifdef ...XML... to be in XML.h and XML.cpp. The API is designed so it will still compile with or without XML support and there is a static function "bool XMLDocument::XMLEnabled()" that can be called to see if XML is currently supported. All APIs will return errors, false, or nothing when XML isn't enabled.

Converted all locations that used XML over to using the host XML implementation.

Added target.xml support to debugserver. Extended the XML register format to work for LLDB by including extra attributes and elements where needed. This allows the target.xml to replace the qRegisterInfo packets and allows us to fetch all register info in a single packet.

<rdar://problem/21090173>

llvm-svn: 238224
2015-05-26 18:00:51 +00:00
Tamas Berghammer 068f8a7e2d Move register reading form NativeProcessLinux to NativeRegisterContextLinux*
This change reorganize the register read/write code inside lldb-server on Linux
with moving the architecture independent code into a new class called
NativeRegisterContextLinux and all of the architecture dependent code into the
appropriate NativeRegisterContextLinux_* class. As part of it the compilation of
the architecture specific register contexts are only compiled on the specific
architecture because they can't be used in other cases.

The purpose of this change is to remove a lot of duplicated code from the different
register contexts and to remove the architecture dependent codes from the global
NativeProcessLinux class.

Differential revision: http://reviews.llvm.org/D9935

llvm-svn: 238196
2015-05-26 11:58:52 +00:00
Vince Harron ebf2b2a10b revert files unintentionally checked in
llvm-svn: 238174
2015-05-26 03:10:41 +00:00
Vince Harron 218353d847 Print port number that lldb-server binds to in platform mode
If binding to port 0 is selected, the actual port is printed.

This improves the reliability of platform startup by ensuring that
a free port can be found.

TEST PLAN
./lldb-server platform --listen *:0

Listening for a connection from <port-number>...

Will appear on stdout (with other stuff potentially)

llvm-svn: 238173
2015-05-26 03:08:05 +00:00
Greg Clayton 654e0ca650 Quiet compiler warnings about virtual and override not being consistent.
llvm-svn: 238128
2015-05-25 02:58:29 +00:00
Greg Clayton 5cf342d7aa Fix compiler warnings regarding size_t not always being 64 bit in the printf.
llvm-svn: 238127
2015-05-25 02:55:21 +00:00
Greg Clayton 5df78fa35b Did some cleanup to stop us from leaking Pipe file descriptors.
The main issue was the Communication::Disconnect() was calling its Connection::Disconnect() but this wouldn't release the pipes that the ConnectionFileDescriptor was using. We also have someone that is holding a strong reference to the Process so that when you re-run, target replaces its m_process_sp, but it doesn't get destructed because someone has a strong reference to it. I need to track that down. But, even if we have a strong reference to the a process that is outstanding, we need to call Process::Finalize() to have it release as much of its resources as possible to avoid memory bloat. 

Removed the ProcessGDBRemote::SetExitStatus() override and replaced it with ProcessGDBRemote::DidExit().

Now we aren't leaking file descriptors and the stand alone test suite should run much better.

llvm-svn: 238089
2015-05-23 03:54:53 +00:00
Oleksiy Vyalov 755d58a463 Use target's SIGSTOP and SIGINT when making decision about continue after async packet.
http://reviews.llvm.org/D9857

llvm-svn: 238068
2015-05-22 23:14:39 +00:00
Greg Clayton 25f82aae57 Fix this module to work with current packects and also to be able to figure out average packets speed and standard deviation.
llvm-svn: 238065
2015-05-22 23:00:59 +00:00
Vince Harron 8994fedc2b dotest.py - fixed a bug displaying usage
./dotest.py --help

llvm-svn: 238043
2015-05-22 19:49:23 +00:00
Zachary Turner 279a2b7575 Implement PlatformWindows::GetEnvironment.
This fixes a couple of tests that rely on being able to get the
host's environment or spawn an inferior with specific arguments.

llvm-svn: 238042
2015-05-22 19:34:17 +00:00
Zachary Turner 4f2a9726d4 Fix use-after-free in OptionValueString.
We were assigning a temporary std::string to a StringRef.  Somehow
this worked on every platform but Windows.

llvm-svn: 238041
2015-05-22 19:33:54 +00:00
Zachary Turner 101a82bf8b Disable TestConcurrentEvents.py on Windows.
This test takes over 5 minutes to run just by itself, and everything
fails anyway, so it doesn't make sense to keep it running for now.

llvm-svn: 238040
2015-05-22 19:33:32 +00:00
Siva Chandra 0b0106bb9b [TestRaise] Skip the SIGRTMIN test on Android.
Summary:
Running "kill -l" on nexus player (i386) device results in this:

    1    HUP Hangup                        33     33 Signal 33
    2    INT Interrupt                     34     34 Signal 34
    3   QUIT Quit                          35     35 Signal 35
    4    ILL Illegal instruction           36     36 Signal 36
    5   TRAP Trap                          37     37 Signal 37
    6   ABRT Aborted                       38     38 Signal 38
    7    BUS Bus error                     39     39 Signal 39
    8    FPE Floating point exception      40     40 Signal 40
    9   KILL Killed                        41     41 Signal 41
   10   USR1 User signal 1                 42     42 Signal 42
   11   SEGV Segmentation fault            43     43 Signal 43
   12   USR2 User signal 2                 44     44 Signal 44
   13   PIPE Broken pipe                   45     45 Signal 45
   14   ALRM Alarm clock                   46     46 Signal 46
   15   TERM Terminated                    47     47 Signal 47
   16 STKFLT Stack fault                   48     48 Signal 48
   17   CHLD Child exited                  49     49 Signal 49
   18   CONT Continue                      50     50 Signal 50
   19   STOP Stopped (signal)              51     51 Signal 51
   20   TSTP Stopped                       52     52 Signal 52 
   21   TTIN Stopped (tty input)           53     53 Signal 53
   22   TTOU Stopped (tty output)          54     54 Signal 54
   23    URG Urgent I/O condition          55     55 Signal 55
   24   XCPU CPU time limit exceeded       56     56 Signal 56
   25   XFSZ File size limit exceeded      57     57 Signal 57
   26 VTALRM Virtual timer expired         58     58 Signal 58
   27   PROF Profiling timer expired       59     59 Signal 59
   28  WINCH Window size changed           60     60 Signal 60
   29     IO I/O possible                  61     61 Signal 61
   30    PWR Power failure                 62     62 Signal 62
   31    SYS Bad system call               63     63 Signal 63
   32     32 Signal 32                     64     64 Signal 64

The signals from 33-64 are missing symbolic names.

Test Plan: dotest.py -p TestRaise on Android

Reviewers: labath

Subscribers: tberghammer, aemerson, lldb-commits

Differential Revision: http://reviews.llvm.org/D9944

llvm-svn: 238039
2015-05-22 19:00:33 +00:00
Pavel Labath b84141a6fe Add real time signals support to LinuxSignals
Summary: This enables correct handling of real time signals by lldb.

Test Plan: Added a test that verifies handling of SIGRTMIN

Reviewers: tberghammer, ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9911

llvm-svn: 238009
2015-05-22 08:46:18 +00:00
Siva Chandra e8208ce065 [TestLldbGdbServer] Up sleep duration to 1min in the inferior thread_func.
Summary:
The current sleep duration is not sufficient for Android.

[[ Its a completely different investigation as to why Android needs longer
   sleep durations for this test. ]]

Test Plan: dotest.py -p TestLldbGdbServer on Android and local linux.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

Differential Revision: http://reviews.llvm.org/D9926

llvm-svn: 237981
2015-05-22 00:52:41 +00:00
Chaoren Lin 9afad0e954 Fix lldb-platform usage string.
llvm-svn: 237966
2015-05-21 22:43:43 +00:00
Greg Clayton e034a04e4f Added a new command in ProcessGDBRemote that can figure out the performance characterisitics of your GDB remote server.
To addess this, attach to any GDB server and when stopped type:

(lldb) process plugin packet speed-test

The default will send a variety of packets with different amounts of data to send/receive and print the performance of each packet type:

Testing sending 1000 packets of various sizes:
qSpeedTest(send=0      , recv=0      ) in 0.057837000 sec for  17289.97 packets/sec (  0.057837 ms per packet) with standard deviation of   0.007705 ms
qSpeedTest(send=0      , recv=4      ) in 0.056162000 sec for  17805.63 packets/sec (  0.056162 ms per packet) with standard deviation of   0.004439 ms
qSpeedTest(send=0      , recv=8      ) in 0.057687000 sec for  17334.93 packets/sec (  0.057687 ms per packet) with standard deviation of   0.008135 ms
qSpeedTest(send=0      , recv=16     ) in 0.058547000 sec for  17080.29 packets/sec (  0.058547 ms per packet) with standard deviation of   0.005884 ms
qSpeedTest(send=0      , recv=32     ) in 0.058289000 sec for  17155.89 packets/sec (  0.058289 ms per packet) with standard deviation of   0.004057 ms
qSpeedTest(send=0      , recv=64     ) in 0.061324000 sec for  16306.83 packets/sec (  0.061324 ms per packet) with standard deviation of   0.010838 ms
qSpeedTest(send=0      , recv=128    ) in 0.065688000 sec for  15223.48 packets/sec (  0.065688 ms per packet) with standard deviation of   0.006997 ms
qSpeedTest(send=0      , recv=256    ) in 0.070621000 sec for  14160.09 packets/sec (  0.070621 ms per packet) with standard deviation of   0.006188 ms
qSpeedTest(send=0      , recv=512    ) in 0.086738000 sec for  11528.97 packets/sec (  0.086738 ms per packet) with standard deviation of   0.007867 ms
qSpeedTest(send=0      , recv=1024   ) in 0.146375000 sec for   6831.77 packets/sec (  0.146375 ms per packet) with standard deviation of   0.010313 ms
qSpeedTest(send=4      , recv=0      ) in 0.057807000 sec for  17298.94 packets/sec (  0.057807 ms per packet) with standard deviation of   0.009702 ms
....

It will then also use various sizes to receive 4MB of data from the GDB server and print out the stats:

Testing receiving 4.0MB of data using varying receive packet sizes:
qSpeedTest(send=0      , recv=32     ) 131072 packets needed to receive 4.0MB in 7.721290000 sec for 0.518048 MB/sec for  16975.40 packets/sec (  0.058909 ms per packet)
qSpeedTest(send=0      , recv=64     )  65536 packets needed to receive 4.0MB in 4.029236000 sec for 0.992744 MB/sec for  16265.12 packets/sec (  0.061481 ms per packet)
qSpeedTest(send=0      , recv=128    )  32768 packets needed to receive 4.0MB in 2.233854000 sec for 1.790627 MB/sec for  14668.82 packets/sec (  0.068172 ms per packet)
qSpeedTest(send=0      , recv=256    )  16384 packets needed to receive 4.0MB in 1.160024000 sec for 3.448204 MB/sec for  14123.84 packets/sec (  0.070802 ms per packet)
qSpeedTest(send=0      , recv=512    )   8192 packets needed to receive 4.0MB in 0.701603000 sec for 5.701230 MB/sec for  11676.12 packets/sec (  0.085645 ms per packet)
qSpeedTest(send=0      , recv=1024   )   4096 packets needed to receive 4.0MB in 0.596786000 sec for 6.702570 MB/sec for   6863.43 packets/sec (  0.145700 ms per packet)

There is a JSON mode so we can use this in the test suite to track GDB server performance for each platform:

(lldb) process plugin packet speed-test --json
{ "packet_speeds" : {
    "num_packets" : 1000,
    "results" : [
     {"send_size" :      0, "recv_size" :      0, "total_time_nsec" :     64516000, "standard_deviation_nsec" :     20566 },
     {"send_size" :      0, "recv_size" :      4, "total_time_nsec" :     59648000, "standard_deviation_nsec" :     10493 },
     {"send_size" :      0, "recv_size" :      8, "total_time_nsec" :     56894000, "standard_deviation_nsec" :      5480 },
     {"send_size" :      0, "recv_size" :     16, "total_time_nsec" :     59422000, "standard_deviation_nsec" :      6557 },
     {"send_size" :      0, "recv_size" :     32, "total_time_nsec" :     61159000, "standard_deviation_nsec" :     12384 },
     {"send_size" :      0, "recv_size" :     64, "total_time_nsec" :     61386000, "standard_deviation_nsec" :      9208 },
     {"send_size" :      0, "recv_size" :    128, "total_time_nsec" :     64768000, "standard_deviation_nsec" :      4737 },
     {"send_size" :      0, "recv_size" :    256, "total_time_nsec" :     71046000, "standard_deviation_nsec" :      5904 },
     {"send_size" :      0, "recv_size" :    512, "total_time_nsec" :     87233000, "standard_deviation_nsec" :      8967 },
     {"send_size" :      0, "recv_size" :   1024, "total_time_nsec" :    146629000, "standard_deviation_nsec" :      9526 },
     {"send_size" :      4, "recv_size" :      0, "total_time_nsec" :     57131000, "standard_deviation_nsec" :      7884 },
     {"send_size" :      4, "recv_size" :      4, "total_time_nsec" :     56772000, "standard_deviation_nsec" :      6064 },
     {"send_size" :      4, "recv_size" :      8, "total_time_nsec" :     57450000, "standard_deviation_nsec" :      6341 },
     {"send_size" :      4, "recv_size" :     16, "total_time_nsec" :     58279000, "standard_deviation_nsec" :      5998 },
     {"send_size" :      4, "recv_size" :     32, "total_time_nsec" :     59995000, "standard_deviation_nsec" :      6294 },
     {"send_size" :      4, "recv_size" :     64, "total_time_nsec" :     61632000, "standard_deviation_nsec" :      7838 },
     {"send_size" :      4, "recv_size" :    128, "total_time_nsec" :     66535000, "standard_deviation_nsec" :      8026 },
     {"send_size" :      4, "recv_size" :    256, "total_time_nsec" :     72754000, "standard_deviation_nsec" :      9519 },
     {"send_size" :      4, "recv_size" :    512, "total_time_nsec" :     87072000, "standard_deviation_nsec" :      9268 },
     {"send_size" :      4, "recv_size" :   1024, "total_time_nsec" :    147221000, "standard_deviation_nsec" :      9702 },
     {"send_size" :      8, "recv_size" :      0, "total_time_nsec" :     57900000, "standard_deviation_nsec" :      7356 },
     {"send_size" :      8, "recv_size" :      4, "total_time_nsec" :     58116000, "standard_deviation_nsec" :      7630 },
     {"send_size" :      8, "recv_size" :      8, "total_time_nsec" :     57745000, "standard_deviation_nsec" :      8541 },
     {"send_size" :      8, "recv_size" :     16, "total_time_nsec" :     59091000, "standard_deviation_nsec" :      7851 },
     {"send_size" :      8, "recv_size" :     32, "total_time_nsec" :     59943000, "standard_deviation_nsec" :      6761 },
     {"send_size" :      8, "recv_size" :     64, "total_time_nsec" :     62097000, "standard_deviation_nsec" :      8580 },
     {"send_size" :      8, "recv_size" :    128, "total_time_nsec" :     69942000, "standard_deviation_nsec" :     16645 },
     {"send_size" :      8, "recv_size" :    256, "total_time_nsec" :     72927000, "standard_deviation_nsec" :     11031 },
     {"send_size" :      8, "recv_size" :    512, "total_time_nsec" :     87221000, "standard_deviation_nsec" :      8002 },
     {"send_size" :      8, "recv_size" :   1024, "total_time_nsec" :    148696000, "standard_deviation_nsec" :     10383 },
     {"send_size" :     16, "recv_size" :      0, "total_time_nsec" :     59890000, "standard_deviation_nsec" :     15160 },
     {"send_size" :     16, "recv_size" :      4, "total_time_nsec" :     56664000, "standard_deviation_nsec" :      4650 },
     {"send_size" :     16, "recv_size" :      8, "total_time_nsec" :     57574000, "standard_deviation_nsec" :      7787 },
     {"send_size" :     16, "recv_size" :     16, "total_time_nsec" :     59312000, "standard_deviation_nsec" :      8104 },
     {"send_size" :     16, "recv_size" :     32, "total_time_nsec" :     59764000, "standard_deviation_nsec" :      7496 },
     {"send_size" :     16, "recv_size" :     64, "total_time_nsec" :     61644000, "standard_deviation_nsec" :      8331 },
     {"send_size" :     16, "recv_size" :    128, "total_time_nsec" :     66476000, "standard_deviation_nsec" :      9251 },
     {"send_size" :     16, "recv_size" :    256, "total_time_nsec" :     72386000, "standard_deviation_nsec" :      8627 },
     {"send_size" :     16, "recv_size" :    512, "total_time_nsec" :     87810000, "standard_deviation_nsec" :     12318 },
     {"send_size" :     16, "recv_size" :   1024, "total_time_nsec" :    146918000, "standard_deviation_nsec" :     11595 },
     {"send_size" :     32, "recv_size" :      0, "total_time_nsec" :     56493000, "standard_deviation_nsec" :      6577 },
     {"send_size" :     32, "recv_size" :      4, "total_time_nsec" :     57069000, "standard_deviation_nsec" :      5931 },
     {"send_size" :     32, "recv_size" :      8, "total_time_nsec" :     57563000, "standard_deviation_nsec" :      8157 },
     {"send_size" :     32, "recv_size" :     16, "total_time_nsec" :     59694000, "standard_deviation_nsec" :      6932 },
     {"send_size" :     32, "recv_size" :     32, "total_time_nsec" :     60852000, "standard_deviation_nsec" :      8010 },
     {"send_size" :     32, "recv_size" :     64, "total_time_nsec" :     61926000, "standard_deviation_nsec" :      8372 },
     {"send_size" :     32, "recv_size" :    128, "total_time_nsec" :     66734000, "standard_deviation_nsec" :      8047 },
     {"send_size" :     32, "recv_size" :    256, "total_time_nsec" :     72000000, "standard_deviation_nsec" :      8103 },
     {"send_size" :     32, "recv_size" :    512, "total_time_nsec" :     88268000, "standard_deviation_nsec" :     12289 },
     {"send_size" :     32, "recv_size" :   1024, "total_time_nsec" :    147946000, "standard_deviation_nsec" :     12122 },
     {"send_size" :     64, "recv_size" :      0, "total_time_nsec" :     58126000, "standard_deviation_nsec" :      5895 },
     {"send_size" :     64, "recv_size" :      4, "total_time_nsec" :     58927000, "standard_deviation_nsec" :      8933 },
     {"send_size" :     64, "recv_size" :      8, "total_time_nsec" :     58163000, "standard_deviation_nsec" :      6663 },
     {"send_size" :     64, "recv_size" :     16, "total_time_nsec" :     59901000, "standard_deviation_nsec" :      8340 },
     {"send_size" :     64, "recv_size" :     32, "total_time_nsec" :     60365000, "standard_deviation_nsec" :      6319 },
     {"send_size" :     64, "recv_size" :     64, "total_time_nsec" :     61776000, "standard_deviation_nsec" :      7461 },
     {"send_size" :     64, "recv_size" :    128, "total_time_nsec" :     66984000, "standard_deviation_nsec" :      6810 },
     {"send_size" :     64, "recv_size" :    256, "total_time_nsec" :     73913000, "standard_deviation_nsec" :      8826 },
     {"send_size" :     64, "recv_size" :    512, "total_time_nsec" :     88134000, "standard_deviation_nsec" :      8356 },
     {"send_size" :     64, "recv_size" :   1024, "total_time_nsec" :    146932000, "standard_deviation_nsec" :      7571 },
     {"send_size" :    128, "recv_size" :      0, "total_time_nsec" :     57616000, "standard_deviation_nsec" :      6158 },
     {"send_size" :    128, "recv_size" :      4, "total_time_nsec" :     59091000, "standard_deviation_nsec" :      7458 },
     {"send_size" :    128, "recv_size" :      8, "total_time_nsec" :     60263000, "standard_deviation_nsec" :     11999 },
     {"send_size" :    128, "recv_size" :     16, "total_time_nsec" :     59238000, "standard_deviation_nsec" :      6102 },
     {"send_size" :    128, "recv_size" :     32, "total_time_nsec" :     60783000, "standard_deviation_nsec" :      6244 },
     {"send_size" :    128, "recv_size" :     64, "total_time_nsec" :     62975000, "standard_deviation_nsec" :      8947 },
     {"send_size" :    128, "recv_size" :    128, "total_time_nsec" :     65742000, "standard_deviation_nsec" :      5907 },
     {"send_size" :    128, "recv_size" :    256, "total_time_nsec" :     72402000, "standard_deviation_nsec" :      6601 },
     {"send_size" :    128, "recv_size" :    512, "total_time_nsec" :     87457000, "standard_deviation_nsec" :      9004 },
     {"send_size" :    128, "recv_size" :   1024, "total_time_nsec" :    148412000, "standard_deviation_nsec" :     10532 },
     {"send_size" :    256, "recv_size" :      0, "total_time_nsec" :     58705000, "standard_deviation_nsec" :      7274 },
     {"send_size" :    256, "recv_size" :      4, "total_time_nsec" :     58818000, "standard_deviation_nsec" :      5453 },
     {"send_size" :    256, "recv_size" :      8, "total_time_nsec" :     59451000, "standard_deviation_nsec" :      6926 },
     {"send_size" :    256, "recv_size" :     16, "total_time_nsec" :     60237000, "standard_deviation_nsec" :      5781 },
     {"send_size" :    256, "recv_size" :     32, "total_time_nsec" :     61456000, "standard_deviation_nsec" :      5591 },
     {"send_size" :    256, "recv_size" :     64, "total_time_nsec" :     62615000, "standard_deviation_nsec" :      7588 },
     {"send_size" :    256, "recv_size" :    128, "total_time_nsec" :     68554000, "standard_deviation_nsec" :      7766 },
     {"send_size" :    256, "recv_size" :    256, "total_time_nsec" :     74557000, "standard_deviation_nsec" :      8748 },
     {"send_size" :    256, "recv_size" :    512, "total_time_nsec" :     87929000, "standard_deviation_nsec" :      9510 },
     {"send_size" :    256, "recv_size" :   1024, "total_time_nsec" :    148522000, "standard_deviation_nsec" :     11394 },
     {"send_size" :    512, "recv_size" :      0, "total_time_nsec" :     59697000, "standard_deviation_nsec" :      7825 },
     {"send_size" :    512, "recv_size" :      4, "total_time_nsec" :     59427000, "standard_deviation_nsec" :      5706 },
     {"send_size" :    512, "recv_size" :      8, "total_time_nsec" :     59538000, "standard_deviation_nsec" :      6863 },
     {"send_size" :    512, "recv_size" :     16, "total_time_nsec" :     61139000, "standard_deviation_nsec" :      7645 },
     {"send_size" :    512, "recv_size" :     32, "total_time_nsec" :     62203000, "standard_deviation_nsec" :      7985 },
     {"send_size" :    512, "recv_size" :     64, "total_time_nsec" :     62577000, "standard_deviation_nsec" :      8118 },
     {"send_size" :    512, "recv_size" :    128, "total_time_nsec" :     68722000, "standard_deviation_nsec" :     10581 },
     {"send_size" :    512, "recv_size" :    256, "total_time_nsec" :     74290000, "standard_deviation_nsec" :      8931 },
     {"send_size" :    512, "recv_size" :    512, "total_time_nsec" :     88635000, "standard_deviation_nsec" :      7771 },
     {"send_size" :    512, "recv_size" :   1024, "total_time_nsec" :    149589000, "standard_deviation_nsec" :     11456 },
     {"send_size" :   1024, "recv_size" :      0, "total_time_nsec" :     63243000, "standard_deviation_nsec" :      6331 },
     {"send_size" :   1024, "recv_size" :      4, "total_time_nsec" :     64381000, "standard_deviation_nsec" :      8372 },
     {"send_size" :   1024, "recv_size" :      8, "total_time_nsec" :     63481000, "standard_deviation_nsec" :      5608 },
     {"send_size" :   1024, "recv_size" :     16, "total_time_nsec" :     65549000, "standard_deviation_nsec" :      8826 },
     {"send_size" :   1024, "recv_size" :     32, "total_time_nsec" :     65485000, "standard_deviation_nsec" :      6822 },
     {"send_size" :   1024, "recv_size" :     64, "total_time_nsec" :     67125000, "standard_deviation_nsec" :      9829 },
     {"send_size" :   1024, "recv_size" :    128, "total_time_nsec" :     72680000, "standard_deviation_nsec" :      7641 },
     {"send_size" :   1024, "recv_size" :    256, "total_time_nsec" :     79206000, "standard_deviation_nsec" :      9854 },
     {"send_size" :   1024, "recv_size" :    512, "total_time_nsec" :     92418000, "standard_deviation_nsec" :      9107 },
     {"send_size" :   1024, "recv_size" :   1024, "total_time_nsec" :    152392000, "standard_deviation_nsec" :     11124 }
    ]
  },
  "download_speed" : {
    "byte_size" : 4194304,
    "results" : [
     {"send_size" :      0, "recv_size" :     32, "total_time_nsec" :   7735630000 },
     {"send_size" :      0, "recv_size" :     64, "total_time_nsec" :   3985169000 },
     {"send_size" :      0, "recv_size" :    128, "total_time_nsec" :   2128791000 },
     {"send_size" :      0, "recv_size" :    256, "total_time_nsec" :   1172077000 },
     {"send_size" :      0, "recv_size" :    512, "total_time_nsec" :    703833000 },
     {"send_size" :      0, "recv_size" :   1024, "total_time_nsec" :    594966000 }
    ]
  }
}

llvm-svn: 237953
2015-05-21 20:52:06 +00:00
Zachary Turner b48b40405e Don't import module `lock` at global scope.
`lock` depends on `fcntl`, which doesn't exist on Windows.  Until
someone implements an equivalent locking mechanism on Windows, we
can't have lock imported globally.

llvm-svn: 237946
2015-05-21 20:16:02 +00:00
Zachary Turner 3c1c5b9d88 Fix race condition when detaching/killing an inferior.
llvm-svn: 237945
2015-05-21 19:56:26 +00:00
Vince Harron 85d1965abd dotest.py - debug feature that helps find dosep races
SUMMARY
dosep.py starts lots and lots of dotest instances.

This option helps you find if two (or more) dotest instances are using
the same directory at the same time.

Enable it to cause test failures and stderr messages if dotest
instances try to run in the same directory simultaneously.

It is disabled by default because it litters the test directories with
".dirlock" files

TEST PLAN
Set lldbtest.debug_confirm_directory_exclusivity = True
run ./dosep.py

Differential Revision: http://reviews.llvm.org/D9868

llvm-svn: 237935
2015-05-21 19:09:29 +00:00
Vince Harron 0289dcbd91 XPASS a bunch of GdbRemote/LldbGdbServer tests
Depends on r237932
"Fixed intermittent failures in TestGdbRemote*/TestLldbGdbServer"

Test Plan:
Ran dosep 100x, no failures in these tests

Differential Revision: http://reviews.llvm.org/D9892

llvm-svn: 237933
2015-05-21 18:55:39 +00:00
Vince Harron 65f9916370 Fixed intermittent failures in TestGdbRemote*/TestLldbGdbServer
test/tools/lldb-server/commandline/Test* were actually executing in
their parent directory. This looks fine at first because they aren't
compiling an inferior executable.

Unfortunately, they still call "make clean" during their cleanup,
which is likely causing all kinds of havok in tests running in the
parent directory

Differential Revision: http://reviews.llvm.org/D9869

llvm-svn: 237932
2015-05-21 18:54:12 +00:00
Vince Harron 1f160377ae Re-enable packet logging for GdbRemote/LldbServer tests
Creates logs in session dir

Differential Revision: http://reviews.llvm.org/D9847

llvm-svn: 237931
2015-05-21 18:51:20 +00:00
Vince Harron 47fc26f9fe Fix lldb executable discovery on OS X
It was broken by r237632

Differential Revision: http://reviews.llvm.org/D9846

llvm-svn: 237928
2015-05-21 18:21:07 +00:00
Siva Chandra 73eddaa2d8 [TestChangeValueAPI] Remove expectedFailureGcc decorator.
Test Plan: dotest.py -C <clang|gcc> -p TestChangeValueAPI

Reviewers: vharron

Reviewed By: vharron

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9116

llvm-svn: 237927
2015-05-21 18:20:46 +00:00
Vince Harron 35b17dca50 dotest.py - log session to a file instead of a StringIO class
That way, if the test gets killed (by a dosep timeout) we get to see the session
trace

Test Plan:
Run dotest.py
Kill it while it's running, check the session dir for Test* files

Differential Revision: http://reviews.llvm.org/D9845

llvm-svn: 237926
2015-05-21 18:20:21 +00:00
Vince Harron 0b9dbb5794 Add logging for XTIMEOUT/UnexpectedSuccess
If an expected timeout test times out, touch
<session-dir>/ExpectedTimeout-<test-name>

If an expected timeout test passes, touch
<session-dir>/UnexpectedCompletion-<test-name>

Differential Revision: http://reviews.llvm.org/D9843

llvm-svn: 237925
2015-05-21 18:18:52 +00:00
Vince Harron 41657ccf17 Modify dosep.py to add default session dir parameter
This ensures that all spawned dotest instances store their traces
in the same location.

Test Plan:
run dosep.py with and without a -s option for dotest

cd lldb/test
./dosep.py
./dosep.py -o '-s /tmp/traces'

Differential Revision: http://reviews.llvm.org/D9839

llvm-svn: 237923
2015-05-21 18:15:09 +00:00
Siva Chandra 2f8e607d48 [TestBuiltinTrap] Change skipIfGcc to expectedFailure for GCC <= 4.6.
Test Plan: dotest.py -C gcc -p TestBuiltinTrap

Reviewers: vharron

Reviewed By: vharron

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9117

llvm-svn: 237922
2015-05-21 18:12:19 +00:00
Vince Harron 37a38e6e9b TestInlineStepping - made XFAIL more specific
Differential Revision: http://reviews.llvm.org/D9828

llvm-svn: 237921
2015-05-21 18:07:16 +00:00
Adrian McCarthy 1406f9154e Update Makefile to reflect that TestNumThreads now uses std::thread instead of pthreads.
llvm-svn: 237919
2015-05-21 17:47:58 +00:00
Robert Flack ab78164ad8 Only check for matching arch and UUID when looking for dsym in vincinity of executable.
ModuleSpecs::FindMatchingModuleSpec looks for matching filenames but when
looking for the dSYM we should only be looking for a matching architecture and
and UUID. Jason pointed out this mistake in http://reviews.llvm.org/D9174 when
this function was incorrectly converted to not be Mac specific.

Test Plan:
Running LLDB on test/lang/c/shared_lib_stripped_symbols/a.out in a debugger I've
verified LocateDSYMInVincinityOfExecutable correctly locates the matching dSYM.

Differential Revision: http://reviews.llvm.org/D9896

llvm-svn: 237907
2015-05-21 15:44:24 +00:00
Tamas Berghammer a98788d17e Add bug number for TestEvents
llvm-svn: 237904
2015-05-21 14:04:17 +00:00
Tamas Berghammer 9691518143 Handle aggregate return types in SysV-arm ABI
Differential revision: http://reviews.llvm.org/D9910

llvm-svn: 237901
2015-05-21 13:44:40 +00:00
Tamas Berghammer 350d8b311b Add float/double return value handling to SysV-arm ABI
This is neccessary for evaluating expressions with float/double return
value and for displaying float/double return values in case of a thread
step out.

Differential revision: http://reviews.llvm.org/D9907

llvm-svn: 237900
2015-05-21 13:34:46 +00:00
Tamas Berghammer b5f4e6dd53 XFAIL TestEvents on Linux bacuse it is flaky
llvm-svn: 237888
2015-05-21 10:16:55 +00:00
Pavel Labath f249efa7e9 XFAILing TestRaise on darwin due to an apparent bug
llvm-svn: 237887
2015-05-21 10:15:57 +00:00
Pavel Labath 39036ac31d [NativeProcessLinux] Fix handling of SIGSTOP
Summary:
Previously, NPL tried to reinject SIGSTOP into the inferior in an attempt to get the process to
start in the group-stop state. This was:
a) wrong (reinjection should be controlled by "process handle" lldb setting)
b) racy (it should use Resume for transparent resuming instead of RequestResume)
c) broken (llgs crashed on inferior SIGSTOP)

With this change, SIGSTOP is handled just like any other signal delivered to the inferior: we
stop all threads and report signal reception to lldb. SIGSTOP reinjection does not behave the
same way as it would outside the debugger, but simulating this is a hard problem and is not
normally necessary.

Test Plan: I have added a test which verifies we get SIGSTOP reports and we do not crash.

Reviewers: ovyalov, chaoren

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9852

llvm-svn: 237880
2015-05-21 08:32:18 +00:00
Vince Harron a7959f6585 trivial log print fix
llvm-svn: 237878
2015-05-21 05:57:28 +00:00
Jim Ingham 7ac5c86ba9 Fix the logic in DynamicLoaderMacOSXDYLD::Clear that would only remove the old dyld notification
breakpoint only  if the process it was for is still alive.  We need to always remove this because
it has a pointer to the old loader, and    if we ever hit it we will crash.  I also put in a sanity
check in the callback function to make sure we don't invoke it if the process is wrong.

<rdar://problem/21006189>

llvm-svn: 237866
2015-05-21 00:27:01 +00:00
Greg Clayton 07b5899367 Fixed an issue with expressions that define types in the expression. We must currently touch the members of the struct in the right order or our ClangASTImporter::DeportType() will copy the resulting type into the target AST incorrectly. This is a work around for <rdar://problem/21049838> which the copy type issue so that it doesn't happen.
<rdar://problem/20902950>

llvm-svn: 237865
2015-05-21 00:26:58 +00:00
Chaoren Lin 36758cf16a Using -pthread instead of -lpthread to appease GCC.
llvm-svn: 237864
2015-05-21 00:19:15 +00:00
Adrian McCarthy 58443f2429 Have TestNumThreads use std::thread instead of pthreads so that it can work cross-platform.
llvm-svn: 237844
2015-05-20 22:32:44 +00:00
Chaoren Lin 2bf454021c Default dst value for platform put-file.
Summary: It should default to working-dir/src-filename if dst is not specified.

Reviewers: clayborg, flackr

Reviewed By: flackr

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9890

llvm-svn: 237831
2015-05-20 20:23:23 +00:00
Jim Ingham 40d66e6108 Since the asan report function doesn't gather bp or sp,
don't put those values in the Structured Data we make up
from the report.

<rdar://problem/21038887>

llvm-svn: 237824
2015-05-20 19:15:43 +00:00
Zachary Turner c62733b0de Implement attach to process on Windows.
Differential Revision: http://reviews.llvm.org/D9801
Reviewed by: Adrian McCarthy

llvm-svn: 237817
2015-05-20 18:31:17 +00:00
Ilia K 38810f430b Fix handling of hijacked events in synchronous mode
Summary:
This patch includes the following changes:
* Fix Target::Launch to handle hijacked event in synchronous mode
* Improve MiStartupOptionsTestCase tests to expect *stopped (MI)
* Add SBProcess::GetStopEventForStopID
* Add ProcessModID::SetStopEventForLastNaturalStopID/GetStopEventForStopID
* Add const qualifier to ProcessModID::GetLastNaturalStopID
* Add SBProcess::GetStopEventForStopID
* Don't broadcast hijacked event in Target::Launch
* Add CMICmnLLDBDebugger::CheckIfNeedToRebroadcastStopEvent/RebroadcastStopEvent

Test Plan: ./dotest.py -v --executable $BUILDDIR/bin/lldb tools/lldb-mi/startup_options/

Reviewers: zturner, jingham, clayborg, abidh

Reviewed By: clayborg

Subscribers: abidh, zturner, lldb-commits, clayborg, jingham

Differential Revision: http://reviews.llvm.org/D9371

llvm-svn: 237781
2015-05-20 10:15:47 +00:00
Siva Chandra 8fd94c9e68 [GDBRemoteCommunicationClient] Increase timeout for qfProcessInfo packet.
Summary:
The test in TestPlatformCommand which runs "platform process list" has
been timing out for Android when running running dosep.py with
LLDB_TEST_THREADS=8. This patch increases the packet timeout to a large
value of 1min to accommodate the long time required for a response for
the qfProcessInfo packet on Android.

Test Plan: LLDB_TEST_THREADS=8 ./dosep.py on Android.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

Differential Revision: http://reviews.llvm.org/D9866

llvm-svn: 237752
2015-05-20 00:30:31 +00:00
Chaoren Lin 70e0cbb3ed Remove trailing slash from dumping directory FileSpec.
Reviewers: domipheus, ovyalov

Reviewed By: ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9862

llvm-svn: 237741
2015-05-19 23:11:58 +00:00
Enrico Granata 4518586234 A previous patch made it so that ValueObjects could update themselves even in the face of an invalid execution context (which was required for the dynamic and synthetic values of const objects)
It turns out, child values also need similar provisions

This patch simplifies things a bit allowing ValueObject subclasses to just declare whether they can accept an invalid context at update time, and letting the update machinery in the EvaluationPoint to the rest
Also, this lets ValueObjectChild proclaim that its parent chooses whether such blank-slate updates are possible

llvm-svn: 237714
2015-05-19 18:53:13 +00:00
Tamas Berghammer 0d0ec9f2d7 Mark TestEvents as XTIMEOUT on Linux
llvm-svn: 237679
2015-05-19 10:49:40 +00:00
Ilia K 5e47696da2 Don't print =breakpoint-created if BP info was emitted in the result record (MI)
llvm-svn: 237676
2015-05-19 09:57:56 +00:00
Vince Harron d347f27f45 dotest - minor doc fix
llvm-svn: 237665
2015-05-19 05:10:22 +00:00
Oleksiy Vyalov 09e9079d5c Use ADB pull to download modules from android target.
http://reviews.llvm.org/D9816

llvm-svn: 237640
2015-05-18 23:44:06 +00:00
Adrian McCarthy 2f8e4c3bf9 Enable debugging of multithreaded programs on Windows.
llvm-svn: 237637
2015-05-18 23:24:32 +00:00
Vince Harron 0c6160156a Make it possible to run dotest on Linux without any parameters
dotest will select clang-3.5 by default and fall back on clang/gcc
dotest will look for the lldb executable in the typical cmake
output locations:
{lldb}/../../../build/bin (next to llvm directory)
{lldb}/../../../build/host/bin (next to llvm directory)
{lldb}/../build/bin (next to lldb directory)
{lldb}/../build/host/bin (next to lldb directory)

llvm-svn: 237632
2015-05-18 23:07:18 +00:00
Vince Harron 7b6039d456 Fixes errors in remote tests
llvm-svn: 237603
2015-05-18 19:44:19 +00:00
Vince Harron f8b9a1da2b Refactored dotest arg parser so that it's accessible from dosep
This allows dosep to understand an act on dotest arguments

Differential Revision: http://reviews.llvm.org/D9820

llvm-svn: 237602
2015-05-18 19:40:54 +00:00
Vince Harron f1518f5981 dotest - Refactored some code into loops
Renamed 'base' to 'lldbRootDirectory'
Renamed 'lldbPath' to 'lldbPythonDir'
Added cmake output directories to lldb executable search locations
Fixed invocation of lldb -P to ignore 'Cannot read termcap database'

Differential Revision: http://reviews.llvm.org/D9818

llvm-svn: 237601
2015-05-18 19:40:00 +00:00
Vince Harron 790d95cbec Refactored lldb executable name discovery
The lldb executable was referenced through the code by 7 different
(effectively) global variables.

global lldbExecutablePath
global lldbExecutable
os.environ['LLDB_EXEC']
os.environ['LLDB_TEST']
dotest.lldbExec
dotest.lldbHere
lldbtest.lldbExec

This change uses one global variable lldbtest_config.lldbExec to
replace them all.

Differential Revision: http://reviews.llvm.org/D9817

llvm-svn: 237600
2015-05-18 19:39:03 +00:00
Vince Harron 0f173ac130 XTIMEOUT TestThreadSpecificBreakpoint.py on darwin
Differential Revision: http://reviews.llvm.org/D9815

llvm-svn: 237599
2015-05-18 19:36:33 +00:00
Vince Harron e9efc17974 Change lldb-mi deployment target to use Xcode project global setting
Differential Revision: http://reviews.llvm.org/D9705

llvm-svn: 237598
2015-05-18 19:35:07 +00:00
Tamas Berghammer 45176c2341 Fix test expectation in TestThreadExit after r237566
llvm-svn: 237578
2015-05-18 16:08:06 +00:00
Pavel Labath 8dd974f735 Update the failure reason of TestConvenienceVariables and tighten the XFAIL
llvm-svn: 237577
2015-05-18 15:48:48 +00:00
Pavel Labath 482b9d0ef8 Fix typo in previous commit
llvm-svn: 237575
2015-05-18 15:41:50 +00:00
Pavel Labath dc3ecf4c88 Update TestMiVar with a bug id
llvm-svn: 237571
2015-05-18 15:35:42 +00:00
Tamas Berghammer f4553e014e Fix encoding of BX instrucion in EmulateInstructionARM
llvm-svn: 237570
2015-05-18 14:55:51 +00:00
Ilia K 055ad9beba Add --move-to-nearest-code / target.move-to-nearest-code options (attempt 2)
This patch initially was committed in r237460 but later it was reverted (r237479) due to 4 new failures:
* TestExitDuringStep.py
* TestNumThreads.py
* TestThreadExit.py
* TestThreadStates.py

This patch also fixes these tests.

llvm-svn: 237566
2015-05-18 13:41:01 +00:00
Vince Harron a0c955251f XFAIL'd some flakey tests on Darwin
llvm-svn: 237543
2015-05-17 15:32:14 +00:00
Vince Harron 41b94d9bfc XFAIL'd some tests that fail very, very rarely
llvm-svn: 237515
2015-05-16 07:05:15 +00:00
Enrico Granata bb642e5456 Constant result ValueObjects are - well - constant
And they also do not have a thread/frame attached to them

That makes dynamic and synthetic values attached to them impossible to update - which, among other things, makes it impossible to properly display persistent variables of types that could have such dynamic/persistent values

Fix this by making it so that a ValueObject can control its constantness (hint: dynamic and synthetic values cannot be constant) and whether it wants to let itself be updated when an invalid thread is around

llvm-svn: 237504
2015-05-16 01:27:00 +00:00
Vince Harron 341eda4ca7 Fixed arm64 build error
llvm-svn: 237493
2015-05-16 00:26:20 +00:00
Greg Clayton 898c1b2cfe Don't crash if we have bad debug info that has a DW_TAG_inheritance with a bad DW_AT_type reference. Emit an error with instructions to file a bug.
<rdar://problem/20944860>

llvm-svn: 237485
2015-05-15 22:31:18 +00:00
Greg Clayton 9438056b83 Don't crash if a function has no name by calling 'strcmp(name, "main")'.
<rdar://problem/20925061>

llvm-svn: 237484
2015-05-15 22:20:29 +00:00
Vince Harron fc872b205a XFAIL'd MiVarTestCase.test_lldbmi_eval on gcc-4.9/i386
It times out on TestMyVar:113

self.expect("\^done,value=\"0x[0-9a-f]+\"")

llvm-svn: 237480
2015-05-15 21:54:02 +00:00
Vince Harron a66c695340 Reverting r237460 to fix test failures introduced on OSX & Linux
TestExitDuringStep.py
TestNumThreads.py
TestThreadExit.py
TestThreadStates.py

llvm-svn: 237479
2015-05-15 21:43:26 +00:00
Greg Clayton 67d49488a7 Don't allow infininte recursion when trying to resolve re-exported symbols.
<rdar://problem/20821289>

llvm-svn: 237477
2015-05-15 21:27:16 +00:00
Robert Flack eb83fabfa0 Only check _ZN function prefix in Linux and FreeBSD targets in SymbolFileDWARF
In http://reviews.llvm.org/D9754 I enabled the mangled symbol name lookup
workaround used to find global and anonymous namespace symbols in linux binaries
for all platforms, however we should still only check for these symbols when
processing Linux or FreeBSD binaries where they are relevant. This patch makes
this change.

Test Plan: The tests from the original revision still pass:
TestCallCPPFunction.py
TestCallStopAndContinue.py
TestExprs.py
TestExprsChar.py
TestNamespace.py
TestOverloadedFunctions.py
TestRvalueReferences.py
TestThreadExit.py

Differential Revision: http://reviews.llvm.org/D9782

llvm-svn: 237467
2015-05-15 18:59:59 +00:00
Robert Flack 4629c4b9cb Choose stdlib for test suite based on target platform.
When compiling programs for the test suite we currently choose which stdlib to
use based on the host platform, but should be basing this on the target
platform.

Test Plan: ./dotest.py $DOTEST_OPTS -t -p TestThreadExit.py
This test previously failed mac->linux most of the time due to using the mac
host's atomic declaration.

Differential Revision: http://reviews.llvm.org/D9797

llvm-svn: 237466
2015-05-15 18:54:32 +00:00
Greg Clayton 1548440c45 OperatingSystem plug-ins need to avoid running code when fetching thread lists. This patch helps with that by making all SBValue objects that are fetched not try to do dynamic type resolution. Objective C can end up running code to fetch a list of all ISA pointers so we can tell when something is dynamic and this running code could cause the OS plug-in to continue the target.
This fix disabled dynamic types, fetches the new threads from the OS plug-in, then restores the setting.

<rdar://problem/20768407> 

llvm-svn: 237465
2015-05-15 18:40:24 +00:00
Greg Clayton 286ea2342d Fix the lldb-mi Xcode project build target to it compiles.
llvm-svn: 237464
2015-05-15 18:38:04 +00:00
Ilia K d9f1a78aa0 Add --move-to-nearest-code / target.move-to-nearest-code options
Summary:
This option forces to only set a source line breakpoint when there is an exact-match

This patch includes the following commits:
# Add the -m/--exact-match option in "breakpoint set" command
## Add exact_match arg in BreakpointResolverFileLine ctor
## Add m_exact_match field in BreakpointResolverFileLine
## Add exact_match arg in BreakpointResolverFileRegex ctor
## Add m_exact_match field in BreakpointResolverFileRegex
## Add exact_match arg in Target::CreateSourceRegexBreakpoint
## Add exact_match arg in Target::CreateBreakpoint
## Add -m/--exact-match option in "breakpoint set" command
# Add target.exact-match option to skip BP if source line doesn't match
## Add target.exact-match global option
## Add Target::GetExactMatch
## Refactor Target::CreateSourceRegexBreakpoint to accept LazyBool exact_match (was bool)
## Refactor Target::CreateBreakpoint to accept LazyBool exact_match (was bool)
# Add target.exact-match test in SettingsCommandTestCase
# Add BreakpointOptionsTestCase tests to test --skip-prologue/--exact-match options
# Fix a few typos in lldbutil.check_breakpoint_result func
# Rename --exact-match/m_exact_match/exact_match/GetExactMatch to --move-to-nearest-code/m_move_to_nearest_code/move_to_nearest_code/GetMoveToNearestCode
# Add exact_match field in BreakpointResolverFileLine::GetDescription and BreakpointResolverFileRegex::GetDescription, for example:
was:
```
1: file = '/Users/IliaK/p/llvm/tools/lldb/test/functionalities/breakpoint/breakpoint_command/main.c', line = 12, locations = 1, resolved = 1, hit count = 2
  1.1: where = a.out`main + 20 at main.c:12, address = 0x0000000100000eb4, resolved, hit count = 2
```
now:
```
1: file = '/Users/IliaK/p/llvm/tools/lldb/test/functionalities/breakpoint/breakpoint_command/main.c', line = 12, exact_match = 0, locations = 1, resolved = 1, hit count = 2
  1.1: where = a.out`main + 20 at main.c:12, address = 0x0000000100000eb4, resolved, hit count = 2
```

Test Plan:
./dotest.py -v --executable $BUILDDIR/bin/lldb functionalities/breakpoint/
./dotest.py -v --executable $BUILDDIR/bin/lldb settings/
./dotest.py -v --executable $BUILDDIR/bin/lldb tools/lldb-mi/breakpoint/

Reviewers: jingham, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits, clayborg, jingham

Differential Revision: http://reviews.llvm.org/D9273

llvm-svn: 237460
2015-05-15 18:16:15 +00:00
Ilia K 236714c67a Improve the MiVarTestCase.test_lldbmi_var_list_children test (MI)
llvm-svn: 237454
2015-05-15 16:13:51 +00:00
Pavel Labath 9eb1ecb9af [NativeProcessLinux] Fix removal of temporary breakpoints
Summary:
There was an issue in NPL, where we attempted removal of temporary breakpoints (used to implement
software single stepping), while some threads of the process were running. This is a problem
since we currently always use the main thread's ID in the removal ptrace call. Therefore, if the
main thread was still running, the ptrace call would fail, and the software breakpoint would
remain, causing all kinds of problems. This change removes the breakpoints after all threads have
stopped. This fixes TestExitDuringStep on Android arm and can also potentially help in other
situations, as previously the breakpoint would not get removed if the thread stopped for another
reason.

Test Plan: TestExitDuringStep passes, other tests remain unchanged.

Reviewers: tberghammer

Subscribers: tberghammer, aemerson, lldb-commits

Differential Revision: http://reviews.llvm.org/D9792

llvm-svn: 237448
2015-05-15 13:49:01 +00:00
Robert Flack fd8893fd96 Add EmulateInstructionMIPS to the xcode project file to fix build after r237420.
llvm-svn: 237446
2015-05-15 13:37:02 +00:00
Pavel Labath 6e35163cca [NativeProcessLinux] Fix potential race during thread exit
Summary:
This is the same issue as we had in D9145 for thread creation. Going through the full
ThreadDidStop/RequestResume cycle can cause a deferred notification to fire, which is not correct
when we are ignoring an event and resuming the thread. In this case it doesn't matter much since
the thread will die after that anyway, but for correctness, we should do the same thing here.
Also treating the SIGTRAP case the same way.

Test Plan: Tests continue to pass.

Reviewers: chaoren, ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9696

llvm-svn: 237445
2015-05-15 13:30:59 +00:00
Robert Flack 6e1fd35bfe Skip TestPluginCommands.py if host lldb library is incompatible with remote.
TestPluginCommands.py attempts to build a library which links against the host
built lldb library. This will only work if the remote is compatible with
binaries produced by the host.

Test Plan:
./dotest.py $DOTEST_OPTS -v -t -p TestPluginCommands.py
Test is skipped if remote platform is incompatible with host platform (i.e. mac
-> linux).

Differential Revision: http://reviews.llvm.org/D9770

llvm-svn: 237444
2015-05-15 12:39:33 +00:00
Ilia K 3ac979c4da Fix CMICmdArgValPrintValues::Validate & enable 4 tests that were XFAIL'ed in r237437 (MI)
llvm-svn: 237443
2015-05-15 12:33:04 +00:00
Ilia K 25d29ba5ec Set specific values for VariableInfoFormat_e enum and remove kNumVariableInfoFormats (MI)
llvm-svn: 237438
2015-05-15 11:55:09 +00:00
Ilia K fbc88aa1dd XFAIL 4 lldb-mi tests to get Linux build green back (MI)
llvm-svn: 237437
2015-05-15 11:51:52 +00:00
Pavel Labath 48fca3b982 Fix StopInfoWatchpoint handling after r237411
r237411 exposed the following issue: ProcessGDBRemote used the description field in the
stop-reply to set the description of the StopInfo. In the case of watchpoints, the packet
description contains the raw address that got hit, which is not exactly the information we want
to display to the user as the stop info. Therefore, I have changed the code to use the packet
description only if the StopInfo does not already have a description. This makes the behavior
equivalent to the pre-r237411 behavior as then the SetDecription call got ignored for
watchpoints.

llvm-svn: 237436
2015-05-15 10:14:51 +00:00
Tamas Berghammer 69fc298a94 Fix virtual step handling in ThreadPlanStepInRange
Differential revision: http://reviews.llvm.org/D9773

llvm-svn: 237435
2015-05-15 10:14:15 +00:00
Ilia K 27e2c058c9 Fix parsing of print-values arg (MI)
# Add CMICmdArgValPrintValues argument
# Rework -stack-list-arguments/-stack-list-locals/-stack-list-variables/-var-update/-var-list-children
  commands to use the CMICmdArgValPrintValues argument instead of usage of pair of non-mandatory
  arguments like: CMICmdArgValNumber(0) || CMICmdArgValLongOptions("no-values")

llvm-svn: 237429
2015-05-15 09:46:28 +00:00
Ilia K 06d2855fb3 Fix a reason of *stopped notifications due to SIGINT/SIGSTOP signals (MI)
# Add SBProcess::GetInterruptedFromEvent
# Add vrEvent arg in CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStateStopped
  and CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopSignal
# Refactor CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopSignal
## Clean up and fix typos
## Remove vwrbShouldBrk arg
# Fix MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_{local,remote}
  to expect SIGSTOP instead of SIGINT

llvm-svn: 237426
2015-05-15 09:29:09 +00:00
Ilia K d50ea2fc15 Fix a few compile warnings
llvm-svn: 237425
2015-05-15 09:15:27 +00:00
Omair Javaid cdad63b33d LLDB build broke after applying patch http://reviews.llvm.org/D9706
This patch fixes the issue.

llvm-svn: 237421
2015-05-15 08:30:29 +00:00
Bhushan D. Attarde 794a4d5a9f Assembly profiler for mips32
Summary:
Implementation of assembly profiler for MIPS32 using EmulateInstruction which currently scans only prologue/epilogue assembly instructions. It uses llvm::MCDisassembler to decode assembly instructions.

Reviewers: clayborg, jasonmolenda

Differential Revision: http://reviews.llvm.org/D9769

llvm-svn: 237420
2015-05-15 06:53:30 +00:00
Omair Javaid ea8c25a802 This patch adds support for setting/clearing hardware watchpoints and breakpoints on AArch64 (Arm v8) 64-bit hardware.
http://reviews.llvm.org/D9706

llvm-svn: 237419
2015-05-15 06:29:58 +00:00
Oleksiy Vyalov 9953f0886b Reverting r237392 since it broke TestNumThreads on ubuntu builder.
llvm-svn: 237415
2015-05-15 02:05:10 +00:00
Jason Molenda 0453be9bd9 The StopInfo base class has an m_description std::string.
Remove the m_description ivar from the StopInfoBreakpoint
and StopInfoWatchpoint subclasses of StopInfo.  Also,
initialize the m_description ivar in the StopInfo ctor.
<rdar://problem/20902950> 

llvm-svn: 237411
2015-05-15 00:19:28 +00:00
Zachary Turner 275806f90b Don't bother dynamic loading the Windows Slim RW Lock API.
This API has been present since XP, and I think it's safe to
drop support for XP (since other things have been introduced long
ago which already don't work on XP anyway).

With this patch, we can statically bind against the exports and
not bother falling back to a CRITICAL_SECTION if we can't load
the API.

llvm-svn: 237402
2015-05-14 22:50:19 +00:00
Adrian McCarthy d26b0c4d31 Enable multithreaded debugging on Windows.
llvm-svn: 237392
2015-05-14 21:07:59 +00:00
Siva Chandra b8c238c080 [TestSendSignal] Include signal.h instead of sys/signal.h in the test case.
Summary:
Android API-9 does not have sys/signal.h. However, all sys/signal.h
has when present is an include of signal.h.

Test Plan: dotest.py -p TestSendSignal on linux and Android.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

Differential Revision: http://reviews.llvm.org/D9779

llvm-svn: 237381
2015-05-14 19:02:13 +00:00
Ed Maste 31bc506987 Avoid Linux-specific header in platform-independent tests
llvm-svn: 237371
2015-05-14 16:39:02 +00:00
Ed Maste 4dd8fba21e XTIMEOUT tests timing out on the FreeBSD buildbot
llvm-svn: 237369
2015-05-14 16:25:52 +00:00
Siva Chandra ff2b29d0ea [TestAttachDenied] Use a file instead of a pipe for synchronization.
Summary:
One cannot use mknod or mkfifo on user Android devices. This commit
changes the use of pipe to a file to synchronize between the inferior
and the test.

Test Plan: dotest.py -P TestAttachDenied

Reviewers: ovyalov, chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

Differential Revision: http://reviews.llvm.org/D9768

llvm-svn: 237328
2015-05-14 01:36:47 +00:00
Enrico Granata b2d643146f Implement an objc tagged-pointer info command that will provide information about what LLDB thinks an ObjC tagged pointer represents
llvm-svn: 237322
2015-05-14 00:46:47 +00:00
Vince Harron de92b52015 Added XTIMEOUT for TestAttachDenied.py
llvm-svn: 237319
2015-05-13 23:59:03 +00:00
Ed Maste da04cb2643 Add mips64el trap opcode to PlatformFreeBSD as well
llvm-svn: 237315
2015-05-13 23:12:51 +00:00
Ed Maste af0494f158 Restore breaks lost in shuffling GetSoftwareBreakpointTrapOpcode
llvm-svn: 237313
2015-05-13 23:09:43 +00:00
Ed Maste dfef0cecd4 Add AArch64 and MIPS breakpoint opcodes and sort cases
New opcodes from PlatformLinux.cpp

llvm-svn: 237306
2015-05-13 22:40:01 +00:00
Ed Maste a157bc8539 Initial FreeBSD/arm live debugging support
Patch by Tom Rix, except using the RegisterContextFreeBSD_arm files
added in r235305 instead.

llvm-svn: 237303
2015-05-13 22:33:12 +00:00
Ed Maste a928d9550c Rearrange PlatformFreeBSD to match PlatformLinux
No functional change, but this simplifies diffs of the two.

llvm-svn: 237302
2015-05-13 22:26:24 +00:00
Zachary Turner fb69dd8b64 Don't import lock on Windows.
lock imports fcntl, which doesn't exist on Windows.  If we need
to use this class on Windows, we will need to implement something
based on the CreateMutex API.

llvm-svn: 237292
2015-05-13 20:21:33 +00:00
Zachary Turner 535a69112b Fix broken test, this wasn't supposed to get committed.
llvm-svn: 237291
2015-05-13 20:21:22 +00:00
Robert Flack fa5ad65e5c Select expected remote libc++ library name based on remote platform.
Select expected remote libc++ library name based on remote platform. This is
used to verify libc++ is in the loaded image list by various tests which use it.

Test Plan:
Passes the following tests mac -> linux with this patch:
TestDataFormatterLibccIterator.py
TestDataFormatterLibccMap.py
TestDataFormatterLibccMultiMap.py
TestDataFormatterLibcxxMultiSet.py
TestDataFormatterLibcxxSet.py
TestDataFormatterUnordered.py

Differential Revision: http://reviews.llvm.org/D9759

llvm-svn: 237288
2015-05-13 20:17:34 +00:00
Zachary Turner 1b988b4b64 Fix line endings.
I must have committed these with windows line endings a few months
ago when I did this work.

llvm-svn: 237283
2015-05-13 19:45:06 +00:00
Zachary Turner ff33eefcc7 Fix an issue with finding python on Windows.
Someone must have changed the behavior of FileSpec slightly
relating to whether or not there is a trailing backslash when calling
GetPath() and GetDirectory().  This caused ScriptInterpreterPython
to find the wrong values when initializing sys.path, and as a result
we couldn't find the lldb module.

This patch fixes the issue, and also adds a test to make sure that
GetDirectory() does not return a string containing a trailing slash.

llvm-svn: 237282
2015-05-13 19:44:57 +00:00
Zachary Turner 1aa755ce77 Remove DoAttachToProcessWithId(lldb::pid_t).
There were two versions of DoAttachToprocessWithId.  One that takes
a pid_t, and the other which takes a pid_t and a ProcessAttachInfo.
There were no callers of the former version, and all of the
implementations of this version were simply forwarding calls to
one version or the other.

llvm-svn: 237281
2015-05-13 19:44:44 +00:00
Zachary Turner 7271bab3bb Have Platform::KillProcess try to use the process plugin first.
llvm-svn: 237280
2015-05-13 19:44:24 +00:00
Jim Ingham f9e1a165dd Add a comment clarifying what func_name_type_mask is.
llvm-svn: 237279
2015-05-13 19:01:15 +00:00
Ted Woodward bb1e283cc5 Change Linux Platform to support non-host Linux architectures
Summary:
This was originally http://reviews.llvm.org/D8709 , but I didn't commit it correctly. 

Since then GetSupportedArchitectureAtIndex() has been changed. That change, http://reviews.llvm.org/D9511 , breaks non-x86 linux implementations, so this change goes back to the old implementation and adds remote linux support from D8709.

D8709 summary:

The Linux Platform currently will only say the Host architecture is supported. This patch retains that behavior for the Host Platform, but adds a list of architectures for the Remote Platform.


Reviewers: clayborg, flackr

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9683

llvm-svn: 237278
2015-05-13 18:52:56 +00:00
Robert Flack 79e4a4b213 Check the host platform to determine logging channel to test in TestRegisters.py
Checks the host platform to determine logging channel to test in
TestRegisters.py as the logging runs host side.

Test Plan:
./dotest.py $DOTEST_OPTS -v -t -p TestRegisters.py
This passes mac -> linux as it's logging the correct channel.

Differential Revision: http://reviews.llvm.org/D9755

llvm-svn: 237271
2015-05-13 18:23:10 +00:00
Robert Flack 5cbd3bfca1 Enable workaround for finding functions in global namespace on linux binaries on
all hosts.

We require a workaround to be able to locate global and anonymous namespace
functions in the dwarf symbols on linux binaries. This patch enables this code
on all platforms so that we can still find these symbols when debugging from a
different host platform.

Test Plan:
The following tests begin passing when running with a mac host to linux client:
TestCallCPPFunction.py
TestCallStopAndContinue.py
TestExprs.py
TestExprsChar.py
TestNamespace.py
TestOverloadedFunctions.py
TestRvalueReferences.py
TestThreadExit.py

Differential Revision: http://reviews.llvm.org/D9754

llvm-svn: 237270
2015-05-13 18:20:02 +00:00
Ilia K 0e919bca7f Refactor lldb-mi's prompt
Summary:
This patch fixes/cleans code around of (gdb) prompt:
# Add CMICmnStreamStdout::WritePrompt
# Clean up CMICmnStreamStdout::TextToStdout (don't lock
  the m_mutex twice because it will be locked in CMICmnStreamStdout::WritePriv)
# Remove unused CMICmnStreamStdin::m_bShowPrompt field
# Refactor CMICmnLLDBDebuggerHandleEvents to use CMICmnStreamStdout::WritePrompt
  instead of TextToStdout("(gdb)")
# Refactor CMIDriver to use CMICmnStreamStdout::WritePrompt instead of
  ```
    if (bOk && m_rStdin.GetEnablePrompt())
        bOk = m_rStdOut.WriteMIResponse(m_rStdin.GetPrompt());
  ```

Test Plan: ./dotest.py -v --executable $BUILDDIR/bin/lldb tools/lldb-mi/

Reviewers: abidh

Reviewed By: abidh

Subscribers: lldb-commits, abidh

Differential Revision: http://reviews.llvm.org/D9737

llvm-svn: 237248
2015-05-13 12:18:20 +00:00
Tamas Berghammer 4276cb3a50 Fix arm instruction emulation of add (imm) and sub (imm)
Differential revision: http://reviews.llvm.org/D9704

llvm-svn: 237240
2015-05-13 09:25:06 +00:00
Ewan Crawford 78baa19781 Remote Non-Stop Support
Summary:
 
This patch is the beginnings of support for Non-stop mode in the remote protocol. Letting a user examine stopped threads, while other threads execute freely.

Non-stop mode is enabled using the setting target.non-stop-mode, which sends a QNonStop packet when establishing the remote connection.
Changes are also made to treat the '?' stop reply packet differently in non-stop mode, according to spec https://sourceware.org/gdb/current/onlinedocs/gdb/Remote-Non_002dStop.html#Remote-Non_002dStop.
A setting for querying the remote for default thread on setup is also included.

Handling of '%' async notification packets will be added next.

Reviewers: clayborg

Subscribers: lldb-commits, ADodds, ted, deepak2427

Differential Revision: http://reviews.llvm.org/D9656

llvm-svn: 237239
2015-05-13 09:18:18 +00:00
Ilia K acf20fa233 Fix a few compile warnings
llvm-svn: 237238
2015-05-13 09:04:59 +00:00
Vince Harron 05df698d2b Darwin - fix intermitent crashes in import crashinfo
Summary:
"import crashinfo" was probably failing because multiple dotest invocations
are all trying to compile crashinfo.so at the same time.
    
I've put a mutex around the compile step to prevent this.
   
Reviewers: clayborg, chying
    
Subscribers: lldb-commits
    
Differential Revision: http://reviews.llvm.org/D9732

llvm-svn: 237230
2015-05-13 05:00:23 +00:00
Robert Flack 8ec55a53a7 Don't change the selected platform when creating the dummy target.
A dummy target is used by TargetList::CreateTargetInternal to prime newly
created targets. the first time this is done it creates the dummy target. The
dummy target is created with the host platform (See
TargetList::CreateDummyTarget) which results in switching the selected platform
back to the host platform even when creating a target for a different platform.
This change avoids changing the selected platform while creating the dummy
target to prevent this side effect.

Test Plan:
./dotest.py $DOTEST_OPTS -t -p TestCreateAfterAttach.py
Tests using process attach (e.g. TestCreateAfterAttach.py, TestHelloWorld.py)
now run successfully mac -> linux.

Differential Revision: http://reviews.llvm.org/D9712

llvm-svn: 237221
2015-05-13 00:39:24 +00:00
Vince Harron d7e6a4f2f0 Fixed a ton of gcc compile warnings
Removed some unused variables, added some consts, changed some casts
to const_cast. I don't think any of these changes are very
controversial.

Differential Revision: http://reviews.llvm.org/D9674

llvm-svn: 237218
2015-05-13 00:25:54 +00:00
Vince Harron e06a7a8e8f dosep can run tests in a specific subfolder
For example:

./dosep.py -o "$DOTEST_OPTS" lang/c/

Differential Revision: http://reviews.llvm.org/D9724

llvm-svn: 237207
2015-05-12 23:12:19 +00:00
Vince Harron 0638173750 Added support for XTIMEOUT to dosep
Ideally, this would be put in the individual test files.

Unfortunately, I'm not sure how to do that quickly/easily.
I'm open to suggestions.

In the meantime, I'll submit this to stabilze the build server.

llvm-svn: 237206
2015-05-12 23:10:36 +00:00
Vince Harron bef5ff3035 Revert accidental file checkin
llvm-svn: 237184
2015-05-12 21:19:39 +00:00
Vince Harron 5727e4cf05 XFAIL'd TestPersistObjCPointeeType.py
llvm-svn: 237182
2015-05-12 21:16:51 +00:00
Chaoren Lin 042ca39c01 Platform settings doesn't need permission options.
Summary:
Also removes conflict error message for '-w' between
--user-write and --working-dir.

Reviewers: flackr, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9711

llvm-svn: 237178
2015-05-12 21:06:48 +00:00
Vince Harron 121fa77e92 Added minor comment
llvm-svn: 237174
2015-05-12 20:55:43 +00:00
Ted Woodward 4744ec6da9 Windows: fix bug in getcwd() and add chdir().
Summary:
GetCurrentDirectory() returns the number of characters copied; 0 is a failure, not a success.

Add implementation for chdir().

Reviewers: zturner

Reviewed By: zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9300

llvm-svn: 237162
2015-05-12 18:47:33 +00:00
Tamas Berghammer b31bf17236 XFAIL and Skip flaky test case on linux
llvm-svn: 237135
2015-05-12 14:25:43 +00:00
Robert Flack e49b8e065e Call remote platform GetSupportedArchitectureAtIndex if connected to remote.
Updated PlatformLinux::GetSupportedArchitectureAtIndex to call the
PlatformRemoteGdbServer::GetSupportedArchitectureAtIndex if connected remotely.
This should return the correct thing for android (to fix those failing tests),
and is also working for mac to linux.

Test Plan:
./dotest.py $DOTEST_OPTS -t -p TestCallStdStringFunction.py
The above still passes when running mac->linux indicating it successfully
identified PlatformLinux as the target platform and converted the mmap options
correctly.

Differential Revision: http://reviews.llvm.org/D9672

llvm-svn: 237128
2015-05-12 13:22:37 +00:00
Ilia K feda0b7ea9 Disable GCC optimizations for builtin functions in lldb tests
This patch adds new default flag -fno-builtin which forces gcc to not optimize builtin functions.
For example, without this flag GCC replaces printf("hello\n") -> puts("hello") even if -O0 was specified

Also this patch fixes the MiDataTestCase.test_lldbmi_data_disassemble test on Linux/gcc.

llvm-svn: 237118
2015-05-12 12:13:12 +00:00
Tamas Berghammer 1f14920437 Return the correct user register count for arm from NativeRegisterContext
The defult implementation falls back to GetRegisterCount what
includes the debug registers also what shouldn't be displayed to
the user.

llvm-svn: 237111
2015-05-12 10:27:45 +00:00
Ilia K 93df5d9c69 Fix MiDataTestCase.test_lldbmi_data_disassemble test on Linux (bug 23489)
llvm-svn: 237105
2015-05-12 09:24:24 +00:00
Pavel Labath 108c325d6e Remove handling of eStateStopped from NativeProcessLinux::Resume
Summary:
NPL::Resume attempted to handle eStateStopped as a resume action. However:
- GDBRemoteCommunicationServerLLGS (the only user of NPL) never sets this action
- it could set this action in response to a vCont:t packet, but LLDB never produces this packet
- gdb-remote protocol documentation says vCont:t packet is used only in non-stop mode, but LLDB
  does not support non-stop mode
- even if LLDB supported non-stop mode, this implementation of eStateStopped does something
  different from what the spec says it should (according to spec, it should stop the specified
  thread, but this seems to want to stop all threads).

Given the facts above, I believe we should remove this unused and untested code, as it probably
doesn't even work and removing it makes the rest of the code noticably simpler.

Reviewers: ovyalov, chaoren

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9657

llvm-svn: 237103
2015-05-12 09:03:18 +00:00
Pavel Labath 1dbc6c9cd6 [NativeProcessLinux] Remove event mutex and clean functions using it
Summary:
Since the former-TSC events are now processed synchronously, there is no need for to protect them
with a separate mutex - all the actions are now guarded by the big m_threads_mutex.

With the mutex gone, the following functions, no longer have any purpose and were removed:
NotifyThreadCreate: replaced by direct calls to ThreadWasCreated
NotifyThreadStop: replaced by direct calls to ThreadDidStop
NotifyThreadDeath: folded into StopTrackingThread
ResetForExec: inlined as it consisted of a single line of code
RequestThreadResume(AsNeeded): replaced by direct calls to ResumeThread
StopThreads: removed, as it was never called

Test Plan: tests continue to pass

Reviewers: ovyalov, chaoren

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9603

llvm-svn: 237101
2015-05-12 08:35:33 +00:00
Ilia K b2b61a2422 Skip MiDataTestCase.test_lldbmi_data_disassemble test to get Linux build green
llvm-svn: 237098
2015-05-12 07:35:06 +00:00
Ilia K 56aa294652 Improve MiStartupOptionsTestCase.test_lldbmi_executable_option_file test (MI)
llvm-svn: 237096
2015-05-12 06:49:49 +00:00
Ilia K d84713bd86 Show error message from failed evaluation when doing -var-create
Summary:
When -var-create fails, we will now show the error message from the failed evaluation if it is available.

Patch from chuckr@microsoft.com

Test Plan: I fixed the MiVarTestCase.test_lldbmi_eval test to expect the new error string. All MI tests passing on OS X.

Reviewers: abidh, ChuckR

Subscribers: greggm, lldb-commits, paulmaybee

Differential Revision: http://reviews.llvm.org/D9691

llvm-svn: 237094
2015-05-12 06:15:16 +00:00
Ilia K f44ab29e05 Escape strings in disassembly comments.
Summary: Patch from chuckr@microsoft.com

Reviewers: abidh, ChuckR

Subscribers: paulmaybee, lldb-commits

Differential Revision: http://reviews.llvm.org/D9544

llvm-svn: 237092
2015-05-12 05:55:23 +00:00
Vince Harron a9c2a380b3 TestPublicAPIHeaders.py - Changed expectedFailureDarwin to skipIfDarwin
expectedFailure doesn't work if the failure is in a teardown step.

llvm-svn: 237089
2015-05-12 05:18:06 +00:00
Vince Harron 069391ac15 Working on getting the OSX build green
Added missing SBLanguageRuntime.h to lldb.xcodeproj, set to Public (fixed compile error in TestPublicAPIHeaders)
Removed reference to (temporarily) missing gtest.xcodeproj
Fixed TestDeadStrip compile error
XFAIL TestPublicAPIHeaders - test passes but teardown command 'settings remove target.env-vars DYLD_LIBRARY_PATH' fails
XFAIL TestCModules - use of undeclared identifier 'MIN'
XFAIL TestModulesAutoImport - clang: error: unknown argument: '-gmodules'
XFAIL TestObjCNewSyntax - expr -- @((char*)"Hello world" + 6) cannot box a string value because NSString has not been declared

http://reviews.llvm.org/D9643

llvm-svn: 237085
2015-05-12 02:20:27 +00:00
Oleksiy Vyalov 5e30f0e02d Apply LLDB_API modifier to SBPlatform and SBPlatformShellCommand.
llvm-svn: 237084
2015-05-12 02:04:26 +00:00
Vince Harron 8b33567189 Get lldb-server building on android-9
Build lldb-server with an android-9 sysroot.

llvm-svn: 237078
2015-05-12 01:10:56 +00:00
Vince Harron 19e300fbde Change session log filename pattern: test before arch
This is a very minor change.

Just reshuffle the elements of the log filename so that the test name
comes before the arch/compiler

Before:
Failure-x86_64-clang-TestCModules.CModulesTestCase.test_expr_with_dwarf.log

After:
Failure-TestCModules.CModulesTestCase.test_expr_with_dwarf-x86_64-clang.log

This way, results are grouped by test name, not by arch. I think this
is much more useful.

Differential Revision: http://reviews.llvm.org/D9648

llvm-svn: 237076
2015-05-12 00:50:54 +00:00
Ed Maste fefbdb82ae Remove Triple Vendor check when creating FreeBSD Platform
This is equivalent to r237052 in PlatformLinux.cpp.

llvm-svn: 237075
2015-05-12 00:43:45 +00:00
Ted Woodward 869e0c1c59 Fix selecting the Platform in TargetList::CreateTargetInternal()
Summary:
TargetList::CreateTargetInternal() will only select the current Platform. A previous patch always sets platform_sp to the current Platform, so a check later to see if platform_sp was not defined always failed, and the current Platform was used. This patch removes that check, so if the current Platform is not compatible with the target architecture, CreateTargetInternal() will call Platform::GetPlatformForArchitecture() to select a compatible Platform.

Vince, remote linux tests (Ubuntu -> remote Ubuntu) pass the same with and without this patch.

Reviewers: vharron, clayborg

Reviewed By: clayborg

Subscribers: jingham, lldb-commits

Differential Revision: http://reviews.llvm.org/D8749

llvm-svn: 237053
2015-05-11 21:23:31 +00:00
Ted Woodward b1da257ad1 Remove Triple Vendor check when creating Linux Platform
Summary: The Linux Platform shouldn't care about the Vendor field in the Triple. Currently it allows a value of "PC", or "unknown" if LLDB was built on Linux. This patch removes that check, so the Vendor field isn't touched. This will allow the Linux Platform to be created when using a Triple of *-*-Linux.

Reviewers: vharron, clayborg, sas, tberghammer

Reviewed By: clayborg, sas, tberghammer

Subscribers: tberghammer, sas, lldb-commits

Differential Revision: http://reviews.llvm.org/D8742

llvm-svn: 237052
2015-05-11 21:21:21 +00:00
Ted Woodward e76e7e9369 Add Hexagon packet support to ThreadPlanStepRange
Summary:
Hexagon is a VLIW processor. It can execute multiple instructions at once, called a packet. Breakpoints need to be alone in a packet. This patch will make sure that temporary breakpoints used for stepping are set at the start of a packet, which will put the breakpoint in a packet by itself.

Patch by Deepak Panickal of CodePlay and Ted Woodward of Qualcomm.

Reviewers: deepak2427, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9437

llvm-svn: 237047
2015-05-11 21:12:33 +00:00
Chaoren Lin effd27a22b Doc talks about Platform_RunCommand while we actually use Platform_shell.
llvm-svn: 237016
2015-05-11 19:48:37 +00:00
Siva Chandra 268efdd49b ["watch set" tests] Use default test case executable names.
Summary: This change similar to r236783.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9630

llvm-svn: 237010
2015-05-11 18:49:59 +00:00
Chaoren Lin 3e2bdb4640 os.path.join does not always work for paths on remote platforms.
Summary:
Since we don't yet have remote windows debugging, it should be safe to assume
that the remote target uses unix path separators.

Reviewers: ovyalov, zturner, clayborg, vharron

Reviewed By: vharron

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9633

llvm-svn: 237006
2015-05-11 17:53:39 +00:00
Tamas Berghammer 8841b03290 New test for llvm.org/pr23478
When there is two brekapoint on two consecutive instruction then
the second breakpoint is ignored by lldb. This test check for the
correct behaviour in this scenario.

Differential revision: http://reviews.llvm.org/D9661

llvm-svn: 236997
2015-05-11 14:42:09 +00:00
Ed Maste c4f4d6c437 XFAIL a test that fails on FreeBSD 11 (local and buildbot)
For some reason this happens only when running the full test suite
(e.g., via ninja check-lldb), but not when running the
TestStaticVariables.py tests in isolation. XFAIL for now while
investigating, in an attempt to bring the bot to green and reduce noise.

llvm.org/pr20550

llvm-svn: 236993
2015-05-11 13:38:59 +00:00
Tamas Berghammer 3c1d572799 Fix thumb condition extraction in ARM instrcution emulator
llvm-svn: 236988
2015-05-11 12:50:56 +00:00
Tamas Berghammer 428447f625 Skip and XFAIL TestThreadStepOut as it times out on the Linux build bot
llvm-svn: 236986
2015-05-11 12:42:56 +00:00
Tamas Berghammer 88504598c3 Skip and XFAIL test occasionally timing out on the Linux build bot
llvm-svn: 236984
2015-05-11 10:32:16 +00:00
Pavel Labath 8c8ff7af28 [NativeProcessLinux] Remove double thread state accounting
Summary:
Now that all thread events are processed synchronously, there is no need to have separate records
of whether a thread is running. This changes the (ever-dwindling) remains of the TSC to use
NativeThreadLinux as the authoritative source of the state of threads. The rest of the
ThreadContext we need has been moved to a member of NTL.

Test Plan: ninja check-lldb continues to pass

Reviewers: chaoren, ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9562

llvm-svn: 236983
2015-05-11 10:03:10 +00:00
Vince Harron 6d3d0f11ea Fixed lldb-mi test failures introduced by r236956
Move enable/disableLogForCurrentTest from lldbtest.TestBase to
lldbtest.Base so they're accessible to Mi tests

llvm-svn: 236963
2015-05-10 22:01:59 +00:00
Vince Harron f1ff3c146d Remove unsupported lldb-server parameters from test
llvm-svn: 236958
2015-05-10 18:02:53 +00:00
Vince Harron d5fa102d44 We can't use sys.path[0] to determine the script directory because it doesn't work under a debugger
Test Plan: run tests with/without python debugger
Tested on OSX & Linux with PyCharm

Reviewers: chying, clayborg

Differential Revision: http://reviews.llvm.org/D9593

llvm-svn: 236957
2015-05-10 15:24:12 +00:00
Vince Harron 9753dd98b3 Add support for ./dotest.py --channel and --log-success
Summary:
New dotest options that allow arbitrary log channels and
categories to be enabled.  Also enables logging for locally run
debug servers.
    
Log messages are separated into separate files per test case.
(this makes it possible to log in dosep runs)
    
These new log files are stored side-by-side with trace files in the
session directory.
    
These files are deleted by default if the test run is successful.
    
If --log-success is specified, even successful logs are retained.
    
--log-success is useful for creating reference log files.
    
Test Plan:
add '--channel "lldb all" --channel "gdb-remote packets" --log-success'
to your dotest options

Tested on OSX and Linux
    
Differential Revision: http://reviews.llvm.org/D9594

llvm-svn: 236956
2015-05-10 15:22:09 +00:00
Vince Harron 4cc8d202d0 Fixed minor compile warnings
llvm-svn: 236945
2015-05-10 08:33:58 +00:00
Robert Flack 96ad3de54b Convert mmap options for target in InferiorCallMmap.
Converts the MAP_PRIVATE and MAP_ANON options to the target platform constants
(on which the call runs) rather than using those of the compiled host.

Test Plan:
Run test suite, the following tests requiring memory allocation / JIT support
begin passing when running mac -> linux:
Test11588.py
TestAnonymous.py
TestBreakpointConditions.py
TestCPPStaticMethods.py
TestCStrings.py
TestCallStdStringFunction.py
TestDataFormatterCpp.py
TestDataFormatterStdList.py
TestExprDoesntBlock.py
TestExprHelpExamples.py
TestFunctionTypes.py
TestPrintfAfterUp.py
TestSBValuePersist.py
TestSetValues.py

Differential Revision: http://reviews.llvm.org/D9511

llvm-svn: 236933
2015-05-09 15:53:31 +00:00
Chaoren Lin f34f410e0a Set path syntax for remote executable FileSpec.
Reviewers: ovyalov, zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9579

llvm-svn: 236925
2015-05-09 01:21:32 +00:00
Ed Maste f5132e70cc Skip tests that are timing out on the FreeBSD buildbot
XFAILing these does not work because the timeout is caught by the
top-level test infrastucture instead.

Some might be llvm.org/pr22784

llvm-svn: 236924
2015-05-09 01:01:36 +00:00
Oleksiy Vyalov a9ea07113c Use hard links to link sysroot files within ModuleCache.
http://reviews.llvm.org/D9587

llvm-svn: 236917
2015-05-08 23:54:34 +00:00
Vince Harron a6ad6d3cc9 TestCModules was effectively skipped on Linux
Summary: I've removed the secret skip and added expectedFailureLinux
    
Test Plan: run tests
    
Reviewers: flackr
    
Subscribers: lldb-commits
    
Differential Revision: http://reviews.llvm.org/D9615

llvm-svn: 236914
2015-05-08 23:17:46 +00:00
Siva Chandra 2d7832e44b Bump the default timeout in dosep.py to 10m.
Summary:
This seems to be sufficient to get the tests taking longer than the
previous timeout of 5m to run to completion on Android to pass instead
of timing out.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

Differential Revision: http://reviews.llvm.org/D9627

llvm-svn: 236913
2015-05-08 23:08:53 +00:00
Siva Chandra 09c4424994 [TestCreateAfterAttach] Add @skipIfRemote to the forking test.
Test Plan: dotest.py -p TestCreateAfterAttach

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9617

llvm-svn: 236903
2015-05-08 21:12:41 +00:00
Ed Maste 82d9f037fe Skip tests that are timing out on the FreeBSD buildbot
XFAILing these does not work because the timeout is caught by the
top-level test infrastucture instead.

Might be llvm.org/pr22784

llvm-svn: 236895
2015-05-08 19:51:44 +00:00
Zachary Turner a49c59145b Enable thread-safe logging.
Thread-safe logging had been disabled because of a deadlock,
possibly due to a lock acquired during a signal handler.

This patch turns thread safe logging back on and also greatly
reduces the scope of the lock, confining it only to the code that
affects the underlying output stream, instead of all the code that
builds up the formatted log message.  this should resolve the
issue surrounding the deadlock.

llvm-svn: 236892
2015-05-08 18:50:54 +00:00
Tamas Berghammer d916dbb726 Remove check for object file type from DynamicLoaderPOSIXDYLD::DidAttach
For PIE executables the type of the main executable is shared object
so we can't force that the main executable should have the type of
executable.

llvm-svn: 236870
2015-05-08 15:45:53 +00:00
Ed Maste e5f9bf0da0 Add expectedFailureFreeBSD decorator for buildbot pexpect issue
I'm not yet sure what's wrong with pexpect and I cannot reproduce this
problem locally. XFAIL these tests for now to reduce buildbot noise so
I can track down the remaining buildbot failures.

llvm.org/pr22784

llvm-svn: 236857
2015-05-08 14:20:25 +00:00
Ed Maste 0cb96aaf2b Enable TestCallStopAndContinue on FreeBSD
It's reported to pass consistently on Linux now, and it passed for me
in local testing on FreeBSD. Remove the expectedFailureFreeBSD decorator
for now.

llvm.org/pr20274

llvm-svn: 236853
2015-05-08 13:52:22 +00:00
Tamas Berghammer f3a243297b Use /data/local/tmp as temp directory on android
If no temp directory specified by the user on android then fall back
to /data/local/tmp what is always present on the device. It removes
the dependency of specifying TMPDIR for executing platform commands
on android.

Differential revision: http://reviews.llvm.org/D9569

llvm-svn: 236843
2015-05-08 12:46:26 +00:00
Ilia K fc6d66143f Improve MiBreakTestCase.test_lldbmi_break_insert_{function*,file_line*} tests (MI)
llvm-svn: 236840
2015-05-08 12:35:49 +00:00
Ilia K fd0325b81e Fix =breakpoint-created event after creation of BP (MI)
For example:
was:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",times="0",original-location="main"}
(gdb)
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",times="0",original-location="main"}
```

now:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",times="0",original-location="main"}
(gdb)
=breakpoint-created,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",times="0",original-location="main"}
```

llvm-svn: 236837
2015-05-08 12:18:11 +00:00
Colin Riley 5de4251474 Fix build on windows.
llvm-svn: 236836
2015-05-08 12:17:27 +00:00
Ilia K 3e6f515531 Remove duplicated code in CMICmdCmdBreakInsert::Acknowledge (MI)
llvm-svn: 236834
2015-05-08 12:11:13 +00:00
Ilia K e077ef7a69 Fix -break-insert without -f to cause an error if BP not resolved (MI)
For example:
was:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/Ilia
hello.cpp",line="14",pending=["main"],times="0",original-location="main"}
```

now:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert main
^error,msg="Command 'break-insert'. Breakpoint location 'main' not found"
```

llvm-svn: 236832
2015-05-08 12:09:56 +00:00
Ilia K 913b2d4fd3 Fix BP address for local symbols if target not launched (MI)
For example:
was:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert -f main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",pending=["main"],times="0",original-location="main"}
```

now:
```
$ bin/lldb-mi ~/p/hello
[...]
-break-insert -f main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000100000e2d",func="main",file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="14",pending=["main"],times="0",original-location="main"}
```

llvm-svn: 236830
2015-05-08 12:06:17 +00:00
Ilia K b9bfd969e3 Add support for Unicode strings in CMICmnLLDBUtilSBValue::GetValue (MI)
This patch includes the following changes:
# Add CMIUtilString::ConvertToASCII to convert unicode to ASCII (MI)
# Rework CMICmnLLDBUtilSBValue::GetSimpleValue to print wide/unicode char (MI)
## Add CMICmnLLDBUtilSBValue::GetSimpleValueChar
## Extend CMICmnLLDBUtilSBValue::IsCharType to accept char16_t/char32_t
## Don't ignore the fail_value in SBValue::GetValueAsUnsigned
# Rework CMIUtilString::ConvertToASCII (MI)
## Don't use templates
## Change the function signature to convert signle characters (was std::basic_string)
## Rename CMIUtilString::ConvertToASCII to CMIUtilString::ConvertToPrintableASCII
# Add CMIUtilString::ConvertToPrintableASCII for char (MI)
## Refactor CMIUtilString::Escape
## Simplify CMICmnLLDBUtilSBValue::GetSimpleValueChar for char
# Add char16_t* and char32_t* support in CMICmnLLDBUtilSBValue::GetSimpleValue (MI)
## Add CMICmnLLDBUtilSBValue::GetSimpleValueCStringPointer
## Add CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory2
   (it's extended version of CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory)
# Improve error checking in CMICmnLLDBUtilSBValue::GetSimpleValueChar (MI)
# Refactor CMICmnLLDBUtilSBValue (MI)
## Remove CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory
   (use CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory2 instead)
## Rename CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory2 to
   CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory
## Move CMICmnLLDBUtilSBValue::GetValueCString to private methods
## Rename CMICmnLLDBUtilSBValue::GetValueCString to
   CMICmnLLDBUtilSBValue::GetSimpleValueCStringArray
## Remove CMICmnLLDBUtilSBValue::GetChildValueCString
# Improve MiGdbSetShowTestCase.test_lldbmi_gdb_set_show_print_char_array_as_string test to check char16_t/char32_t (MI)
# Fix CMICmnLLDBUtilSBValue::GetSimpleValueCStringArray for Unicode (MI)
## Fix handling of char16_t and char32_t
## Improve CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory to read
   variables of type char[]: add vnMaxLen argument
## Turn on few cases to check char16_t[] and char32_t[] output in
   MiGdbSetShowTestCase.test_lldbmi_gdb_set_show_print_char_array_as_string
# Remove unnecessary checks in CMICmnLLDBUtilSBValue (MI)

llvm-svn: 236827
2015-05-08 11:21:13 +00:00
Tamas Berghammer 84dc009bef Re-enable compute load address for shared modules
It is required because of systems using PIE code

llvm-svn: 236826
2015-05-08 11:07:05 +00:00
Ilia K 24862eaca0 Fix -var-create for undefined variables (MI)
llvm-svn: 236825
2015-05-08 10:58:45 +00:00
Ilia K a4cfe98a86 Print process's output line by line (MI)
For example:
was:
```
@"'\r\n` - it's \\ni=1\r\nj=2\r\nx=3\r\ny=4\r\nargc: /Users/IliaK/p/hello\r\nargc: (null)\r\n"
```

now:
```
@"'\r\n"
@"` - it's \\ni=1\r\n"
@"j=2\r\n"
@"x=3\r\n"
@"y=4\r\n"
@"argc: /Users/IliaK/p/hello\r\n"
@"argc: (null)\r\n"
```

llvm-svn: 236824
2015-05-08 10:52:50 +00:00
Ilia K f1796dc669 Add MiExitTestCase.test_lldbmi_q that checks reduction of quit (MI)
llvm-svn: 236822
2015-05-08 10:42:11 +00:00
Ilia K 307b917696 Fix -var-list-children command (MI)
This patch incldues the following:
# Add from/to arguments in -var-list-children command (MI)
## Handle from and to args
## Don't print children=[] if numchild is 0
## A bit refactoring
## Add MiVarTestCase.test_lldbmi_var_list_children test
# Refactor -var-list-children (MI)
## Remove CMICmdCmdVarListChildren::VecMIValueResult_t
## Add CMICmdCmdVarListChildren::m_miValueList
## Remove CMICmdCmdVarListChildren::m_vecMiValueResult
   (use CMICmdCmdVarListChildren::m_miValueList instead)
## Print error message if value is invalid:
   ```
     ^error,msg="variable invalid"
   ```
## Refactor CMICmdCmdVarListChildren::Acknowledge and remove duplicated code
## Don't print children=[] if numchild is 0
## Add error checking
## Use CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e for print-values
## Add few more empty-range test cases in MiVarTestCase.test_lldbmi_var_list_children
#Improve MiVarTestCase.test_lldbmi_var_list_children test (MI)

llvm-svn: 236820
2015-05-08 10:10:14 +00:00
Pavel Labath 014d32b3bb Have lldb_assert accept bool expressions
Summary:
This changes lldb_assert to accept bool expressions as the parameter, this is because some
objects (such as std::shared_ptr) are convertible to bool, but are not convertible to int, which
leads to surprising errors.

Reviewers: granata.enrico, zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9565

llvm-svn: 236819
2015-05-08 09:53:31 +00:00
Tamas Berghammer 85fadd9fe8 Fix parsing of the plt section for android-arm
The ELF data contains two different errors in some ELF files on android.
* The link field of the symbol table don't point to the plt section or
  to the dynsym section even when it is present in the ELF files.
* The size of the plt entries aren't specified in the section header of
  the plt section.

This CL adds some workarounds for these two issue with finding the
sections by name if the link field is empty and by using a heuristic to
calculate the size and offset of the plt entries.

Differential revision: http://reviews.llvm.org/D9560

llvm-svn: 236818
2015-05-08 09:40:05 +00:00
Aidan Dodds c0c838516d This patch allows LLDB to use the $qXfer:Libraries: packet.
Differential Revision: http://reviews.llvm.org/D9471

llvm-svn: 236817
2015-05-08 09:36:31 +00:00
Bruce Mitchener 3a6cc51cb9 Make LLDB-MI tests wait for LLDB-MI to start up before sending any MI commands
Summary:
This set of changes addresses the issue I described in [[ http://llvm.org/pr23403 | Bug 23403 ]], in short most LLDB-MI tests fail unexpectedly due to timeout on my Ubuntu 14.10 x86_64 VirtualBox VM. I have no idea why the Ubuntu buildbots don't seem to suffer from this issue. This patch just makes **MiTestCaseBase.spawnLldbMi()** block until the spawned LLDB-MI child process outputs the **(gdb)** prompt, which ensures that MI commands aren't sent to the LLDB-MI child process until it's ready.

Before these changes 52 LLDB-MI tests failed unexpectedly (all but one due to timeouts), after these changes no tests fail due to timeouts. I still get one unexpected failure in **test_lldbmi_source_option_start_script_error** in **TestMiStartupOptions.py**, but that's due to a file error, that test should be skipped on Linux just like the other two //start_script// tests until the file error is fixed.

Patch from Vadim Macagon. Thanks!

Test Plan: ./dotest.py -A x86_64 -C clang --executable $BUILDDIR/bin/lldb tools/lldb-mi/

Reviewers: abidh, domipheus, ki.stfu

Reviewed By: ki.stfu

Subscribers: brucem, lldb-commits

Differential Revision: http://reviews.llvm.org/D9595

llvm-svn: 236816
2015-05-08 09:28:11 +00:00
Pavel Labath 337f3eb929 [NativeProcessLinux] Remove the stop callback
Summary:
The stop callback is a remnant of the ThreadStateCoordinator. We don't need it now that TSC is
gone, as we know exactly which function to call when threads stop. This also removes some
stop-related functions, which were just forwarding calls to one another.

Test Plan: ninja check-lldb continues to pass

Reviewers: chaoren, ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9531

llvm-svn: 236814
2015-05-08 08:57:45 +00:00