forked from OSchip/llvm-project
1516 lines
69 KiB
Plaintext
1516 lines
69 KiB
Plaintext
2010-01-29 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.cpp (MachProcess::PrepareForAttach): No longer use the
|
|
SBSLaunchApplication macro from the SpringBoard.framework, use the actual
|
|
function name SBSLaunchApplicationForDebugging.
|
|
(MachProcess::CleanupAfterAttach): Ditto.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Ditto.
|
|
(debugserver-entitlements.plist): Added the "seatbelt-profiles" entitlement
|
|
so debugserver can be sandboxed.
|
|
|
|
2009-07-06 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachTask.cpp (MachTask::GetDYLDAllImageInfosAddress): Hack around bad
|
|
kernel code that renamed the first member of the TASK_DYLD_INFO without
|
|
any way to detect it has changed.
|
|
|
|
2009-06-29 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (GetAllInfosMatchingName): Correctly truncate process name string
|
|
to MAXCOMLEN when searching kinfo_proc structs for process matches by name.
|
|
* MachProcess.cpp (MachProcess::PrepareForAttach): Added logging when
|
|
attaching to a program by name.
|
|
|
|
2009-06-25 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (DNBProcessLaunch): Added a stat on the incoming path that we are
|
|
about to launch to make sure the file exists. If the file doesn't, then an
|
|
appropriate error string is returned. Also if we fail to get the task for
|
|
our process ID, we return an error string right away instead of letting the
|
|
debug session go for a little bit and then later failing after a few more
|
|
packets.
|
|
|
|
2009-04-07 Jim Ingham <jingham@apple.com>
|
|
|
|
* RNBRemote.h: Add vAttachWait
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): Add vattachwait.
|
|
(RNBRemoteShouldCancelCallback): New function.
|
|
(RNBRemote::HandlePacket_v): Handle vattachwait.
|
|
* RNBSocket.cpp (RNBSocket::Read): Mark the connection as closed when the
|
|
port goes away.
|
|
* DNB.cpp (DNBProcessAttachByName): New function.
|
|
(DNBProcessAttach): Make this handle catching the attach when done and
|
|
dealing with timeout & return conditions.
|
|
(GetAllInfos): New function.
|
|
(GetAlInfosMatchingName): New function.
|
|
(DNBProcessAttachWait): New function.
|
|
DNB.h: Declare DNBProcessAttachByName, DNBProcessAttachWait, change
|
|
signature of DNBProcessAttach.
|
|
* MachProcess.cpp (MachProcess::PrepareForAttach): New function.
|
|
(MachProcess::CheckForProcess): New function.
|
|
(MachProcess::CleanupAfterAttach): New function.
|
|
(CopyBundleIDForPath): New function.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Convert to using
|
|
CopyBundleIDForPath.
|
|
* MachProcess.h: Declare PrepareForAttach, CleanupAfterAttach and
|
|
CheckForProcess.
|
|
* DNBTimer.h (TimeOfDayLaterThan): New function.
|
|
* test-remotenub.cpp (RNBRunLoopGetStartModeFromRemote): Rename from
|
|
RNBRunLoopGetArgsFromRemote, and handle vattachwait.
|
|
(RNBRunLoopLaunchAttaching): Code was moved from here into DNBProcessAttach.
|
|
(StartListening): New function.
|
|
(GetAllProcessInfos, GetAllProcessInfosMatchingName): Moved to
|
|
DNBProcess.cpp.
|
|
(main): Handle attach waitfor, and make debugserver with only a host and
|
|
port wait on commands from gdb.
|
|
|
|
2009-04-03 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (PacketEnum): Added enum for qShlibInfoAddr.
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable) Added the qShlibInfoAddr
|
|
packet definition to m_packets.
|
|
(RNBRemote::GetPacket): Log when we run into an unimplemented packet.
|
|
(RNBRemote::HandleReceivedPacket): Only log the packet when logging
|
|
LOG_RNB_REMOTE.
|
|
(RNBRemote::HandlePacket_q): Add support for the new qShlibInfoAddr packet.
|
|
* DNB.h (DNBProcessGetSharedLibraryInfoAddress): New prototype.
|
|
* DNB.cpp (DNBProcessGetSharedLibraryInfoAddress): New function.
|
|
* MachTask.h (MachProcess::GetDYLDAllImageInfosAddress): New prototype.
|
|
* MachTask.cpp (MachProcess::GetDYLDAllImageInfosAddress): New function.
|
|
|
|
2009-04-01 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (main): Display the detailed error message if any when
|
|
attaching fails.
|
|
|
|
2009-03-25 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (RNBRunLoopGetArgsFromRemote): Cleaned up logging and
|
|
removed time deltas form the messages.
|
|
(RNBRunLoopLaunchAttaching): Ditto.
|
|
(RNBRunLoopLaunchInferior): Ditto and also use new DNBProcessLaunch that
|
|
takes an error string pointer.
|
|
* RNBContext.h (class RNBContext): Removed the m_timer member.
|
|
* RNBContext.cpp (RNBContext::StartProcessStatusThread): Cleaned up logging
|
|
and removed time deltas form the messages.
|
|
(RNBContext::ThreadFunctionProcessStatus): Ditto.
|
|
* RNBSocket.h (class RNBSocket): Removed unused m_last_errno member and
|
|
accessor functions.
|
|
* RNBSocket.cpp (RNBSocket::Listen): Cleaned up logging and
|
|
removed time deltas form the messages.
|
|
(RNBSocket::ConnectToService): Ditto.
|
|
(RNBSocket::Read): Ditto.
|
|
(RNBSocket::Write): Ditto.
|
|
(RNBSocket::SaveErrno): Removed.
|
|
(RNBSocket::ClosePort): Don't call RNBSocket::SaveErrno().
|
|
* RNBRemote.cpp (RNBRemote::RNBRemote): Cleaned up logging and
|
|
removed time deltas form the messages.
|
|
(RNBRemote::~RNBRemote): Ditto.
|
|
(RNBRemote::SendPacket): Ditto.
|
|
(RNBRemote::GetPacketPayload): Ditto.
|
|
(RNBRemote::GetPacket): Ditto): Ditto.
|
|
(RNBRemote::HandleAsyncPacket): Ditto.
|
|
(RNBRemote::HandleReceivedPacket): Ditto.
|
|
(RNBRemote::CommDataReceived): Ditto.
|
|
* DNB.cpp (DNBProcessLaunch): Changed to take a eror string pointer with
|
|
size for more desciptive error reporting (instead of a uint32_t pointer).
|
|
* DNB.h (DNBProcessLaunch): Ditto.
|
|
* DNBError.cpp (DNBError::AsString): Now returns NULL if there is no error.
|
|
* DNBError.h (DNBError::SetErrorString): New accessor to allow custom error
|
|
strings.
|
|
* arm/DNBArchImpl.cpp (DNBArchMachARM::GetGPRState): Improved logging.
|
|
* MachProcess.cpp (MachProcess::SBForkChildForPTraceDebugging): Improved
|
|
error messages when a file doesn't exist, or when unable to extract the
|
|
CFBundleIdentifier.
|
|
* PThreadEvent.cpp (class PThreadEvent): Commented out all logging calls.
|
|
|
|
2009-03-07 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (GetAllProcessInfosMatchingName): New function that
|
|
returns matching kinfo_proc structs given a process name.
|
|
(main): Enhanced the --attach option to be able to take a PROCNAME or
|
|
a PID. Changed the --waitfor=PROCNAME option to ignore any existing
|
|
processes with PROCNAME so we only catch new process invocations.
|
|
|
|
2009-03-07 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_p): Use the correct get current
|
|
thread function call so we get the correct thread registers.
|
|
|
|
2009-03-03 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (g_isatty): New global that gets set to non-zero if
|
|
STDOUT is a TTY in the beginning of main.
|
|
(RNBLogSTDOUT): New macro that logs to STDOUT if g_isatty is non-zero, else
|
|
it logs to asl.
|
|
(RNBLogSTDERR): New macro that logs to STDERR if g_isatty is non-zero, else
|
|
it logs to asl.
|
|
(RNBRunLoopGetArgsFromRemote): Use new RNBLogSTDOUT/RNBLogSTDERR macros.
|
|
(GetAllProcessInfos): Get all process info structs for everything on the
|
|
system.
|
|
(main): Implemented new --waitfor=NAME option to allow waiting for a process
|
|
to run by polling the system processes. The new --waitfor-interval=N option
|
|
allows fine control over the polling interval where N is the number of mirco
|
|
seconds (usec) to wait between polls (defaults to 1000). The new
|
|
--waitfor-duration=N allows a timeout in seconds to be specified when
|
|
waiting for a process (defaults to infinite).
|
|
|
|
2009-03-02 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBArchImpl.cpp (DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup):
|
|
Take care of a case where no instructions execute in a Thumb IT block and
|
|
the last of which is a branch.
|
|
|
|
2009-02-10 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (PacketEnum): Added 'detach' enumeration.
|
|
(RNBRemote::HandlePacket_D): New member function prototype.
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): Added detach support.
|
|
(RNBRemote::HandlePacket_D): New function for detach support.
|
|
|
|
2009-02-10 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_UNIMPLEMENTED): Log this
|
|
packet with the packet that is unimplemented.
|
|
(RNBRemote::GetPacket): Call RNBRemote::HandlePacket_UNIMPLEMENTED()
|
|
when we don't recognize a packet.
|
|
(RNBRemote::HandleReceivedPacket): Don't reply to packets we don't
|
|
recognize with unimplemented in this function as that should have
|
|
already been done for us in RNBRemote::GetPacket().
|
|
|
|
2009-02-10 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (PacketEnum): Added query_step_packet_supported.
|
|
* RNBRemot.cpp (RNBRemote::CreatePacketTable): Added new
|
|
qStepPacketSupported packet.
|
|
(RNBRemote::HandlePacket_q): Added support for the new
|
|
"qStepPacketSupported" packet.
|
|
(RNBRemote::HandlePacket_G): Some cleanup when reading registers
|
|
to avoid spurious console logging.
|
|
|
|
2009-01-30 Greg Clayton <gclayton@apple.com>
|
|
|
|
* debugserver-entitlements.plist: Changed the entitlement
|
|
"run-invalid-allow" to "run-unsigned-code".
|
|
|
|
2009-01-23 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBArchImpl.cpp (DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup):
|
|
Merged Yusuf's changes to make software single stepping work.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Call new
|
|
DNBResolveExecutablePath function to resolve executable paths.
|
|
* DNB.h (DNBResolveExecutablePath): New function prototype.
|
|
* DNB.cpp (DNBResolveExecutablePath): New function that will resolve
|
|
relative paths and also executable paths for executables that aren't relative
|
|
but yet are in the shell PATH environment variable.
|
|
|
|
2009-01-22 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBArchImpl.h (class DBNArchMachARM): Renamed member variable
|
|
m_chained_hw_single_step_addr to m_hw_single_chained_step_addr. Added
|
|
new member variables: m_sw_single_step_itblock_break_id, m_last_decode_pc,
|
|
and m_sw_single_step_itblock_break_count. Renamed m_thumbStaticData to
|
|
m_last_decode_thumb, and renamed m_decodedInstruction to m_last_decode_arm.
|
|
(DBNArchMachARM::DecodeITBlockInstructions): New prototype.
|
|
(DBNArchMachARM::DecodeInstructionUsingDisassembler): New prototype.
|
|
(DBNArchMachARM::BreakpointHit): New prototype.
|
|
* DNBArchImpl.cpp (DNBArchMachARM::ThreadDidStop): Disable any of the
|
|
many software single step breakpoints if any are set.
|
|
(DNBArchMachARM::StepNotComplete): Changed renamed member accesses.
|
|
(DNBArchMachARM::DecodeITBlockInstructions): New function for software
|
|
single stepping through Thumb IT blocks.
|
|
(DNBArchMachARM::EnableHardwareSingleStep): Cleaned up logging.
|
|
(DNBArchMachARM::ComputeNextPC): Ditto.
|
|
(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): Now
|
|
properly handles Thumb IT software single stepping.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Ditto.
|
|
(DNBArchMachARM::DecodeInstructionUsingDisassembler): New function.
|
|
(DNBArchMachARM::BreakpointHit): New breakpoint callback function.
|
|
|
|
2009-01-21 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.cpp (MachProcess::PrivateResume): Set the process state before
|
|
we actually resume so we are sure to get the events in the correct order.
|
|
|
|
2009-01-16 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): Include only
|
|
registers which are to be expedited in the T packets.
|
|
(RNBRemote::HandlePacket_p): Enable for all targets.
|
|
(struct register_map_entry): Added an expedite member so we know which
|
|
registers need to be sent up to the host with each stop reply packet.
|
|
(register_map): Updated each array members' expedite member with an
|
|
appropriate value.
|
|
|
|
2009-01-16 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_s): Enabled the step command ("s"
|
|
packet) for ARM now that libdebugnub.dylib can do both hardware and software
|
|
single stepping.
|
|
|
|
2009-01-13 Greg Clayton <gclayton@apple.com>
|
|
|
|
*DNBArchImpl.cpp (bit): New function.
|
|
(bits): New function.
|
|
(DNBArchMachARM::ConditionPassed): Use new "bit" function.
|
|
(DNBArchMachARM::ComputeNextPC): Use new "bit" function, remove inline
|
|
assembly for "RSC" instruction so this compiles for armv7 (which defaults
|
|
to thumb)
|
|
(DNBArchMachARM::NumSupportedHardwareBreakpoints): Use new "bits" function.
|
|
(DNBArchMachARM::NumSupportedHardwareWatchpoints): Use new "bits" function.
|
|
|
|
2009-01-12 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBArch.h (DNBArchProtocol::NumSupportedHardwareBreakpoints()): Removed
|
|
the "const" qualifier to allow arches to auto detect how many hardware
|
|
breakpoints they have.
|
|
(DNBArchProtocol::NumSupportedHardwareWatchpoints()): Removed the "const"
|
|
qualifier to allow arches to auto detect how many hardware watchpoints they
|
|
have.
|
|
* DNBArchImpl.h (DNBArchMachARM::NumSupportedHardwareBreakpoints()): Auto
|
|
detect how many BRP pairs are avialable and disable for armv7 for the time
|
|
being (rdar://problem/6372672).
|
|
(DNBArchMachARM::NumSupportedHardwareWatchpoints()): Auto detect how many
|
|
WRP pairs are avialable and disable for armv7 for the time being
|
|
(rdar://problem/6372672).
|
|
|
|
2009-01-09 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (main): Filled in short argument versions for
|
|
--applist (-t) and --lockdown (-k) options.
|
|
* DNBArchImpl.h (DNBArchMachARM::ConditionPassed): New protected
|
|
member function.
|
|
(DNBArchMachARM::ComputeNextPC): New protected member function.
|
|
(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): New
|
|
protected member function.
|
|
(DNBArchMachARM::m_thumbStaticData): New protected member variable.
|
|
(DNBArchMachARM::m_decodedInstruction): New protected member variable.
|
|
* DNBArchImpl.cpp (DNBArchMachARM::ThreadDidStop): Added extra code that
|
|
will log and exit when we are verifying software single stepping (a
|
|
compile time option).
|
|
(DNBArchMachARM::ConditionPassed): New function.
|
|
(DNBArchMachARM::ComputeNextPC): New function.
|
|
(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): New
|
|
function.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Added the guts of the
|
|
software single stepping.
|
|
(DNBArchMachARM::NumSupportedHardwareBreakpoints): Prepared for adding
|
|
auto detection code.
|
|
(DNBArchMachARM::NumSupportedHardwareWatchpoints): Prepared for adding
|
|
auto detection code.
|
|
|
|
2008-12-11 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.h (DNBProcessWaitForEvent): Renamed to DNBProcessWaitForEvents.
|
|
(DNBProcessSetEvents): Removed (deprecated).
|
|
(DNBProcessGetWaitForResetMask): Removed (unused).
|
|
(DNBProcessSetWaitForResetMask): Removed (unused).
|
|
(DNBProcessInterruptEvents): New function prototype.
|
|
* DNB.cpp (DNBProcessWaitForEvent): Renamed to DNBProcessWaitForEvents.
|
|
(DNBProcessSetEvents): Removed (deprecated).
|
|
(DNBProcessGetWaitForResetMask): Removed (unused).
|
|
(DNBProcessSetWaitForResetMask): Removed (unused).
|
|
(DNBProcessInterruptEvents): New function that can be used to
|
|
asynchronously interrupt infinite wait for events calls.
|
|
RNBRemote.cpp (RNBRemote::HandlePacket_v): Call DNBProcessWaitForEvents.
|
|
RNBContext.cpp (RNBContext::ThreadFunctionProcessStatus): Ditto.
|
|
test-remotenub.cpp (RNBRunLoopLaunchInferior): Ditto.
|
|
(RNBRunLoopLaunchAttaching): Ditto.
|
|
|
|
2008-12-11 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (GetProcessMap): Use new PTHREAD_MUTEX_LOCKER macro to ease
|
|
debugging of deadlocks.
|
|
(DNBProcessLaunch): Improved logging.
|
|
(DNBProcessMemoryRead): Call MachProcess::ReadMemory so breakpoint
|
|
opcodes can be removed from memory.
|
|
(DNBProcessMemoryWrite): Call MachProcess::WriteMemory so that we work
|
|
around enabled software breakpoint traps.
|
|
* DNBLog.cpp (GetLogThreadedMutex): New function.
|
|
(_DNBLogThreaded): Use new PTHREAD_MUTEX_LOCKER macro to ease
|
|
debugging of deadlocks.
|
|
(_DNBLogThreadedIf): Ditto.
|
|
* DNBBreakpoint.h (DNBBreakpoint::IntersectsRange): New function.
|
|
* DNBBreakpoint.cpp (DNBBreakpointList::FindIDByAddress): Improved
|
|
logging.
|
|
* MacOSX/MachThread.cpp (MachThread::MachThread): Improved logging.
|
|
(MachThread::~MachThread): Ditto.
|
|
(MachThread::Suspend): Ditto.
|
|
(MachThread::Resume): Ditto.
|
|
(MachThread::RestoreSuspendCount): Ditto.
|
|
(MachThread::GetState): Use new PTHREAD_MUTEX_LOCKER macro to ease
|
|
debugging of deadlocks.
|
|
(MachThread::SetState): Ditto.
|
|
* MacOSX/MachVMMemory.cpp (MachVMMemory::Read): Improved logging.
|
|
(MachVMMemory::Write): Ditto.
|
|
(MachVMMemory::WriteRegion): Ditto.
|
|
* MacOSX/MachProcess.cpp (MachProcess::GetState): Use new
|
|
PTHREAD_MUTEX_LOCKER macro to ease debugging of deadlocks.
|
|
(MachProcess::SetState): Ditto.
|
|
(MachProcess::Clear): Ditto.
|
|
(MachProcess::PrivateResume): Ditto.
|
|
(MachProcess::ReplyToAllExceptions): Ditto.
|
|
(MachProcess::ExceptionMessageReceived): Ditto.
|
|
(MachProcess::AppendSTDOUT): Ditto.
|
|
(MachProcess::GetAvailableSTDOUT): Ditto.
|
|
(MachProcess::ThreadFunctionSTDIO): Renamed from to
|
|
MachProcess::STDIOThread.
|
|
(MachProcess::StartSTDIOThread): Improved logging.
|
|
(MachProcess::CreateBreakpoint): Ditto.
|
|
(MachProcess::CreateWatchpoint): Ditto.
|
|
(MachProcess::DisableAllBreakpoints): Ditto.
|
|
(MachProcess::DisableBreakpoint): Ditto.
|
|
(MachProcess::DisableWatchpoint): Ditto.
|
|
(MachProcess::EnableBreakpoint): Ditto.
|
|
(MachProcess::EnableWatchpoint): Ditto.
|
|
(MachProcess::LaunchForDebug): Ditto.
|
|
(MachProcess::PosixSpawnChildForPTraceDebugging): Ditto.
|
|
(MachProcess::Detach): Reset the running event bit after resuming prior
|
|
to issuing the SIGSTOP to avoid a pause.
|
|
(MachProcess::RemoveTrapsFromBuffer): New function that removes
|
|
breakpoint traps from a memory buffer.
|
|
(MachProcess::ReadMemory): Read memory from the task, then removes any
|
|
breakpoint traps prior to returning the buffer.
|
|
(MachProcess::WriteMemory): Write memory and any needed data to the
|
|
breakpoint saved opcodes for any software breakpoint traps that are
|
|
enabled.
|
|
* MacOSX/MachProcess.h (MachProcess::ThreadFunctionException): Removed.
|
|
(MachProcess::ThreadFunctionSTDIO): Renamed to MachProcess::STDIOThread().
|
|
(MachProcess::RemoveTrapsFromBuffer): New function.
|
|
* MacOSX/MachVMRegion.cpp (MachVMRegion::SetProtections): Improved
|
|
logging.
|
|
(MachVMRegion::RestoreProtections): Ditto.
|
|
(MachVMRegion::GetRegionForAddress): Ditto.
|
|
* MacOSX/MachException.cpp (catch_mach_exception_raise_state): Improved
|
|
logging.
|
|
(catch_mach_exception_raise_state_identity): Ditto.
|
|
(catch_mach_exception_raise): Ditto.
|
|
(MachException::Message::Dump): Ditto.
|
|
(MachException::Data::GetStopInfo): Ditto.
|
|
(MachException::Message::Receive): Ditto.
|
|
(MachException::Message::Reply): Ditto.
|
|
(MachException::Data::Dump): Ditto.
|
|
(MachException::PortInfo::Save): Ditto.
|
|
(MachException::PortInfo::Restore): Ditto.
|
|
* MacOSX/MachTask.cpp (MachTask::Suspend): Improved logging.
|
|
(MachTask::Resume): Ditto.
|
|
(MachTask::ReadMemory): Ditto.
|
|
(MachTask::WriteMemory): Ditto.
|
|
(MachTask::TaskPortForProcessID): Ditto.
|
|
(MachTask::BasicInfo): Ditto.
|
|
(MachTask::StartExceptionThread): Ditto.
|
|
(MachTask::ShutDownExcecptionThread): Ditto and use pthread_cancel to
|
|
interrupt the exception thread.
|
|
(MachTask::ExceptionThread): Ditto and revert back to infinite timeout
|
|
as pthread_cancel will break us out of infinite mach_msg receive calls.
|
|
* MacOSX/MachThreadList.cpp (MachThreadList::UpdateThreadList): Improved
|
|
logging.
|
|
(MachThreadList::CurrentThread): Use new PTHREAD_MUTEX_LOCKER macro to
|
|
ease debugging of deadlocks.
|
|
* DNBTimer.h (DNBTimer::DNBTimer): Initialize the mutex with a recursive
|
|
pthread.
|
|
(DNBTimer::Reset): Use new PTHREAD_MUTEX_LOCKER macro to ease debugging
|
|
of deadlocks.
|
|
(DNBTimer::TotalMicroSeconds): Ditto.
|
|
(DNBTimer::GetTime): Ditto.
|
|
(DNBTimer::ElapsedMicroSeconds): Ditto.
|
|
(DNBTimer::GetTimeOfDay): New class function.
|
|
* DNBError.cpp (DNBError::LogThreaded): Improved logging.
|
|
* test-dbgnub.cpp
|
|
* PThreadMutex.h: Added the ability to debug deadlocks by defining
|
|
DEBUG_PTHREAD_MUTEX_DEADLOCKS.
|
|
* FunctionProfiler.cpp
|
|
* PThreadEvent.cpp (PThreadEvent::NewEventBit): Use new
|
|
PTHREAD_MUTEX_LOCKER macro to ease debugging of deadlocks.
|
|
(PThreadEvent::FreeEventBits): Ditto.
|
|
(PThreadEvent::GetEventBits): Ditto.
|
|
(PThreadEvent::ReplaceEventBits): Ditto.
|
|
(PThreadEvent::SetEvents): Ditto.
|
|
(PThreadEvent::ResetEvents): Ditto.
|
|
(PThreadEvent::WaitForSetEvents): Ditto.
|
|
(PThreadEvent::WaitForEventsToReset): Ditto.
|
|
|
|
2008-12-05 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBDefs.h (LOG_TASK): New log bit.
|
|
* DNB.cpp (DNBProcessIsAlive): User newly abtracted MachTask class.
|
|
(DNBProcessMemoryRead): Ditto.
|
|
(DNBProcessMemoryWrite): Ditto.
|
|
* DNBArchImpl.cpp (DNBArchMachARM::EnableHardwareSingleStep): Ditto.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints) Ditto.
|
|
* MachException.cpp (MachException::Message::Receive): Cleaned up logging
|
|
so it doesn't always log timeout errors.
|
|
(MachException::Message::Reply): Use abstracted MachTask class for any
|
|
task related queries.
|
|
(MachException::PortInfo::Save): Cleaned up logging.
|
|
(MachException::PortInfo::Restore): Cleaned up logging and now return an
|
|
error instead of the number of restored port infos.
|
|
* MachProcess.cpp (class MachProcess): Abstracted out all of the task_t
|
|
related stuff (suspend, resuyme, exception ports, exception thread, and
|
|
more) into a new class MachTask.
|
|
(MachProcess::Task): Now returns a reference to a MachTask class.
|
|
(MachProcess::Clear): Uses new abstracted MachTask class.
|
|
(MachProcess::Detach): Ditto.
|
|
(MachProcess::PrivateResume): Ditto.
|
|
(MachProcess::DisableBreakpoint): Ditto.
|
|
(MachProcess::ExceptionMessageReceived): Ditto.
|
|
(MachProcess::ExceptionMessageBundleComplete): Ditto.
|
|
(MachProcess::AttachForDebug): Ditto.
|
|
(MachProcess::LaunchForDebug): Ditto.
|
|
(MachProcess::SBLaunchForDebug): Ditto.
|
|
(MachProcess::TaskIsValid): Removed (replaced by similar functionality
|
|
in the new MachTask class).
|
|
(MachProcess::ExceptionPort): Ditto.
|
|
(MachProcess::ExceptionPortIsValid): Ditto.
|
|
(MachProcess::StartExceptionThread): Ditto.
|
|
(MachProcess::Suspend): Ditto.
|
|
(MachProcess::TaskResume): Ditto.
|
|
(MachProcess::TaskBasicInfo): Ditto.
|
|
(MachProcess::TaskBasicInfo): Ditto.
|
|
(MachProcess::ReadMemory): Ditto.
|
|
(MachProcess::WriteMemory): Ditto.
|
|
(MachProcess::ThreadFunctionException): Ditto.
|
|
|
|
2008-12-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.h (DNBProcessSetEvents): New API function prototype.
|
|
* DNB.cpp (DNBProcessSetEvents): New API function.
|
|
(DNBProcessHalt): Send our process a SIGINT instead of suspending
|
|
the task.
|
|
* DNBDefs.h (NUB_STATE_IS_STOPPED): Removed up duplicate entry in macro.
|
|
(eEventPrcoessAsyncInterrupt): New prcoess event bit that allows async
|
|
interrupting of infinite DNBProcessWaitForEvent() function calls.
|
|
* MachException.cpp (MachException::Message::Receive): Improved logging.
|
|
(MachException::Message::Reply): Improved logging.
|
|
* MachProcess.h (MachProcess::TaskBasicInfo): New member and static
|
|
functions.
|
|
* MachProcess.cpp (MachProcess::TaskIsValid): Use new TaskBasicInfo()
|
|
member function.
|
|
(MachProcess::Resume): Removed the detach parameter from the PrivateResume()
|
|
function call.
|
|
(MachProcess::Kill): Added a absolute timeout pointer to allow callers to
|
|
wait for the signal to be received if the timeout is non-NULL.
|
|
(MachProcess::TaskBasicInfo): New member and static function.
|
|
(MachProcess::TaskResume): New function that resumes the task by making sure
|
|
the suspend count is correctly ref counted.
|
|
(MachProcess::Detach): When detaching from a process make sure it is
|
|
stopped (SIGSTOP) first, then we can successfully detach. The exception
|
|
thread now also properly exits.
|
|
(MachProcess::PrivateResume): Call new TaskResume function, and removed the
|
|
detach functionality.
|
|
(MachProcess::DisableBreakpoint): Only notify the thread list that a
|
|
breakpoint has changed if the breakpoint is going to be removed.
|
|
(MachProcess::ThreadFunctionException): Added a permanent 1 second timeout
|
|
for each call to mach_msg() so we can exit the thread in the event that
|
|
we detach from a process/task.
|
|
* test-debugnub (main): Modified to show an example of how to detach using
|
|
a signal_handler to asynchronously receive a SIGINT and properly interrupt
|
|
and detach from a running process.
|
|
|
|
2008-11-26 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBDefs.h (LOG_STEP): New logging define.
|
|
* DNBError.cpp (DNBError::LogThreaded): If there is no error, then
|
|
log with "success: " as a prefix instead of "error: ".
|
|
* arm/DBNArchImpl.cpp (DNBArchMachARM::EnableHardwareSingleStep): Log using
|
|
new LOG_STEP instead of LOG_BREAKPOINTS.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Ditto.
|
|
* MachException.cpp (MachException::Message::Dump): Log excetion header
|
|
and reply header on two separate lines.
|
|
* MachProcess.cpp (IsSBProcess): Check for NULL CFArrayRef returned from
|
|
SBSCopyApplicationDisplayIdentifiers for SkankPhone.
|
|
(MachProcess::Suspend): Check if process state is not running instead of
|
|
having to receive an event after a timeout if one is given.
|
|
(MachProcess::Detach): Deallocate the exception port when detaching and
|
|
restore the inferior task exception ports prior to clearing and detaching.
|
|
(MachProcess::PrivateResume): Grab the task's basic info and make sure we
|
|
get the resume the correct number of times.
|
|
(MachProcess::DisableBreakpoint): Removed unused variable opcode_restored
|
|
and make sure the breakpoint is enabled before we start warning that
|
|
our opcode wasn't there.
|
|
* ppc/DBNArchImpl.cpp (DNBArchMachPPC::EnableHardwareSingleStep): Log
|
|
using LOG_STEP instead of LOAD_BREAKPOINTS.
|
|
* RNBServices.cpp (IsSBProcess): Check for NULL CFArrayRef returned from
|
|
SBSCopyApplicationDisplayIdentifiers for SkankPhone.
|
|
|
|
2008-11-26 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.h (MachProcess::Suspend): Now takes an optional absolute
|
|
timeout that, if non-NULL, will case the function to return after the
|
|
process has been suspended and is in a stopped state. If the timeout is
|
|
NULL, then no waiting will occur.
|
|
* MachProcess.cpp (MachProcess::Suspend): Ditto.
|
|
(MachProcess::Detach): Now replies to all exceptions, un-suspends all
|
|
threads and resumes the task.
|
|
(MachProcess::ReplyToAllExceptions): New function.
|
|
(MachProcess::PrivateResume): Now takes an additional parameter named
|
|
detach that will do the right thing when detaching from a process.
|
|
* DNBArchImpl.h (DNBArchMachI386::ThreadWillResume): Returns void.
|
|
* DNBArchImpl.cpp (DNBArchMachI386::ThreadWillResume): Returns void.
|
|
* RNBServices.cpp (ListApplications): #ifdef-ed for ARM only as it
|
|
currently uses SpringBoard.
|
|
(IsSBProcess): Ditto.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): #ifdef-ed around
|
|
ARM parts so it compiles for i386.
|
|
(main): Ditto.
|
|
|
|
2008-11-24 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBArchProtocol.h (DNBArchProtocol::ThreadWillResume): Now returns void.
|
|
* DNBArchImpl.cpp (DNBArchMachARM::ThreadWillResume): Returns void and
|
|
has hollowed out support for software single step.
|
|
(DNBArchMachARM::ThreadDidStop): Has a debug mode that uses hardware single
|
|
step to verify software single step that can be enabled by defining
|
|
DNB_ARCH_MACH_ARM_DEBUG_SW_STEP.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): New function.
|
|
* DNBArchImpl.h (DNBArchMachARM::ThreadWillResume): Returns void.
|
|
(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): New prototype.
|
|
(DNBArchMachARM::m_sw_single_step_next_pc): New member variable.
|
|
(DNBArchMachARM::m_sw_single_step_break_id): New member variable.
|
|
* MachThread.cpp (MachThread::ThreadWillResume): Now returns void.
|
|
* MachThread.h (MachThread::ThreadWillResume): Now returns void.
|
|
|
|
2008-11-19 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBError.h (FlavorType): Added SpringBoard error type for arm builds.
|
|
* DNBError.cpp (DNBError::AsString): Now returns SpringBoard error strings
|
|
if the error type is SpringBoard.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Set the error into
|
|
RNBContext as either a POSIX error or a SpringBoard error.
|
|
* RNBContext.h (m_launch_status): Changed this member to be a DNBError
|
|
instead of a uint32_t.
|
|
(RNBContext::LaunchStatus): Now returns a reference to the DNBError object
|
|
in m_launch_status.
|
|
* RNBContext.cpp (RNBContext::LaunchStatusAsString): Let DNBError handle
|
|
any error string descriptions, including SpringBoard errors.
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_q): Use new error class in
|
|
RNBContext.
|
|
(RNBRemote::HandlePacket_C): Return without an erroneous error when resuming
|
|
a process with a signal.
|
|
* DNBArch.h (DNBArchProtocol::StepNotComplete): New protocol function with
|
|
default return value.
|
|
* DNBArchImpl.cpp (DNBArchMachARM::StepNotComplete): New function.
|
|
(DNBArchMachARM::EnableHardwareSingleStep): Handle hardware single stepping
|
|
over 32 bit thumb instructions better so we always do a true instruction
|
|
level single step.
|
|
* MachProcess.cpp (MachProcess::ExceptionMessageBundleComplete): Now resumes
|
|
if single stepping wasn't able to complete in a single run.
|
|
* MachThread.cpp (MachThread::ShouldStop): Fills in new step_more parameter
|
|
if stepping is not complete.
|
|
* MachThreadList.cpp (MachThreadList::ShouldStop): Pass step_more parameter
|
|
to each MachThread::ShouldStop call.
|
|
|
|
2008-11-13 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.cpp (MachProcess::PosixSpawnChildForPTraceDebugging): Don't
|
|
call posix_spawnattr_setbinpref_np when launching with posix_spawn on ARM
|
|
targets as it currently selects the incorrect slice due to multiple slices
|
|
that contain the same cputype, yet they all have differing cpusubtypes.
|
|
|
|
2008-11-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (GetContinueThread): Don't return the current thread when
|
|
the continue thread is zero or -1.
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_c): Resume the process if we
|
|
have no continue thread set.
|
|
(RNBRemote::HandlePacket_s): Ditto.
|
|
(RNBRemote::HandlePacket_C): Ditto unless a continue address is specified
|
|
in which case we will only succeed if we have one thread when the continue
|
|
with signal and address doesn't have a continue thread specified.
|
|
(RNBRemote::HandlePacket_S): Ditto.
|
|
* DNB.cpp (DNBProcessResumeWithSignal): New function.
|
|
(DNBProcessResume): Added better logging.
|
|
(DNBProcessHalt): Ditto.
|
|
(DNBThreadResume): Ditto.
|
|
(DNBThreadResumeWithSignal): Ditto.
|
|
* DNB.h (DNBProcessResumeWithSignal): New prototype.
|
|
* DNBError.cpp (DNBError::LogThreaded): New function.
|
|
* DNBError.h (DNBError::LogThreaded): New prototype.
|
|
* DNBLog.cpp (_DNBLogThreaded): Added sequence ID for threaded logs.
|
|
(_DNBLogThreadedIf): Ditto.
|
|
* MachException.cpp (MachException::Data::GetStopInfo): Use new SoftSignal()
|
|
accessor.
|
|
(MachException::Data::DumpStopReason): Ditto.
|
|
(MachException::Message::Reply): Added better logging and log using the
|
|
soft signal if our task matches that in the exception.
|
|
(MachException::Data::Dump): Added better logging.
|
|
* MachException.h (IsSoftSignal): Removed.
|
|
(SoftSignal): New function that returns the soft signal in the exception
|
|
data if there is one, or zero otherwise.
|
|
* MachProcess.cpp (MachProcess::Suspend): Improved logging.
|
|
(MachProcess::Resume): Ditto.
|
|
(MachProcess::PrivateResume): Handle the case where the process is told
|
|
to resume with a signal by matching the signal up to the thread that had
|
|
the soft signal if no thread id is specified.
|
|
* MachThread.cpp (MachThread::Suspend): Improved logging.
|
|
(MachThread::Resume): Improved logging.
|
|
(MachThread::RestoreSuspendCount): Improved logging.
|
|
(MachThread::Resume): Improved logging.
|
|
(MachThread::Dump): Improved logging.
|
|
* MachThreadList.cpp (MachThreadList::Dump): Improved logging.
|
|
|
|
2008-10-22 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (RNBRunLoopMode): Added a new enum value
|
|
eRNBRunLoopModeInferiorAttaching.
|
|
(g_long_options): Added "--attach=PID" for attaching to existing processes
|
|
and "--launch=(auto|posix|fork|springboard)" options.
|
|
(RNBRunLoopLaunchInferior): Now launches process with new
|
|
nub_launch_flavor_t enum that can be overridden with the --launch option.
|
|
(RNBRunLoopLaunchAttaching): New function for attaching to existing
|
|
processes.
|
|
(main): Added command line option support for the "--attach" and "--launch"
|
|
options and added attach to pid support and better logging.
|
|
* DNB.cpp/h: (DNBProcessLaunch): Added nub_launch_flavor_t and error
|
|
parameter for more precise control when launching processes.
|
|
(DNBProcessSBLaunch): Removed function as launching with SpringBoard can
|
|
now be done using DNBProcessLaunch with launch_flavor being set to
|
|
eLaunchTypeSpringBoard (arm only).
|
|
(DNBProcessSBAttach): Removed function (SpringBoard processes are now auto
|
|
detected in the MachProcess::AttachForDebug function on ARM).
|
|
* DNBDefs.h (NUB_GENERIC_ERROR): New generic error definition.
|
|
(nub_launch_flavor_t): New enumeration used for control over process
|
|
launching.
|
|
* MachProcess.cpp (IsSBProcess): New function.
|
|
(MachProcess::AttachForDebug): Removed flags parameter that was being used
|
|
for SpringBoard flags and we now detect if a process belongs to SpringBoard
|
|
by calling IsSBProcess.
|
|
(MachProcess::LaunchForDebug): Now has launch parameter that tells it how
|
|
to launch the inferior process and there is also an error code that gets
|
|
returned. This function can now launch using fork + exec, posix_spawn,
|
|
or SpringBoard on ARM targets.
|
|
(MachProcess::SBLaunchForDebug): Now uses DNBError reference instead of
|
|
uint32_t pointer for the error code.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Ditto.
|
|
|
|
2008-10-22 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MacOSX/arm/DNBArchImpl.cpp (DNBArchMachARM::GetRegisterValue): Set
|
|
register value to a uint32 value instead of a float64 value for s0 -
|
|
s31.
|
|
|
|
2008-10-17 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Don't listen for
|
|
the qLaunchSuccess if we aren't doing a lockdown connnection.
|
|
|
|
2008-10-13 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (class RNBRemote): Added m_watchpoints member.
|
|
* DNB.cpp (DNBBreakpointSet): Added boolean hardware parameter for
|
|
requesting that a hardware breakpoint be set.
|
|
(DNBWatchpointSet): New function.
|
|
(DNBWatchpointClear): New function.
|
|
(DNBWatchpointGetHitCount): New function.
|
|
(DNBWatchpointGetIgnoreCount): New function.
|
|
(DNBWatchpointSetIgnoreCount): New function.
|
|
(DNBWatchpointSetCallback): New function.
|
|
(DNBWatchpointPrint): New function.
|
|
* DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Modified to emit
|
|
a single DNBLog() call so there aren't multiple newlines when logging
|
|
to ASL.
|
|
* RNBContext.cpp (RNBContext::ThreadFunctionProcessStatus): Use new
|
|
process state changed events.
|
|
* DNBBreakpoint.h (class DNBBreakpoint): Removed m_state member and
|
|
added m_tid, m_enabled, m_hw_preferred, m_is_watchpoint, m_watch_read,
|
|
m_watch_write, and m_hw_index.
|
|
(DNBBreakpoint::ThreadID()): New accessor.
|
|
(DNBBreakpoint::IsEnabled()): New accessor.
|
|
(DNBBreakpoint::SetEnabled()): New accessor.
|
|
(DNBBreakpoint::IsWatchpoint()): New accessor.
|
|
(DNBBreakpoint::IsBreakpoint()): New accessor.
|
|
(DNBBreakpoint::SetIsWatchpoint()): New accessor.
|
|
(DNBBreakpoint::WatchpointRead()): New accessor.
|
|
(DNBBreakpoint::WatchpointWrite()): New accessor.
|
|
(DNBBreakpoint::HardwarePreferred()): New accessor.
|
|
(DNBBreakpoint::IsHardware()): New accessor.
|
|
(DNBBreakpoint::GetHardwareIndex()): New accessor.
|
|
(DNBBreakpoint::SetHardwareIndex()): New accessor.
|
|
(DNBBreakpoint::ThreadID()): New accessor.
|
|
(DNBBreakpoint::GetState()): Removed accessor.
|
|
(DNBBreakpoint::SetState()): Removed accessor.
|
|
(DNBBreakpoint::AddBreakpoint()): Renamed to Add().
|
|
(DNBBreakpoint::RemoveBreakpoint()): Renamed to Remove().
|
|
(DNBBreakpoint::FindBreakIDForAddress()): Renamed to FindIDByAddress().
|
|
(DNBBreakpoint::ShouldStopAtBreakpoint()): Renamed to ShouldStop().
|
|
(DNBBreakpoint::SetBreakpointCallback()): Renamed to SetCallback().
|
|
(DNBBreakpoint::FindBreakpointWithAddress()): Renamed to
|
|
FindByAddress().
|
|
(DNBBreakpoint::FindBreakpointWithBreakID()): Renamed to FindByID().
|
|
(DNBBreakpoint::GetBreakpointAtIndex()): Renamed to GetByIndex().
|
|
* FunctionProfiler.h: New header for subclass of DNBRuntimeAction.
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_v): Use new process state
|
|
changed events.
|
|
(RNBRemote::HandlePacket_z): Implement the hardware breakpoint and
|
|
watchpoint commands z1, Z1, z2, Z2, z3 and Z3
|
|
* PThreadEvent.h (PThreadEvent::GetEventBits): Made member function
|
|
const.
|
|
(PThreadEvent::WaitForSetEvents): Ditto.
|
|
(PThreadEvent::WaitForEventsToReset): Ditto.
|
|
(PThreadEvent::WaitForResetAck): Ditto.
|
|
(PThreadEvent::m_mutex): Made class member mutable.
|
|
(PThreadEvent::m_set_condition): Made class member mutable.
|
|
(PThreadEvent::m_reset_condition): New mutable class member.
|
|
* ProfileObjectiveC.cpp
|
|
* DNBArch.h (DNBArch::NotifyException): Now has default implementation
|
|
that returns false.
|
|
(DNBArch::NumSupportedHardwareBreakpoints): New virtual member
|
|
function with a default implementation.
|
|
(DNBArch::NumSupportedHardwareWatchpoints): Ditto.
|
|
(DNBArch::EnableHardwareBreakpoint): Ditto.
|
|
(DNBArch::EnableHardwareWatchpoint): Ditto.
|
|
(DNBArch::DisableHardwareBreakpoint): Ditto.
|
|
(DNBArch::DisableHardwareWatchpoint): Ditto.
|
|
* DNB.h (DNBBreakpointSet): New take a HARDWARE parameter that allows
|
|
requests for setting hardware breakpoints.
|
|
(DNBWatchpointSet): New function prototype.
|
|
(DNBWatchpointClear): New function prototype.
|
|
(DNBWatchpointGetHitCount): New function prototype.
|
|
(DNBWatchpointGetIgnoreCount): New function prototype.
|
|
(DNBWatchpointSetIgnoreCount): New function prototype.
|
|
(DNBWatchpointSetCallback): New function prototype.
|
|
(DNBWatchpointPrint): New function prototype.
|
|
* MacOSX/arm/DNBArchImpl.cpp: Added hardware breakpoint and watchpoint
|
|
support for ARM.
|
|
(DNBArchMachARM::GetCPUType): New function.
|
|
(DNBArchMachARM::DumpDBGState): New function.
|
|
(DNBArchMachARM::GetDBGState): New function.
|
|
(DNBArchMachARM::SetDBGState): New function.
|
|
(DNBArchMachARM::EnableHardwareSingleStep): New function.
|
|
(DNBArchMachARM::EnableHardwareBreakpoint): New function.
|
|
(DNBArchMachARM::NotifyException): Removed.
|
|
(DNBArchMachARM::DisableHardwareBreakpoint): New function.
|
|
(DNBArchMachARM::EnableHardwareWatchpoint): New function.
|
|
(DNBArchMachARM::DisableHardwareWatchpoint): New function.
|
|
* MacOSX/MachThread.cpp (MachThread::Suspend): Added better logging.
|
|
(MachThread::Resume): Ditto.
|
|
(MachThread::RestoreSuspendCount): Ditto.
|
|
(MachThread::Dump): Ditto.
|
|
(MachThread::EnableHardwareBreakpoint): New function.
|
|
(MachThread::EnableHardwareWatchpoint): New function.
|
|
(MachThread::DisableHardwareBreakpoint): New function.
|
|
(MachThread::DisableHardwareWatchpoint): New function.
|
|
* MacOSX/MachThreadList.h (MachThreadList::GetLastError): Removed.
|
|
(MachThread::EnableHardwareBreakpoint): New prototype.
|
|
(MachThread::DisableHardwareBreakpoint): New prototype.
|
|
(MachThread::EnableHardwareWatchpoint): New prototype.
|
|
(MachThread::DisableHardwareWatchpoint): New prototype.
|
|
(class MachThread): Remove m_err member variable.
|
|
* MacOSX/ppc/DNBArchImpl.cpp (DNBArchMachPPC::GetCPUType) New
|
|
function.
|
|
(DNBArchMachPPC::NotifyException): Removed.
|
|
* MacOSX/ppc/DNBArchImpl.h (DNBArchMachPPC::NotifyException): Removed.
|
|
* MacOSX/MachThread.h (MachThread::EnableHardwareBreakpoint): New
|
|
prototype.
|
|
(MachThread::EnableHardwareWatchpoint): New prototype.
|
|
(MachThread::DisableHardwareBreakpoint): New prototype.
|
|
(MachThread::DisableHardwareWatchpoint): New prototype.
|
|
(class MachThread): Renambed class member m_exception to
|
|
m_stop_exception.
|
|
* MacOSX/MachProcess.cpp (MachProcess::SetState): Updated to use new
|
|
process event enumerations.
|
|
(MachProcess::PrivateResume): Added better logging.
|
|
(MachProcess::CreateBreakpoint): Added bool HARDWARE parameter for
|
|
requesting hardware breakpoints.
|
|
(MachProcess::CreateWatchpoint): New function.
|
|
(MachProcess::DisableAllWatchpoints): New function.
|
|
(MachProcess::DisableWatchpoint): New function.
|
|
(MachProcess::DumpWatchpoint): New function.
|
|
(MachProcess::EnableBreakpoint): Enabled breakpoints in hardware if
|
|
requested and supported.
|
|
(MachProcess::DisableBreakpoint): Disable hardware breakpoints if that
|
|
is how they were set.
|
|
(MachProcess::EnableWatchpoint): New function.
|
|
(MachProcess::ExceptionMessageBundleComplete): Wait for the
|
|
eEventProcessRunningStateChanged event to be reset before changing
|
|
state to stopped to avoid race condition with very fast start/stops.
|
|
(MachProcess::LaunchForDebug): Added posix_spawn support.
|
|
(MachProcess::PosixSpawnChildForPTraceDebugging): New function.
|
|
* MacOSX/i386/DNBArchImpl.cpp (DNBArchMachI386::GetCPUType): New
|
|
function.
|
|
* MacOSX/i386/DNBArchImpl.h (DNBArchMachI386::GetCPUType): New
|
|
prototype.
|
|
* MacOSX/MachProcess.h (PosixSpawnChildForPTraceDebugging): New
|
|
prototype.
|
|
* MacOSX/MachException.cpp (class MachException::ThreadMessage):
|
|
Renamed class to MachException::Data.
|
|
* MacOSX/MachThreadList.cpp (class MachThreadList): Removed m_err
|
|
class member.
|
|
(MachThreadList::EnableHardwareBreakpoint): New function.
|
|
(MachThreadList::DisableHardwareBreakpoint): New function.
|
|
(MachThreadList::EnableHardwareWatchpoint): New function.
|
|
(MachThreadList::DisableHardwareWatchpoint): New function.
|
|
* MacOSX/MachException.h (class MachException::ThreadMessage):
|
|
Renamed class to MachException::Data.
|
|
* DNBDefs.h (nub_watch_t): New typedef.
|
|
(INVALID_NUB_HW_INDEX): New macro definition.
|
|
(WATCH_TYPE_READ): New macro definition.
|
|
(WATCH_TYPE_WRITE): New macro definition.
|
|
(NUB_STATE_IS_RUNNING): New macro to see if state is a running state.
|
|
(NUB_STATE_IS_STOPPED): New macro to see if state is a stopped state.
|
|
(eEventProcessStateChanged): Deprecated.
|
|
(eEventProcessRunningStateChanged): New process event state.
|
|
(eEventProcessStoppedStateChanged): New process event state.
|
|
(LOG_WATCHPOINTS): New macro definition for logging watchpoints.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Use new process
|
|
event states.
|
|
* FunctionProfiler.cpp: New class that allows single stepping through
|
|
an address range for tracing exact call graphs.
|
|
|
|
2008-09-22 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (GetContinueThread): If the continue thread is zero or
|
|
-1 then return GetCurrentThread().
|
|
* RNBRemote.cpp (m_packets): Made the vCont functions call
|
|
RNBRemote::HandlePacket_v().
|
|
(RNBRemote::HandlePacket_H): Cleaned up whitespace.
|
|
(RNBRemote::HandlePacket_last_signal): Return actual signal values for
|
|
EXE_SOFTWARE/EXC_SOFT_SIGNAL mach exceptions.
|
|
(RNBRemote::HandlePacket_v): Implemented the 'vCont?' and 'vCont;'
|
|
packets.
|
|
(RNBRemote::HandlePacket_c): Handle the case where an address is
|
|
provided.
|
|
(RNBRemote::HandlePacket_C): Implemented the continue with signal
|
|
including when an address is provided.
|
|
(RNBRemote::HandlePacket_S): Implemented the step with signal
|
|
including when an address is provided.
|
|
* DNB.cpp (DNBProcessResume): Pass 0 as the signal when resuming
|
|
a process without specifying a thread.
|
|
(DNBThreadResume): Pass 0 as the signal when resuming a specific thread.
|
|
(DNBThreadResumeWithSignal): New function.
|
|
* DNB.h (DNBThreadResumeWithSignal): New prototype.
|
|
* MachException.h (MachException::Message::Reply): Added a signal
|
|
parameter.
|
|
* MachException.cpp (MachException::Message::Reply): Update the thread
|
|
with the new SIGNAL parameter instead of always zero so signals can be
|
|
passed on to programs.
|
|
* MachProcess.h (MachProcess::Resume): Added a signal parameter.
|
|
* MachProcess.h (MachProcess::PrivateResume): Added a signal parameter.
|
|
* MachProcess.cpp (MachProcess::Resume): Pass new SIGNAL parameter to
|
|
MachProcess::PrivateResume.
|
|
* MachProcess.cpp (MachProcess::PrivateResume): Pass new SIGNAL
|
|
parameter to the mach exception reply.
|
|
|
|
2008-08-08 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (gProcessMap): Removed static C++ global.
|
|
(GetProcessMap): New Function.
|
|
(AddProcessToMap): New function.
|
|
(RemoveProcessFromMap): New function.
|
|
(GetProcessSP): Use new GetProcessMap function to get process list.
|
|
|
|
2008-07-30 Greg Clayton <gclayton@apple.com>
|
|
|
|
* debugserver-entitlements.plist (get-task-allow): Removed.
|
|
(run-invalid-allow): Added boolean value set to TRUE.
|
|
|
|
2008-04-18 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.cpp (MachProcess::Task): Added getuid(), geteuid(),
|
|
getgid(), getegid() to the log message if task for pid fails.
|
|
|
|
2008-04-07 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBContext.cpp (RNBContext::LaunchStatusAsString): Removed unused
|
|
tmp_str variable.
|
|
|
|
2008-04-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* CFString.cpp/h (UTF8): Made a static function that can convert
|
|
a CFStringRef to UTF8.
|
|
|
|
2008-04-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (main): Make sure we exit after we send the
|
|
application list.
|
|
|
|
2008-04-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBServices.h (IsSBProcess): New prototype;
|
|
* RNBServices.cpp (IsSBProcess): New function that returns true it
|
|
SpringBoard owns or knows about the process.
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_v): Made attach work correctly.
|
|
* DNB.cpp (DNBProcessSBAttach): New function for use when attaching to
|
|
a process owned by SpringBoard.
|
|
(DNBProcessAttach): Fixed an issue where a local was shadowing a
|
|
parameter.
|
|
* DNB.h (DNBProcessSBAttach): New prototype.
|
|
* MachProcess.cpp (MachProcess::AttachForDebug): AttachForDebug now
|
|
takes some flags so it knows to enable SpringBoard functionality.
|
|
* MachProcess.h (MachProcess::AttachForDebug): Added flags parameter
|
|
to prototype.
|
|
|
|
2008-04-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (RNBRunLoopGetArgsFromRemote): Handle the new
|
|
attach packet and watch for connection being lost.
|
|
(main): handle the --applist option when there we aren't using lockdown
|
|
by printing the results to stdout and exiting with appropriate error code
|
|
if we failed. Also handle the new prototype for ListApplications.
|
|
* RNBServices.h (ListApplications): Change first parameter to be a std::string
|
|
that will get the contents of the plist so we can use this for more than
|
|
just lockdown.
|
|
* RNBServices.cpp (ListApplications): Change first parameter to be a std::string
|
|
that will get the contents of the plist so we can use this for more than
|
|
just lockdown and also fixed the logic so we actually create a full list of
|
|
applications instead of just overwriting the first entry.
|
|
* RNBRemote.h (PacketEnum): Added a new 'vattach' enum for the "vAttach;PID"
|
|
gdb remote command.
|
|
(RNBRemote::HandlePacket_v): New prototype;
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): add the vattach packet definition
|
|
to m_packets.
|
|
(RNBRemote::HandlePacket_v): New function that handles attach to a process.
|
|
|
|
2008-04-03 Jim Ingham <jingham@apple.com>
|
|
|
|
* RNBRemote.h: Add query_launch_success to packet enum.
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable_): Add query_launch_success.
|
|
(HandlePacket_q): Handle query_launch_success.
|
|
* DNB.cpp (DNBProcessSBLaunch): Pass in launch_retval.
|
|
* DNB.h: Change prototype of DNBProcessSBLaunch to take launch_retval.
|
|
* RNBContext.cpp (RNBContext::LaunchStatusAsString): New function.
|
|
* RNBContext.h (RNBContext): Add m_launch_status & accessors.
|
|
* macosx/MachProcess.cpp (MachProcess::SBLaunchForDebug): Pass launch_retval.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Accept & set launch_retval.
|
|
* Macosx/MachProcess.h: Change prototypes of SBLaunchForDebug &
|
|
ForkChildForPTraceDebugging to accept launch_retval.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Get the launch status and
|
|
put it in the context, then wait for the qLaunchStatus packet.
|
|
|
|
2008-04-03 Greg Clayton <gclayton@apple.com>
|
|
|
|
* com.apple.debugserver.plist: Changed plist so debugserver
|
|
runs as mobile user.
|
|
* com.apple.debugserver.applist.plist: Ditto.
|
|
|
|
2008-04-03 Greg Clayton <gclayton@apple.com>
|
|
|
|
* MachProcess.cpp: (MachProcess::SBForkChildForPTraceDebugging):
|
|
Increased SBS application launch timeout to 30 seconds.
|
|
|
|
2008-03-27 Christopher Friesen <friesen@apple.com>
|
|
|
|
* RNBServices.h: Pass tasks from SpringBoard as a plist
|
|
* RNBServices.cpp: Ditto.
|
|
* test-remotenub.cpp: added --applist flag
|
|
* com.apple.debugserver.applist.plist: Agent plist
|
|
|
|
2008-03-17 Jim Ingham <jingham@apple.com>
|
|
|
|
* DNB.h: Pass envp to DNBProcessLaunch & DNBProcessSBLaunch.
|
|
* DNB.cpp: Ditto.
|
|
* MachProcess.h: Ditto for *LaunchForDebug and
|
|
*ForkChildForPtraceDebugging.
|
|
* MachProcess.cpp (MachProcess::LaunchForDebug): Pass on envp.
|
|
(MachProcess::SBLaunchForDebug): Ditto.
|
|
(MachProcess::ForkChildForPtraceDebugging): Accept envp, haven't actually
|
|
implemented the passing yet.
|
|
(MachProcess::SBForkChildForPtraceDebuggin): Accept envp, convert to
|
|
CFDictionary and pass to SBSLaunchApplication.
|
|
* RNBContext.h: Add environment to the context.
|
|
* RBNContext.cpp (RNBContext::EnvironmentAtIndex): New function.
|
|
* RNBRemote.h: Add set_environment_variable to the PacketEnum.
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): Add QEnvironment:.
|
|
* (RNBRemote::HandlePacket_Q): Ingest the environment variable.
|
|
* test-remotenub.cpp (RNBRunLoppLaunchInferior): Convert the env
|
|
array in the context into an array, and pass it to the DNBProcess*Launch
|
|
methods.
|
|
|
|
2008-03-17 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNBBreakpoint.cpp (DNBBreakpointList::GetBreakpointAtIndex): New
|
|
functions (const and non-const versions).
|
|
* DNBBreakpoint.h (DNBBreakpointList::GetBreakpointAtIndex): New
|
|
prototypes (const and non-const versions).
|
|
* DNBError.h (DNBError::Success()): Don't use KERN_SUCCESS define.
|
|
(DNBError::Fail()): Don't use KERN_SUCCESS define.
|
|
* MachProcess.cpp (MachProcess::DisableAllBreakpoints): New function.
|
|
(MachProcess::Detach): Added initial implementation that will halt
|
|
the process, disable all breakpoints and call PT_DETACH.
|
|
* MachProcess.h (MachProcess::DisableAllBreakpoints): New prototype.
|
|
|
|
2008-03-04 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.h (RNBRemote::SendHexEncodedBytePacket): New prototype.
|
|
* RNBRemote.cpp (RNBRemote::SendHexEncodedBytePacket): New function.
|
|
(RNBRemote::SendSTDOUTPacket): Use SendHexEncodedBytePacket function
|
|
to send bytes.
|
|
(RNBRemote::SendSTDERRPacket): Ditto.
|
|
(RNBRemote::HandlePacket_q): Return a valid thread info string for
|
|
qThreadExtraInfo queries.
|
|
* DNB.cpp (DNBThreadPrintStopReason): Commented out unused function.
|
|
(DNBThreadGetInfo): New function.
|
|
* DNB.h (DNBThreadPrintStopReason): Commented out prototype.
|
|
(DNBThreadGetInfo): New prototype.
|
|
* MachProcess.cpp (MachProcess::GetThreadInfo): New function.
|
|
* MachProcess.h (MachProcess::GetThreadInfo): New prototype.
|
|
* MachThreadList.cpp (MachThreadList::GetThreadInfo): New function.
|
|
* MachThreadList.h (MachThreadList::GetThreadInfo): New prototype.
|
|
* MachThread.cpp (MachThread::GetBasicInfoAsString): New function.
|
|
(MachThread::InferiorThreadID): New function.
|
|
* MachThread.cpp (MachThread::GetBasicInfoAsString): New prototype.
|
|
(MachThread::InferiorThreadID): New prototype.
|
|
|
|
2008-02-27 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): Set the
|
|
current thread when we notify a thread has stopped to subsequent
|
|
g and p packets get the correct data.
|
|
|
|
2008-02-26 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Add query_thread_extra_info enum.
|
|
* RNBRemote.cpp: Add support for qThreadExtraInfo.
|
|
Currently we return 'Ok' as the packet status for
|
|
every thread.
|
|
|
|
2008-02-26 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_q): Correct handling
|
|
of qfThreadInfo/qsThreadInfo.
|
|
|
|
2008-02-20 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Change default for gdb's max incoming packet size to
|
|
reflect the real default size.
|
|
* RNBRemote.cpp (HandlePacket_Q): Correct the string comparisions for
|
|
the QSetMaxPayloadSize and QSetMaxPacketSize packets.
|
|
|
|
2008-02-19 Christopher Friesen <friesen@apple.com>
|
|
|
|
* CFDataFormatters.c: CoreFoundation data formatters added to project.
|
|
|
|
2008-02-19 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Record the max payload size, not the max packet
|
|
size for less ambiguous meaning.
|
|
* RNBRemote.cpp: Add support for QSetMaxPayloadSize: packet which
|
|
should have a clearer meaning than QSetMaxPacketSize.
|
|
QSetMaxPacketSize will be removed once we get have a chance to get
|
|
a new debugserver and gdb submitted.
|
|
|
|
2008-02-18 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Make default size 1024.
|
|
* RNBRemote.cpp: Questionmark packet should stay under
|
|
max_packet_size - 5 to allow for start, end, checksum and nul
|
|
char bytes.
|
|
|
|
2008-02-18 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Add m_max_packet_size to class defn.
|
|
* RNBRemote.cpp: Initialize it, use it.
|
|
|
|
2008-02-18 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Add set_max_packet_size.
|
|
* RNBRemote.cpp: Add QSetMaxPacketSize packet handling.
|
|
|
|
2008-02-18 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (HandleProcessStateChange): Call new
|
|
RNBRemote::FlushSTDIO function.
|
|
(RNBRunLoopInferiorExecuting): Ditto.
|
|
* RNBRemote.h (RNBRemote::FlushSTDIO): New prototype.
|
|
* RNBRemote.cpp (RNBRemote::FlushSTDIO): New function to
|
|
centralize the stdio.
|
|
|
|
2008-02-18 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (DNBProcessWaitForEvent): Added timeout pointer as
|
|
parameter that can be NULL for infinite timeout to simplify
|
|
the DNB interface.
|
|
(DNBProcessTimedWaitForEvent): Removed function.
|
|
* DNB.h (DNBProcessWaitForEvent): Added timeout argument.
|
|
(DNBProcessTimedWaitForEvent): Removed prototype.
|
|
* DNBTimer.h (DNBTimer::OffsetTimeOfDay): New function.
|
|
* CFString.cpp (CFString::GetLength() const): New function.
|
|
* CFString.h (CFString::GetLength() const): New prototype.
|
|
* MachProcess.h (MachProcess class): Removed m_attached and
|
|
added m_flags.
|
|
* MachProcess.cpp (MachProcess::AttachForDebug): Set m_flags
|
|
to indicate we attached.
|
|
(MachProcess::SBLaunchForDebug): Set m_flags to indicate we
|
|
attached using SpringBoard and that we attached.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Changed to new
|
|
SpringBoardServices API.
|
|
(MachProcess::ThreadFunctionException): Added code that will
|
|
renew a watchdog assertion when we launch apps through
|
|
SpringBoardServices.
|
|
* PThreadEvent.cpp (PThreadEvent::WaitForSetEvents): Simplified
|
|
PThreadEvent API to have only one version of WaitForSetEvents
|
|
that has an optional timeout pointer argument.
|
|
* RNBContext.cpp (RNBContext::StopProcessStatusThread): Adapt
|
|
to new PThreadEvent API changes.
|
|
(RNBContext::ThreadFunctionProcessStatus): Adapt to new
|
|
DNBProcessWaitForEvent API changes.
|
|
* RNBRemote.cpp (RNBRemote::StopReadRemoteDataThread): Adapt
|
|
to new PThreadEvent API changes.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Adapt to new
|
|
DNBProcessWaitForEvent API changes.
|
|
(RNBRunLoopInferiorExecuting): Process STDIO first, then
|
|
incoming packets.
|
|
|
|
2008-02-14 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* MachProcess.cpp: (MachProcess::SBForkChildForPTraceDebugging):
|
|
Set mode bits on slave side of pty.
|
|
|
|
2008-02-12 Greg Clayton <gclayton@apple.com>
|
|
|
|
* DNB.cpp (DNBEnableLogging): Removed function.
|
|
(DNBThreadPrintStopReason): Removed the file handle from this
|
|
function and use DNBLog calls.
|
|
* DNB.h (DNBEnableLogging): Removed function prototype.
|
|
(DNBThreadPrintStopReason): Removed the file handle
|
|
from the function prototype in favor of using DNBLog calls.
|
|
* DNBDataRef.cpp (DNBDataRef::Dump): Removed file handle to use
|
|
DNBLog for the logging and print a log line each time a full line
|
|
is ready for output after caching it in a local buffer.
|
|
* DNBDataRef.cpp (DNBDataRef::Dump): Removed file handle from
|
|
prototype.
|
|
* DNBDefs.h (DNBCallbackLog): New callback prototype for all
|
|
logging.
|
|
DNBLog.cpp(g_debug_opt): Renamed to d_debug and made it a file
|
|
static.
|
|
(DNBLogGetDebug): New accessor function for g_debug.
|
|
(DNBLogSetDebug): New accessor function for g_debug.
|
|
(g_verbose): Made into a file static and added accessors.
|
|
(DNBLogGetVerbose): New accessor function for g_verbose.
|
|
(DNBLogSetVerbose): New accessor function for g_verbose.
|
|
(DNBLogSetLogCallback): New function call that registers a logging
|
|
callback for all logging in libdebugnub.dylib and any code that
|
|
loads it.
|
|
(DNBLogToASL): Removed function as it is deprecated in favor of
|
|
using DNBLogSetLogCallback to regsiter a callback function that
|
|
implements the logging.
|
|
(DNBLogToFile): Ditto.
|
|
(DNBLogCloseLogFile): Ditto.
|
|
(DNBLogToFile): Ditto.
|
|
(DNBLogToFile): Ditto.
|
|
(_DNBLogPuts): Removed unused function.
|
|
(_DNBLogVAPrintf): Calls the callback function to do the logging
|
|
if one has been registered.
|
|
* DNBLog.h (DNBLOG_FLAG_FATAL): New defines that get passed to
|
|
any registered logging callback functions.
|
|
(DNBLOG_FLAG_FATAL): Ditto.
|
|
(DNBLOG_FLAG_ERROR): Ditto.
|
|
(DNBLOG_FLAG_WARNING): Ditto.
|
|
(DNBLOG_FLAG_DEBUG): Ditto.
|
|
(DNBLOG_FLAG_VERBOSE): Ditto.
|
|
(DNBLOG_FLAG_THREADED): Ditto.
|
|
(DNBLog*): All logging calls are now exported from libdebugnub.dylib
|
|
so there aren't two copies (one in debugserver and one in debugnub).
|
|
C99 vararg Macros wrap all logging calls so no var arg processing
|
|
occurs when logging is disabled.
|
|
* DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Removed file
|
|
handle and now use DNBLog calls.
|
|
* DNBRegisterInfo.h (DNBRegisterValueClass::Dump): Removed file
|
|
handle from prototype.
|
|
* MachException.cpp (catch_mach_exception_raise_state_identity):
|
|
Removed newlines from logging call.
|
|
(catch_mach_exception_raise): Ditto.
|
|
(MachException::Message::Dump): Removed file handle from params
|
|
and removed newlines from logging call.
|
|
(MachException::ThreadMessage::DumpStopReason): Removed file handle
|
|
from params and use DNBLog for logging output.
|
|
(MachException::ThreadMessage::Dump): Log using DNBLog instead of
|
|
file handle.
|
|
* MachProcess.cpp (MachProcess::DumpThreadStoppedReason): Ditto.
|
|
(MachProcess::ReadMemory): Ditto.
|
|
(MachProcess::WriteMemory): Ditto.
|
|
(ExceptionMessageBundleComplete): Ditto.
|
|
* MachThread.cpp (MachThread::Dump): Ditto.
|
|
(MachThread::DumpRegisterState): Ditto.
|
|
* MachThreadList.cpp (MachThreadList::DumpThreadStoppedReason): Ditto.
|
|
(MachThreadList::Dump): Ditto.
|
|
* RNBRemote.cpp (set_logging): Use new function callback registration
|
|
calls when enabling ASL logging.
|
|
test-remotenub.cpp (ASLLogCallback): New function to handle all ASL
|
|
logging. This function gets registered with libdebugnub.dylib when we
|
|
want to log using ASL.
|
|
(FileLogCallback): New function to handle all file logging. This
|
|
function gets registered with libdebugnub.dylib when we want to log
|
|
to a 'FILE *'.
|
|
(main): Register the logging callback functions when we want to log
|
|
to file or using ASL.
|
|
|
|
2008-02-12 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (main): Default to ASL logging with no log
|
|
bits set to allow for warning and error logging.
|
|
* RNBRemote.h (struct Breakpoint): New structure for ref counting
|
|
breakpoints in Z and z packets.
|
|
* RNBRemote.cpp (RNBRemote::SendPacket): Use new LOG_RNB_PACKETS
|
|
defined when logging actual packet content.
|
|
(RNBRemote::HandleAsyncPacket): Ditto.
|
|
(RNBRemote::HandleReceivedPacket): Ditto.
|
|
(RNBRemote::HandlePacket_z): Ref count the setting and removing
|
|
of breakpoints with the Z and z packets using new struct
|
|
RNBRemote::Breakpoint.
|
|
* RNBDefs.h (LOG_RNB_PACKETS): New define for logging the sending
|
|
and receiving of packets data.
|
|
* DNB.cpp (DNBPrintf): Check for NULL file handle.
|
|
* DNBBreakpoint.cpp (DNBBreakpoint::Dump): Ditto.
|
|
(DNBBreakpointList::Dump): Ditto.
|
|
* DNBDefs.h (LOG_EVENTS): New define for logging PThreadEvent.
|
|
* DNBLog.cpp (g_debug_opt): Relocated outside of #if that turns off
|
|
logging completely to allow option parsing code that uses it to
|
|
still compile.
|
|
(g_verbose): Ditto.
|
|
* DNBLog.h (DNBLogToASL): Added prototype for when logging is
|
|
disabled via preprocessor macro.
|
|
(DNBLogToFile): Ditto.
|
|
* DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Check for NULL
|
|
file handle.
|
|
* MachException.cpp (MachException::ThreadMessage::DumpStopReason): Ditto.
|
|
(MachException::ThreadMessage::Dump): Ditto.
|
|
* MachProcess.cpp (MachProcess::CreateBreakpoint): Improved logging.
|
|
(MachProcess::DisableBreakpoint): Verify the original opcode gets
|
|
restored, improved logging and added unconditional logging for when
|
|
things go wrong.
|
|
(MachProcess::EnableBreakpoint): Verify the breakpoint opcode gets
|
|
written, improved logging and added unconditional logging for when
|
|
things go wrong.
|
|
* MachThread.cpp (MachThread::Dump): Check for NULL file handle.
|
|
* MachVMMemory.cpp (MachVMMemory::WriteRegion): Flush caches in inferior
|
|
after writing to inferior memory.
|
|
* PThreadEvent.cpp: Changed all logging calls to key off of LOG_EVENTS
|
|
instead of LOG_VERBOSE.
|
|
MachDYLD.cpp (MachDYLD::Dump): Check for NULL file handle.
|
|
(MachDYLD::DYLIBInfo::Dump): Ditto.
|
|
ProfileObjectiveC.cpp (ProfileObjectiveC::DumpStats): Ditto.
|
|
|
|
2008-02-09 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (set_logging): Log to ASL unconditionally when
|
|
processing a QSetLogging packet.
|
|
|
|
2008-02-06 Greg Clayton <gclayton@apple.com>
|
|
|
|
* test-remotenub.cpp (main): Dup stdout and stderr to /dev/NULL
|
|
when we use lockdown.
|
|
|
|
2008-02-06 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBSocket.cpp (RNBSocket::Disconnect): Removed unused var ERR.
|
|
* RNBRemote.cpp(RNBRemote::HandlePacket_Q): Removed unused var PID.
|
|
* DNBError.cpp (DNBError::LogThreadedIfError): Removed unused var
|
|
ERR_MSG.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Removed unused
|
|
variable EXECUTABLE_LENGTH.
|
|
(main): Removed unused variable ARG_IDX.
|
|
|
|
2008-02-06 Chris Marcellino (cmarcellino@apple.com) and Myke Olson (molson@apple.com)
|
|
|
|
* MachProcess.cpp (SBForkChildForPTraceDebugging): Bring up to date with
|
|
current SpringBoardServices.framework types and imports.
|
|
|
|
2008-02-05 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (set_logging): Remove the mode=file and filename=
|
|
options to the QSetLogging packet. We're only going to support logging
|
|
to ASL for now. Logging to a file can still be accomplished by the
|
|
-l command line argument.
|
|
|
|
2008-02-02 Christopher Friesen (cfriesen@apple.com)
|
|
|
|
* Added libXcodeDebugerSupport.dylib target
|
|
* XCDebuggerIntrospection.[hc]: Support for Xcode's debugger introspection.
|
|
|
|
2008-02-01 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* DNBLog.cpp (DNBLogCloseLogFile): New function to close a logfile
|
|
at exit.
|
|
* DNBLog.h: Prototype.
|
|
* test-remotenub.cpp (main): Close the log file before exiting.
|
|
|
|
2008-02-01 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (set_logging): Recognize the "filename=" argument
|
|
to the QSetLogging directive.
|
|
* DNBLog.cpp (DNBLogGetLogMask): New fun.c
|
|
* DNBLog.h: Prototype.
|
|
|
|
2008-01-31 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* DNBLog.cpp: Add ASL logging as a run-time selectable option.
|
|
(DNBLogToASL, DNBLogToFile): Functions to switch between logging to
|
|
a file and logging via ASL.
|
|
* DNBLog.h: Prototypes.
|
|
* RNBRemote.cpp (set_logging): Recognize the "mode=" field to enable
|
|
asl logging. Skip unrecognized keys.
|
|
|
|
2008-01-31 Greg Clayton (gclayton@apple.com)
|
|
|
|
* DNB.cpp (sigchld_handler): Better logging when we get a
|
|
SIGCHILD and we are watching for process related logging events.
|
|
* test-remotenub.cpp (RNBRunLoopInferiorExecuting): Only reset
|
|
events when we still have event bits set.
|
|
|
|
2008-01-29 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Add set_logging_mode.
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): Recognize
|
|
QSetLogging.
|
|
|
|
2008-01-29 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (set_logging): New function to parse the QSetLogging
|
|
packet.
|
|
(RNBRemote::HandlePacket_Q): Call it.
|
|
|
|
2008-01-28 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: Minimal packet size is 1024 in our gdb now.
|
|
* RNBRemote.cpp: Add the stop_pc value in big-endian order to the
|
|
T response packet to make it a little easier to follow where gdb
|
|
is stepping.
|
|
|
|
2008-01-28 Greg Clayton <gclayton@apple.com>
|
|
|
|
* RNBContext.h: Removed m_pid_state from RNBContext class so that
|
|
it couldn't get out of sync with the actual process and its accessors
|
|
SetProcessState() and GetProcessState().
|
|
* RNBContext.cpp (RNBContext::ProcessStateRunning): Always return the
|
|
current state of the process instead of a cached value.
|
|
* test-remotenub.cpp (RNBRunLoopLaunchInferior): Remove call to
|
|
deprecated RNBContext::SetProcessState().
|
|
(HandleProcessStateChange): Ditto.
|
|
|
|
2008-01-24 Greg Clayton (gclayton@apple.com)
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_q): See if command starts with
|
|
"qSymbol" (no trailing "s") and return the empty string.
|
|
|
|
2008-01-24 Greg Clayton (gclayton@apple.com)
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_q): See if command starts with
|
|
"qSymbols" and return the empty string.
|
|
|
|
2008-01-24 Greg Clayton (gclayton@apple.com)
|
|
|
|
* DNBError.h (DNBError::DumpIfError): Removed prototype.
|
|
* DNBError.cpp (DNBError::DumpIfError): Removed function.
|
|
(DNBError::LogThreadedIfError): Output error as hex.
|
|
* MachException.cpp (MachException::Message::Receive): Don't use
|
|
DNBError::DumpIfError, now use DNBError::LogThreadedIfError.
|
|
* MachProcess.cpp (MachProcess::StartExceptionThread): Ditto.
|
|
(MachProcess::Suspend): Ditto.
|
|
(MachProcess::SBForkChildForPTraceDebugging): Ditto.
|
|
* MachVMMemory.cpp (MachVMMemory::Read): Cleaned up logging
|
|
calls.
|
|
(MachVMMemory::Write): Ditto.
|
|
(MachVMMemory::WriteRegion): Added logging.
|
|
* RNBContenxt.cpp (display_thread_info): Removed function.
|
|
* RNBRemote.cpp (RNBRemote::GetPacket): Commented out stderr
|
|
messages to avoid SpringBoard from killing us.
|
|
(RNBRemote::HandlePacket_p): Ditto.
|
|
(RNBRemote::HandlePacket_P): Ditto.
|
|
(RNBRemote::HandlePacket_c): Ditto.
|
|
(RNBRemote::HandlePacket_A): Removed code that was already
|
|
* RNBSocket.cpp (RNBSocket::Listen): Commented out stdout
|
|
messages to avoid SpringBoard from killing us.
|
|
(RNBSocket::ConnectToService): Ditto.
|
|
|
|
2008-01-24 Jim Ingham <jingham@apple.com>
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_q): Reply "" to qSymbols
|
|
and qOffsets.
|
|
|
|
2008-01-23 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.h: m_noack_mode to RNBRemote class.
|
|
* RNBRemote.cpp: Change #ifdef NO_ACKS code blocks
|
|
to use m_noack_mode instance variable.
|
|
(RNBRemote::HandlePacket_Q): New function to handle
|
|
QStartNoAckMode packet and set m_noack_mode appropriately.
|
|
* test-remotenub.cpp: Remove NO_ACKS ifdefs.
|
|
|
|
2008-01-22 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (RNBRemote::CreatePacketTable): Recognize
|
|
QStartNoAckMode as an unsupported remote protocol request.
|
|
* RNBRemote.h: Add start_noack_mode enum entry.
|
|
|
|
2008-01-22 Greg Clayton (gclayton@apple.com)
|
|
|
|
* DNBLog.h: Removed C++ namespace for DNBLog (changed all DNBLog::
|
|
to DNBLog) so C99 var arg macros can be used to completely disable
|
|
all logging and any functions that may be called when making the
|
|
variable arguments.
|
|
* DNBLog.cpp: Ditto.
|
|
* DNB.cpp: Ditto.
|
|
* DNBBreakpoint.cpp: Ditto.
|
|
* DNBError.cpp: Ditto.
|
|
* MacOSX/MachDYLD.cpp: Ditto.
|
|
* MacOSX/MachException.cpp: Ditto.
|
|
* MacOSX/MachProcess.cpp: Ditto.
|
|
* MacOSX/MachThread.cpp: Ditto.
|
|
* MacOSX/MachThreadList.cpp: Ditto.
|
|
* MacOSX/MachVMMemory.cpp: Ditto.
|
|
* MacOSX/MachVMRegion.cpp: Ditto.
|
|
* MacOSX/arm/DNBArchImpl.cpp: Ditto.
|
|
* MacOSX/ppc/DNBArchImpl.cpp: Ditto.
|
|
* PThreadEvent.cpp: Ditto.
|
|
* RNBContext.cpp: Ditto.
|
|
* RNBRemote.cpp: Ditto.
|
|
* RNBSocket.cpp: Ditto.
|
|
* test-remotenub.cpp: Ditto.
|
|
|
|
2008-01-21 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* test-remotenub.cpp: Add NO_SPRINGBOARD for turning off SpringBoard
|
|
dependency ala NO_ACKS.
|
|
|
|
2008-01-18 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBSocket.h (RNBSocket::RNBSocket): Take either a port # or
|
|
an already-opened socket, with a boolean to indicate which it is.
|
|
* RNBRemote.cpp (RNBRemote::RNBRemote): Ditto.
|
|
* RNBRemote.h: Prototype update.
|
|
* test-remotenub.cpp: Include lockdown.h. Take --lockdown command
|
|
line arg, get the socket from liblockdown.dylib instead of opening
|
|
our own socket if it is specified. --lockdown indicates that
|
|
the program name/args will be provided via remote protocol instead
|
|
of on the command line.
|
|
|
|
2008-01-17 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp: Add NO_ACKS #ifdefs around code that computes
|
|
the checksums and sends/expects the gdb remote protocol ACK packets.
|
|
If NO_ACKS is defined, debugserver will not send or expect acks.
|
|
* test-remotenub.cpp (main): Print a different version string
|
|
if NO_ACKS is defined.
|
|
|
|
2008-01-16 Greg Clayton (gclayton@apple.com)
|
|
|
|
* PThreadEvent.cpp: Added this pointer to all logging calls.
|
|
|
|
2008-01-16 Greg Clayton (gclayton@apple.com)
|
|
|
|
* RNBSocket.cpp (RNBSocket::Connect()): Use TCP so we can try the
|
|
TCP_NODELAY socket option.
|
|
(RNBSocket::SetSocketOption()): New function.
|
|
* RNBSocket.h (RNBSocket::SetSocketOption()): New class function.
|
|
|
|
2008-01-14 Jason Molenda (jmolenda@apple.com)
|
|
|
|
* RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): When printing
|
|
registers, skip over gdb regs which don't map to DNB regs.
|
|
|
|
2008-01-14 Jim Ingham <jingham@apple.com>
|
|
|
|
* ChangeLog - created.
|
|
* RBNContext.h: Added m_arg_vec and accessors.
|
|
* RNBContext.cpp (SetProcessID): New function.
|
|
* RBNRemote.h: Added packet type to HandlePacket & HandleAsyncPacket
|
|
* RNBRemote.cpp (HandlePacket, HandleAsyncPacket): Return type.
|
|
(HandlePacket_A): Fix a few bugs.
|
|
(HandlePacket_H): Return OK if target is not yet running.
|
|
(HandlePacket_q): Return PID of 0 if target is not yet running.
|
|
* testremotenub.cpp (RNBRunLoopGetArgsFromRemote): Implement.
|
|
(RNBRunLoopLaunchInferior): Fetch arguments from context.
|
|
(main) Store arguments in context, call RNBRunLoopGetArgsFromRemote
|
|
if appropriate.
|