Commit Graph

1271 Commits

Author SHA1 Message Date
Tamas Berghammer
6ad63744b3 Initialize ProcessPOSIXLog by NativeProcessLinux
Previously it was initialized by ProcessLinux but lldb-server don't
contain ProcessLinux anymore so it have to be initialized by
NativeProcessLinux also.

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

llvm-svn: 231482
2015-03-06 15:47:23 +00:00
Ilia K
41204d0960 Fix build on OS X after r231202
llvm-svn: 231235
2015-03-04 12:05:24 +00:00
Tamas Berghammer
ac83982906 Set the signals based on the OS in the qHostInfo packet
Setting it from the Target architecture cause problems when the target
archiutecture is filled just by examining the executable because in that
case the OS isn't set.

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

llvm-svn: 231234
2015-03-04 11:34:10 +00:00
Tamas Berghammer
43f2d97191 Fix deadlock in operation thread in NativeProcessLinux
The deadlock occurred when the Attach or the Launch operation failed for
any reason.

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

llvm-svn: 231231
2015-03-04 11:10:03 +00:00
Zachary Turner
633a29cffb Further reduce header footprint of Debugger.h.
llvm-svn: 231202
2015-03-04 01:58:01 +00:00
Zachary Turner
90aff47cb7 Fix errors building on linux.
llvm-svn: 231169
2015-03-03 23:36:51 +00:00
Zachary Turner
a78bd7ffc1 Don't #include FormatManager.h from Debugger.h
Debugger.h is a huge file that gets included everywhere, and
FormatManager.h brings in a ton of unnecessary stuff and doesn't
even use anything from it in the header.

llvm-svn: 231161
2015-03-03 23:11:11 +00:00
Ed Maste
8702e92d0c Fix FreeBSD build after r231145
llvm-svn: 231157
2015-03-03 22:44:18 +00:00
Zachary Turner
93749ab3cf Further reduce the header footprint of Process.h
No functional change here, only deletes unnecessary headers
and moves one function's body from the .h file to the .cpp.

llvm-svn: 231145
2015-03-03 21:51:25 +00:00
Zachary Turner
af0f45f1c9 Don't #include ClangPersistentVariables.h from Process.h
Nothing from this header file was even being referenced in
Process.h anyway, so it was a completely unnecessary include.

llvm-svn: 231131
2015-03-03 21:05:17 +00:00
Zachary Turner
32abc6edac Reduce header footprint of Target.h
This continues the effort to reduce header footprint and improve
build speed by removing clang and other unnecessary headers
from Target.h.  In one case, some headers were included solely
for the purpose of declaring a nested class in Target, which was
not needed by anybody outside the class.  In this case the
definition and implementation of the nested class were isolated
in the .cpp file so the header could be removed.

llvm-svn: 231107
2015-03-03 19:23:09 +00:00
Tamas Berghammer
6806fded8c Make it possible to stop the operation thread in NativeProcessLinux
Previously the operation thread is stopped with a cancel event but
pthread_cancel is not supported on android. This CL creates a custom
operation which asks the operation thread to exit without any pthread
call.

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

llvm-svn: 230945
2015-03-02 11:04:03 +00:00
Chaoren Lin
e56f6dceea Fix attaching to 32 bit inferior with 64 bit llgs.
Summary: Executable module should use inferior architecture instead of host architecture.

Reviewers: ovyalov, vharron, clayborg

Subscribers: lldb-commits

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

llvm-svn: 230887
2015-03-01 04:31:16 +00:00
Chaoren Lin
c934659736 Casting pid to ::pid_t when invoking syscall.
Summary:
syscalls involving pid/tid on 32 bit binaries are failing with
"Invalid argument" because the uint64_t arguments are too wide.

Reviewers: clayborg, ovyalov, sivachandra

Subscribers: lldb-commits

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

llvm-svn: 230817
2015-02-28 00:20:16 +00:00
Ilia K
686b1fe65a Fix FileSpec::GetPath to return null-terminated strings
Summary:
Before this fix the FileSpec::GetPath() returned string which might be without '\0' at the end.
It could have happened if the size of buffer for path was less than actual path.

Test case:
```
FileSpec test("/path/to/file", false);
char buf[]="!!!!!!";
test.GetPath(buf, 3);
```

Before fix:
```
   233          FileSpec test("/path/to/file", false);
   234          char buf[]="!!!!!!";
   235          test.GetPath(buf, 3);
   236
-> 237          if (core_file)
   238          {
   239              if (!core_file.Exists())
   240              {
(lldb) print buf
(char [7]) $0 = "/pa!!!"
```

