Commit Graph

726 Commits

Author SHA1 Message Date
Jason Molenda
e6ca2ee6b8 Don't use a function-scope static varaibles in
RegisterContextLLDB::SavedLocationForRegister to cache the pc and
sp register numbers -- if lldb is debugging multiple Targets of
different architectures, this will be incorrect.  If these were
to be cached anywhere, it would have to be up in the Target.

llvm-svn: 186651
2013-07-19 04:39:22 +00:00
Ed Maste
35f091dd17 elf-core: handle core with a single NT_PRPSINFO (not one per thread)
On FreeBSD we have only one NT_PRPSINFO in a core file, regardless of the
number of threads.  Consider a new thread to start whenever we see another
instance of either NT_PRPSINFO or NT_PRSTATUS.

Thanks to Samuel Jacob for testing this patch on Linux cores.

llvm-svn: 186633
2013-07-19 00:25:02 +00:00
Ashok Thirumurthi
044c36a21c Fix the partial backtrace when using a combination of stripped function symbols
and -fomit-frame-pointer.

- Parses eh_frame FDEs to determine the function address and size so that
the call frame parsing can continue.

Note: This code path is specific to ELF and PECOFF, because ObjectFileMachO
uses LCT_FunctionStarts to efficiently populate the symbol table.

Thanks to Jason Molenda for the review!

llvm-svn: 186585
2013-07-18 15:05:56 +00:00
Ed Maste
deb0506790 elf-core: Support FreeBSD at compile-time
Compile-time #ifdef-ery isn't right, but this makes core debugging work on
FreeBSD and highlights the parts that will need to be changed for runtime
arch support.

llvm-svn: 186534
2013-07-17 20:13:39 +00:00
Ashok Thirumurthi
4f01ff8bfe Re-introduces ELF core file support for Linux x86-64
Usage: 'lldb a.out -c core'.
  TODO: FreeBSD support.
  TODO: Support for AVX registers.
  TODO: Refactor so that RegisterContextCore* don't inherit from classes that use ProcessMonitor
  to fix the build on OS/X.

llvm-svn: 186516
2013-07-17 16:06:12 +00:00
Ed Maste
a56115f785 Correct comment to match class name
llvm-svn: 186509
2013-07-17 14:30:26 +00:00
Ed Maste
819e39901f FreeBSD: Replace GetSignalInfo with GetLwpInfo
For thread support we are going to need other members of struct
ptrace_lwpinfo.

llvm-svn: 186505
2013-07-17 14:02:20 +00:00
Greg Clayton
7f98240df6 <rdar://problem/13793059>
Added a setting to control timeout for kdp response packets. While I was at it, I also added a way to control the response timeout for gdb-remote packets.

KDP defaults to 5 seconds, and GDB defaults to 1 second. These were the default values that were in the code prior to adding these settings.

(lldb) settings set plugin.process.gdb-remote.packet-timeout 10
(lldb) settings set plugin.process.kdp-remote.packet-timeout 10

llvm-svn: 186360
2013-07-15 22:54:20 +00:00
Greg Clayton
3deb0e7ca5 Revert the ELF core file support until a few things can be worked out:
RegisterContextCoreLinux_x86_64 inherits from RegisterContextLinux_x86_64 which inherits from RegisterContext_x86_64 which uses has:

   ProcessMonitor &GetMonitor();

This register context used by the core file can't use this since the process plug-in will be ProcessElfCore and the implementation of GetMonitor() does:

ProcessMonitor &
RegisterContext_x86_64::GetMonitor()
{
   ProcessSP base = CalculateProcess();
   ProcessPOSIX *process = static_cast<ProcessPOSIX*>(base.get());
   return process->GetMonitor();
}

ProcessELFCore doesn't, nor should it inherit from ProcessPOSIX and any call to GetMonitor() will fail for ELF core files.

Suggested cleanups:
- Make a register context class that is a base class that doesn't have any reading smarts, then make one that uses ProcessPOSIX and the has the GetMonitor() call, and one that gets its data straight from the core file. 

llvm-svn: 186223
2013-07-12 22:52:22 +00:00
Ashok Thirumurthi
c037383aff Introduces core file support for Linux x86-64 using 'lldb a.out -c core'.
TODO: Support for RegisterContext_x86_64::ReadFPR.

Patch by Samuel Jacob!

llvm-svn: 186207
2013-07-12 21:25:02 +00:00
Ashok Thirumurthi
e5cae05f49 Handle BreakNotify for threads whose tid doesn't match the ThreadSpec of the BreakpointSite
to avoid asserts when stepping in a multi-threaded application.

