| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 187995
|
| |
|
|
|
|
|
|
|
|
|
| |
always now.
Created new LinuxThread class inherited from POSIXThread and removed linux / freebsd ifdefs
Removed several un-needed set thread name calls
CR (and multiple suggestions): mkopec
llvm-svn: 187545
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Instantiate RegisterContext... based on getOS() instead of with
compile-time #ifdef-ery.
The assert() here is unfortunate, but better than crashing with no
explanation.
This change is equivalent to r186865 for elf-core.
llvm-svn: 187422
|
| |
|
|
|
|
| |
- should resolve (at least some) of the spurious crashes we are seeing in multithreaded tests on Linux (and likely FreeBSD)
llvm-svn: 187081
|
| |
|
|
| |
llvm-svn: 186822
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
TODO: Support for RegisterContext_x86_64::ReadFPR.
Patch by Samuel Jacob!
llvm-svn: 186207
|
| |
|
|
|
|
|
|
|
| |
BreakpointSite
to avoid asserts when stepping in a multi-threaded application.
Note: Test to follow shortly.
llvm-svn: 186190
|
| |
|
|
| |
llvm-svn: 186039
|
| |
|
|
| |
llvm-svn: 186033
|
| |
|
|
| |
llvm-svn: 185981
|
| |
|
|
| |
llvm-svn: 185946
|
| |
|
|
|
|
|
|
| |
multi-threaded programs.
Also fix a related issue where if a thread exits after a thread continue, lldb would hang.
llvm-svn: 185944
|
| |
|
|
| |
llvm-svn: 185661
|
| |
|
|
| |
llvm-svn: 185549
|
| |
|
|
| |
llvm-svn: 185366
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 185010
|
| |
|
|
| |
llvm-svn: 184850
|
| |
|
|
|
|
|
| |
Revision r147613 (2341d35) renamed this file with s/Linux/POSIX/, but
header guards and comments were not updated to match.
llvm-svn: 184741
|
| |
|
|
|
|
| |
to avoid compiler warnings.
llvm-svn: 184738
|
| |
|
|
| |
llvm-svn: 184342
|
| |
|
|
|
|
| |
llvm_unreachable.
llvm-svn: 184334
|
| |
|
|
|
|
| |
Also, ensure x86_64 watchpoint registers are initialized before they are accessed on the POSIX side.
llvm-svn: 184246
|
| |
|
|
|
|
| |
Patch from Ed Maste.
llvm-svn: 184241
|
| |
|
|
| |
llvm-svn: 183701
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 183139
|
| |
|
|
|
|
| |
Thanks to Daniel and valgrind.
llvm-svn: 183110
|
| |
|
|
|
|
| |
All running threads will be detected and stopped on attach and all threads get resumed on detach.
llvm-svn: 183049
|
| |
|
|
|
|
| |
Also adding multithreaded test cases.
llvm-svn: 182809
|
| |
|
|
|
|
|
|
|
| |
are derived registers.
- Also refactors TestRegisters.py because test_convenience_registers_with_process_attach now fails with an assert.
TODO: Cross-reference the skipOnLinux decorator with a bugzilla report after root-causing this issue.
llvm-svn: 181737
|
| |
|
|
|
|
|
| |
- Also improved test coverage for passing tests to include expr/x
and a sanity check for $eax as the lower half of $rax.
llvm-svn: 181727
|
| |
|
|
|
|
| |
Hopefully fixes the build of lldb
llvm-svn: 181694
|
| |
|
|
|
|
|
|
|
|
| |
- Eliminated the use of static for methods that read m_register_infos, so that these routines can be implemented in the base class.
- Eliminated m_register_infos in the base class because this is not used when derived classes call UpdateRegisterInfo.
- Also moved the namespace using declarations from headers to source files.
Thanks to Daniel and Samuel for their review feedback.
llvm-svn: 181538
|
| |
|
|
|
|
| |
Patch by Yao Qi.
llvm-svn: 181511
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
namespace lldb_private {
class Thread
{
virtual lldb::StopInfoSP
GetPrivateStopReason() = 0;
};
}
To not be virtual. The lldb_private::Thread now handles the correct caching and will call a new pure virtual function:
namespace lldb_private {
class Thread
{
virtual bool
CalculateStopInfo() = 0;
}
}
This function must be overridden by thead lldb_private::Thread subclass and the only thing it needs to do is to set the Thread::StopInfo() with the current stop reason and return true, or return false if there is no stop reason. The lldb_private::Thread class will take care of calling this function only when it is required. This allows lldb_private::Thread subclasses to be a bit simpler and not all need to duplicate the cache and invalidation settings.
Also renamed:
lldb::StopInfoSP
lldb_private::Thread::GetPrivateStopReason();
To:
lldb::StopInfoSP
lldb_private::Thread::GetPrivateStopInfo();
Also cleaned up a case where the ThreadPlanStepOverBreakpoint might not re-set its breakpoint if the thread disappears (which was happening due to a bug when using the OperatingSystem plug-ins with memory threads and real threads).
llvm-svn: 181501
|
| |
|
|
|
|
| |
Also mark one of the tests as expected fail on Linux due to the debian fix.
llvm-svn: 181448
|
| |
|
|
| |
llvm-svn: 181447
|
| |
|
|
| |
llvm-svn: 181374
|
| |
|
|
| |
llvm-svn: 181341
|
| |
|
|
| |
llvm-svn: 181340
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Decouples RegisterContext_x86_64 from UserArea.
- Restores the original definition of UserArea so that it can be used to generate offsets for use with ptrace.
- Moves UserArea to the 64-bit Linux specialization.
- Also fixes an off-by-one error for the size of m_gpr.
- Also adds a TODO comment noting the need for a mechanism to identify the correct plugin based on the target OS (and architecture).
Reviewed by: Matt Kopec and Samuel Jacob
llvm-svn: 181055
|
| |
|
|
| |
llvm-svn: 180920
|
| |
|
|
|
|
| |
compute.
llvm-svn: 180898
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/13723772>
Modified the lldb_private::Thread to work much better with the OperatingSystem plug-ins. Operating system plug-ins can now return have a "core" key/value pair in each thread dictionary for the OperatingSystemPython plug-ins which allows the core threads to be contained with memory threads. It also allows these memory threads to be stepped, resumed, and controlled just as if they were the actual backing threads themselves.
A few things are introduced:
- lldb_private::Thread now has a GetProtocolID() method which returns the thread protocol ID for a given thread. The protocol ID (Thread::GetProtocolID()) is usually the same as the thread id (Thread::GetID()), but it can differ when a memory thread has its own id, but is backed by an actual API thread.
- Cleaned up the Thread::WillResume() code to do the mandatory parts in Thread::ShouldResume(), and let the thread subclasses override the Thread::WillResume() which is now just a notification.
- Cleaned up ClearStackFrames() implementations so that fewer thread subclasses needed to override them
- Changed the POSIXThread class a bit since it overrode Thread::WillResume(). It is doing the wrong thing by calling "Thread::SetResumeState()" on its own, this shouldn't be done by thread subclasses, but the current code might rely on it so I left it in with a TODO comment with an explanation.
llvm-svn: 180886
|
| |
|
|
|
|
|
|
| |
- Required for platform-independant handling of general purpose registers (i.e. for core dumps).
Thanks to Samuel Jacob for this patch.
llvm-svn: 180878
|
| |
|
|
| |
llvm-svn: 180868
|
| |
|
|
|
|
|
|
|
|
| |
process plugin (or in the
case of ProcessGDBRemote the stub we are talking to) know how to do that.
rdar://problem/13680832
llvm-svn: 180831
|