After fix:
```
   233          FileSpec test("/path/to/file", false);
   234          char buf[]="!!!!!!";
   235          test.GetPath(buf, 3);
   236
-> 237          if (core_file)
   238          {
   239              if (!core_file.Exists())
   240              {
(lldb) print buf
(char [7]) $0 = "/p"
```

Reviewers: zturner, abidh, clayborg

Reviewed By: abidh, clayborg

Subscribers: tberghammer, vharron, lldb-commits, clayborg, zturner, abidh

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

llvm-svn: 230787
2015-02-27 19:43:08 +00:00
Chaoren Lin
f591f69fc3 Can't set watchpoints on launching threads on Linux LLGS.
Summary:
They'll be set anyway when the thread starts running, so the launching threads
should just ignore the set request.

Reviewers: ovyalov

Subscribers: lldb-commits

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

llvm-svn: 230671
2015-02-26 19:48:15 +00:00
Tamas Berghammer
2d52afd71c Increase default packet timeout for android to 20s
Differential revision: http://reviews.llvm.org/D7853

llvm-svn: 230626
2015-02-26 11:37:21 +00:00
Oleksiy Vyalov
6801be3354 Add qModuleInfo request in order to get module information (uuid, triple,..) by module path from remote platform.
http://reviews.llvm.org/D7709

llvm-svn: 230556
2015-02-25 22:15:44 +00:00
Zachary Turner
49be160531 Revert "Fix warnings found with clang-cl."
SWIG doesn't like enum : unsigned.  Revert this until I can
fix this in a way that swig likes.

llvm-svn: 230531
2015-02-25 19:52:41 +00:00
Zachary Turner
00998f0beb Solve hang on Windows when lldb fails to launch the process.
The DebuggerThread was detecting the launch error, but it was
ignored by ProcessWindows::DoLaunch, causing LLDB to wait forever
in the debugger loop.

This fixes the test case that explicitly attempts to launch a
process from a non-existant path.

Patch by Adrian McCarthy
Differential Revision: http://reviews.llvm.org/D7874

llvm-svn: 230523
2015-02-25 18:56:47 +00:00
Zachary Turner
171d943ac5 Fix warnings found with clang-cl.
Earlier this week I was able to get clang-cl on Windows to be
able to self host.  This opened the door to being able to
get a whole new slew of warnings for the Windows build.

This patch fixes all of the warnings, many of which were real
bugs.

llvm-svn: 230522
2015-02-25 18:42:47 +00:00
Tamas Berghammer
14f4476a88 Truncate target file for stdout and stderr
Add O_TRUNC when opening file for redirecting stdout and stderr of the
process. It is neccessary because if the file exists then on some
platform the original content is kept while it isn't overwritten by the
new data causing pollution of the saved stdout and stderr.

llvm-svn: 230492
2015-02-25 13:21:45 +00:00
Oleksiy Vyalov
946e39a8d1 Fix logging in GDBRemoteCommunicationServerPlatform.
llvm-svn: 230418
2015-02-25 01:11:38 +00:00
Oleksiy Vyalov
c282ebd724 Fix qLaunchGDBServer packet parsing in GDBRemoteCommunicationServerPlatform.
llvm-svn: 230390
2015-02-24 22:23:39 +00:00
Tamas Berghammer
912800c400 Create ScopedTimeout class for GDBRemoteCommunication
This new class makes it easier to change the timeout of a
GDBRemoteCommunication instance for a short time and then restore it to
its original value.

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

llvm-svn: 230319
2015-02-24 10:23:39 +00:00
Ed Maste
aec140380f elf-core: correct "no sections" to "no segments."
The error reported here is that there are no phdr entries, so it's
referring to segments, not sections.

llvm-svn: 230227
2015-02-23 15:28:42 +00:00
Tamas Berghammer
0f86b74304 Fix the communication in qPlatform_[mkdir,chmod]
With the previous implementation the protocol used by the client and the
server for the response was different and worked only by an accident.
With this change the communication is fixed and the return code from
mkdir and chmod correctly captured by lldb. The change also add
documentation for the qPlatform__[mkdir,chmod] packages.

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

llvm-svn: 230213
2015-02-23 11:03:08 +00:00
Pavel Labath
dbb41cf418 Support evaluation of DWARF expressions setting CFA
Summary:
This patch enables evaluation of DWARF expressions setting the CFA during stack unwinding.

