| 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. |