Note: Test to follow shortly.
llvm-svn: 186190
2013-07-12 19:19:15 +00:00
Greg Clayton
57ee306789 Huge change to clean up types.
A long time ago we start with clang types that were created by the symbol files and there were many functions in lldb_private::ClangASTContext that helped. Later we create ClangASTType which contains a clang::ASTContext and an opauque QualType, but we didn't switch over to fully using it. There were a lot of places where we would pass around a raw clang_type_t and also pass along a clang::ASTContext separately. This left room for error.

This checkin change all type code over to use ClangASTType everywhere and I cleaned up the interfaces quite a bit. Any code that was in ClangASTContext that was type related, was moved over into ClangASTType. All code that used these types was switched over to use all of the new goodness.

llvm-svn: 186130
2013-07-11 22:46:58 +00:00
Matt Kopec
4a32bf58d1 Fix unhandled SIGTRAP signal on Linux causing assertion.
llvm-svn: 186112
2013-07-11 20:01:22 +00:00
Andrew Kaylor
bc68b431ba Stop process monitor from ProcessPOSIX::Finalize
llvm-svn: 186039
2013-07-10 21:57:27 +00:00
Matt Kopec
fb6ab54000 Add support for listing inferior thread names on Linux.
llvm-svn: 186033
2013-07-10 20:53:11 +00:00
Greg Clayton
a063c810a0 Fixed an issue introduced with my last fix where the command and sequence ID extraction were moved causing them to be reversed.
llvm-svn: 186020
2013-07-10 17:58:19 +00:00
Greg Clayton
7ad05d136a Fixed the CommunicationKDP::SendRequestAndGetReply() to correctly be able to deal with getting a reply from a previous packet without resending the packet again.
llvm-svn: 185988
2013-07-10 01:05:05 +00:00
Andrew Kaylor
6578cb6478 Reverting ProcessMonitor shared pointer changes
llvm-svn: 185981
2013-07-09 22:36:48 +00:00
Andrew Kaylor
214f3a8a78 Use shared pointers to hold the process in ProcessMonitor
llvm-svn: 185946
2013-07-09 16:44:27 +00:00
Matt Kopec
b29104467f Fix signal handling for POSIX (only tested on Linux) processes in multi-threaded programs.
Also fix a related issue where if a thread exits after a thread continue, lldb would hang.

llvm-svn: 185944
2013-07-09 15:09:45 +00:00
Ed Maste
6f066412ac Pass tid through to ptrace operations
This change is equivalent to the Linux threading support.

llvm-svn: 185671
2013-07-04 21:47:32 +00:00
Ed Maste
be0b55d121 Avoid crash if we fail to resolve process in attach
llvm-svn: 185661
2013-07-04 18:25:34 +00:00
Ed Maste
4331ac7bd3 Remove empty files left behind from move to POSIX/
llvm-svn: 185559
2013-07-03 17:41:40 +00:00
Ed Maste
1875776e68 Update error message; detach-keeps-stopped is also not on FreeBSD
llvm-svn: 185549
2013-07-03 16:26:34 +00:00
Ed Maste
a02f553e50 Sync parts of FreeBSD Process plugin with Linux
* Use PseudoTerminal to fix stdio handling / passthrough to the inferior
  process.
* Add log messages equivalent to the Linux ones.
* Port changes relating to process creation / termination.

This revision contains changes equivalent to (parts of) SVN revisions
109318 142384 166055 168503 169645 177116 182809.

llvm-svn: 185442
2013-07-02 16:45:16 +00:00
Jason Molenda
54d04f3bec Change the default timeout for KDP communications to be 5 seconds.
<rdar://problem/13793059> 

llvm-svn: 185400
2013-07-02 01:29:59 +00:00
Michael Sartain
a7499c9830 Split symbol support for ELF and Linux.
llvm-svn: 185366
2013-07-01 19:45:50 +00:00
Sylvestre Ledru
594058394e Following the modification introduced in llvm by commit 185311
The build system is currently miss-identifying GNU/kFreeBSD as FreeBSD.
This kind of simplification is sometimes useful, but in general it's not correct. 

As GNU/kFreeBSD is an hybrid system, for kernel-related issues we want to match the
build definitions used for FreeBSD, whereas for userland-related issues we want to
match the definitions used for other systems with Glibc.

The current modification adjusts the build system so that they can be distinguished,
and explicitly adds GNU/kFreeBSD to the build checks in which it belongs.

Fixes bug #16446.

Patch by Robert Millan in the context of Debian.