This makes TestSigtrampUnwind "almost" pass on linux. I am not enabling the test yet since the
symbol name for the signal trampoline does not get resolved properly due to a different bug, but
apart from that, the backtrace is sane.

I am unsure how this change affects Mac. I think it makes the unwinder prefer the DWARF unwind
plan instead of some custom platform-dependant plan. However, it does not affect the end result
- the stack unwinding works as expected.

Reviewers: jasonmolenda

Subscribers: lldb-commits

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

llvm-svn: 230211
2015-02-23 10:29:01 +00:00
Pavel Labath
ab970f5e08 UnwindPlan::Row refactor -- add support for CFA set by a DWARF expression
Summary:
This change refactors UnwindPlan::Row to be able to store the fact that the CFA is value is set
by evaluating a dwarf expression (DW_CFA_def_cfa_expression). This is achieved by creating a new
class CFAValue and moving all CFA setting/getting code there. Note that code using the new
CFAValue::isDWARFExpression is not yet present and will be added in a follow-up patch. Therefore,
this patch should not change the functionality in any way.

Test Plan: Ran tests on Mac and Linux. No regressions detected.

Reviewers: jasonmolenda, clayborg

Subscribers: lldb-commits

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

llvm-svn: 230210
2015-02-23 10:19:16 +00:00
Oleksiy Vyalov
8bc34f4d96 Prevent LLGS from crashing when exiting - make NativeProcessLinux to wait until ThreadStateCoordinator is fully stopped before entering ~NativeProcessLinux.
http://reviews.llvm.org/D7692

llvm-svn: 229875
2015-02-19 17:58:04 +00:00
Zachary Turner
568b0de170 Fix warning that not all control-paths return from function.
llvm-svn: 229718
2015-02-18 18:44:03 +00:00
Zachary Turner
39cc7d4437 Don't use AVX/XSTATE API on Windows.
CopyContext is necessary to safely get the XState, but LLDB doesn't currently
use the XState. CopyContext is available as of Windows 7 SP1, so it can't be
used on Vista.  Furthermore, it requires the Windows 8 SDK it compile,
making the baseline for compiling and running LLDB higher than necessary.

Patch by: Adrian McCarthy
Reviewed by: Zachary Turner
Differential Revision: http://reviews.llvm.org/D7572

llvm-svn: 229710
2015-02-18 18:04:50 +00:00
Tamas Berghammer
c2c3d7185d Merge lldb-platform and lldb-gdbserver into a single binary
This commit merges lldb-platform and lldb-gdbserver into a single binary
of the same size as each of the previous individual binaries. Execution
mode is controlled by the first argument being either platform or
gdbserver.

Patch from: flackr <flackr@google.com>

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

llvm-svn: 229683
2015-02-18 15:39:41 +00:00
Tamas Berghammer
81e9239e07 Remove alias template from GDBRemoteCommunicationServerCommon
It is required because MSVC 2013 doesn't generate correct code for
template aliases.

llvm-svn: 229666
2015-02-18 11:37:46 +00:00
Chaoren Lin
caf3114245 Send default register number instead of GDB register number in StopReplyPacket.
Summary:
Using GDB register numbers confuses ProcessGDBRemote since the rest of
LLGS (qRegisterInfo, p, P) uses the default register numbers instead.

Test Plan: dosep.py --options --arch x86 ...

Reviewers: ovyalov, vharron, sivachandra

Subscribers: lldb-commits

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

llvm-svn: 229505
2015-02-17 15:41:28 +00:00
Chaoren Lin
6a504f6ea8 Watchpoint debug registers should work in i386 as well.
llvm-svn: 229504
2015-02-17 15:41:26 +00:00
Chaoren Lin
e0c6ab5947 Fix small assignment mistake.
llvm-svn: 229503
2015-02-17 15:41:23 +00:00
Tamas Berghammer
1c6a1ea9b2 Enable process launching on android from lldb-gdbserver
Currently it is uses the same code used on linux. Will be replaced with
android specific code if needed.

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

llvm-svn: 229371
2015-02-16 10:34:30 +00:00
Vince Harron
4a8abd3f94 Fix TestProcessIO.py when run against a remote target
Fixed test case to copy redirected stdout/stderr files from remote
target to host

llgs wasn't bothering to put the pty master file handle in the right
place if stdout/stderr were redirected to a file. It is still needed
for stdin.

