summaryrefslogtreecommitdiff
path: root/tools/debugserver/source/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'tools/debugserver/source/ChangeLog')
-rw-r--r--tools/debugserver/source/ChangeLog1515
1 files changed, 1515 insertions, 0 deletions
diff --git a/tools/debugserver/source/ChangeLog b/tools/debugserver/source/ChangeLog
new file mode 100644
index 0000000000000..898f2fba7b04f
--- /dev/null
+++ b/tools/debugserver/source/ChangeLog
@@ -0,0 +1,1515 @@
+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 abstracted 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, resume, 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 exception 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 comparisons 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 register 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.