llvm-svn: 185313
2013-07-01 08:21:36 +00:00
Matt Kopec
eb7f2315f4 Remove unneeded limbo state flag.
llvm-svn: 185010
2013-06-26 18:46:08 +00:00
Ed Maste
a708a36cea Match printf format specifiers and arguments
llvm-svn: 184854
2013-06-25 14:47:45 +00:00
Ed Maste
d66d3ec036 Update comment after Linux->POSIX rename
llvm-svn: 184850
2013-06-25 14:29:15 +00:00
Han Ming Ong
91ed6b878f <rdar://problem/14182286>
Made sure that temporary object created from HarmonizeThreadIdsForProfileData() doesn’t get passed around without creating an object first.

Reviewed by Greg

llvm-svn: 184769
2013-06-24 18:15:05 +00:00
Ed Maste
5d34af358a Sync FreeBSD files to Linux equivalents, to reduce noise in diff
- Sort functions in the same order
- Match whitespace
- Remove commetned out code
- Make filename in comments match filename

llvm-svn: 184746
2013-06-24 15:09:18 +00:00
Ed Maste
428a6784b7 Update comment to match class name
llvm-svn: 184745
2013-06-24 15:04:47 +00:00
Ed Maste
5a9a6260c6 Eliminate missing virtual destructor warning on FreeBSD
Akin to r181712 (88e529b7) of Linux/ProcessMonitor.cpp

llvm-svn: 184742
2013-06-24 14:55:03 +00:00
Ed Maste
69b76d5d65 Update for Linux->POSIX rename
Revision r147613 (2341d35) renamed this file with s/Linux/POSIX/, but
header guards and comments were not updated to match.

llvm-svn: 184741
2013-06-24 14:51:39 +00:00
Andy Gibbs
4e279ae0c8 Using offsetof to an item within an array is an extension so mark it as such to avoid compiler warnings.
llvm-svn: 184738
2013-06-24 14:05:59 +00:00
Jim Ingham
dee1bc98f9 Add some useful logging for tracking thread matching problems.
llvm-svn: 184619
2013-06-22 00:27:45 +00:00
Han Ming Ong
399289e931 <rdar://problem/13980489>
I added scan type to ‘qGetProfileData’ previously but forgot to update the check to be a substring search.

llvm-svn: 184588
2013-06-21 19:56:59 +00:00
Andy Gibbs
897f50c5ba Use LLDB_INVALID_REGNUM at Mike Sartain's suggestion
llvm-svn: 184342
2013-06-19 20:04:56 +00:00
Andy Gibbs
44f4db784b Fix two 'variable is used uninitialised' warnings. Change assert to llvm_unreachable.
llvm-svn: 184334
2013-06-19 19:05:52 +00:00
Andy Gibbs
a297a97e09 Sort out a number of mismatched integer types in order to cut down the number of compiler warnings.
llvm-svn: 184333
2013-06-19 19:04:53 +00:00
Matt Kopec
246a89562c Add assertion for when no watchpoint found in POSIX watchnotify handler.
Also, ensure x86_64 watchpoint registers are initialized before they are accessed on the POSIX side.

llvm-svn: 184246
2013-06-18 21:58:02 +00:00
Matt Kopec
362f503519 Temporarily disable checking of watchpoint hit on FreeBSD on trace message.
Patch from Ed Maste.

llvm-svn: 184241
2013-06-18 21:35:32 +00:00
Matt Kopec
b96a126b5b Add output of fault address on an address related crash (ie. segfault).
llvm-svn: 183701
2013-06-10 22:14:47 +00:00
Jim Ingham
4e5c821087 Don't retry the Connect when starting up debugserver if the reason for the previous failure was
EINTR.  That means the user was trying to interrupt us, and we should just stop instead.

<rdar://problem/13184758>

llvm-svn: 183577
2013-06-07 22:09:53 +00:00
Ashok Thirumurthi
a3dd4899e8 Use std::vector for the array of RegisterInfo structs that describe the register context.
- Ensures that this container is populated once for the lifetime of lldb
--- In particular, static methods can query this data even after the first RegisterContext has been destroyed.
- Uses a singleton function to avoid global constructors.

Thanks to Greg Clayton for the suggestion!

llvm-svn: 183313
2013-06-05 14:12:43 +00:00
Jason Molenda
23399d765c Change UnwindLLDB::SearchForSavedLocationForRegister so that it will allow for
the link register save location being in the link register - in which case we
should iterate down the stack, not recursively try to find the lr in the current
frame over and over.

<rdar://problem/13932954>

llvm-svn: 183282
2013-06-05 00:12:50 +00:00
Greg Clayton
76ea03ea7b Add a more clear explanation of what is missing for core files with no LC_THREAD load commands.
llvm-svn: 183253
2013-06-04 21:48:36 +00:00
Greg Clayton
9645e82ce2 Make sure a core file has thread contexts before we try and load it.
llvm-svn: 183252
2013-06-04 21:34:37 +00:00