Corrected some log message text

llvm-svn: 229141
2015-02-13 19:15:24 +00:00
Chandler Carruth
40927d0dcd Fix four missing 'override' specifiers found with the Clang
'-Winconsistent-missing-override' warning. I suggest folks use this to
ensure that override is consistently used to mark virtual function
overrides.

llvm-svn: 229084
2015-02-13 08:07:00 +00:00
Jason Molenda
92ee75c0b2 Search through all memory regions of the core file for
both a user process dyld and for a kernel binary -- we
will decide which to prefer after one or both have been
located.

It would be faster to stop the search thorugh the core
segments one we've found a dyld/kernel binary - but that
may trick us into missing the one we would prefer.

<rdar://problem/19806413> 

llvm-svn: 228910
2015-02-12 06:14:23 +00:00
Justin Hibbits
6cfc85a067 Quiet Coverity
Summary: Coverity warns that unsigned >= 0 is always true, and k_first_gpr_powerpc happens to be 0.  Quiet Coverity by changing that comparison instead to a static_assert(), in case things change in the future.

Reviewers: emaste

Reviewed By: emaste

Subscribers: lldb-commits

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

llvm-svn: 228908
2015-02-12 05:31:31 +00:00
Tamas Berghammer
cb527a7fcd Fix windows build (broken by r228823)
llvm-svn: 228828
2015-02-11 12:52:55 +00:00
Tamas Berghammer
e13c2731ba Separate monolithic GDBRemoteCommunicationServer class into 4 part
GDBRemoteCommunicationServer: Basic packet handling, handler registration
LLDBCommonPacketHandler: Common packet handling for lldb-platform and lldb-gdbserver
LLDBPlatformPacketHandler: lldb-platform specific packet handling
LLGSPacketHandler: lldb-gdbserver specific packet handling

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

llvm-svn: 228823
2015-02-11 10:29:30 +00:00
Vince Harron
df3f00f30a Fix 'process launch -i' for remote processes
We want to forward stdin when stdio is not disabled and when we're not
redirecting stdin from a file.

renamed m_stdio_disable to m_stdin_forward and inverted value because
that's what we want to remember.

There was previously a bug that if you redirected stdin from a file,
stdout and stderr would also be redirected to /dev/null

Adds support for remote target to TestProcessIO.py

Fixes ProcessIOTestCase.test_stdin_redirection_with_dwarf for remote
Linux targets

llvm-svn: 228744
2015-02-10 21:09:04 +00:00
Chaoren Lin
03d30fc7bc Adding x86 to supported architectures on x86_64.
llvm-svn: 228715
2015-02-10 18:30:31 +00:00
Justin Hibbits
5c0b98e205 Fix off-by-one IsGPR().
f0 was being counted as a GPR, due to the check in IsGPR().  Correct it by
looking at the precise GPR range.

llvm-svn: 228547
2015-02-08 21:23:23 +00:00
Oleksiy Vyalov
8379068941 Make lldb-platform to clear m_process_launch_info when hanlding qProcessInfo request - otherwise subsequent process launches will reuse data from previous launch.
llvm-svn: 228430
2015-02-06 19:56:33 +00:00
Vince Harron
e0be425a53 Add support for SBProcess::PutSTDIN to remote processes
Processes running on a remote target can already send $O messages
to send stdout but there is no way to send stdin to a remote
inferior.

This allows processes using the API to pump stdin into a remote
inferior process.

It fixes a hang in TestProcessIO.py when running against a remote
target.

llvm-svn: 228419
2015-02-06 18:32:57 +00:00
Pavel Labath
3a2da9eb0d Fix TestProcesslaunch regression caused by D7372
Summary:
After closing all the leaked file descriptors to the inferior tty, the following problem occured:
- when stdin, stdout and stderr are redirected, there are no slave descriptors open (which is good)
- lldb has a reader thread, which attempts to read from the master end of the tty
- this thread receives an EOF
- in response, it closes it's master end
- as this is the last open file descriptor for the master end, this deletes the tty and sends
  SIGHUP to the inferior (this is bad)

I fix this problem by making sure the master end remains open for the duration of the inferior
process by storing a copy of the file descriptor in ProcessMonitor. I create a copy to avoid
ownership issues with the reading thread.

Reviewers: ovyalov, emaste

Subscribers: lldb-commits

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

llvm-svn: 228391
2015-02-06 11:32:52 +00:00