1*30fdc8d8SChris Lattner2010-01-29  Greg Clayton  <[email protected]>
2*30fdc8d8SChris Lattner
3*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::PrepareForAttach): No longer use the
4*30fdc8d8SChris Lattner	SBSLaunchApplication macro from the SpringBoard.framework, use the actual
5*30fdc8d8SChris Lattner	function name SBSLaunchApplicationForDebugging.
6*30fdc8d8SChris Lattner	(MachProcess::CleanupAfterAttach): Ditto.
7*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Ditto.
8*30fdc8d8SChris Lattner	(debugserver-entitlements.plist): Added the "seatbelt-profiles" entitlement
9*30fdc8d8SChris Lattner	so debugserver can be sandboxed.
10*30fdc8d8SChris Lattner
11*30fdc8d8SChris Lattner2009-07-06  Greg Clayton  <[email protected]>
12*30fdc8d8SChris Lattner
13*30fdc8d8SChris Lattner	* MachTask.cpp (MachTask::GetDYLDAllImageInfosAddress): Hack around bad
14*30fdc8d8SChris Lattner	kernel code that renamed the first member of the TASK_DYLD_INFO without
15*30fdc8d8SChris Lattner	any way to detect it has changed.
16*30fdc8d8SChris Lattner
17*30fdc8d8SChris Lattner2009-06-29  Greg Clayton  <[email protected]>
18*30fdc8d8SChris Lattner
19*30fdc8d8SChris Lattner	* DNB.cpp (GetAllInfosMatchingName): Correctly truncate process name string
20*30fdc8d8SChris Lattner	to MAXCOMLEN when searching kinfo_proc structs for process matches by name.
21*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::PrepareForAttach): Added logging when
22*30fdc8d8SChris Lattner	attaching to a program by name.
23*30fdc8d8SChris Lattner
24*30fdc8d8SChris Lattner2009-06-25  Greg Clayton  <[email protected]>
25*30fdc8d8SChris Lattner
26*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessLaunch): Added a stat on the incoming path that we are
27*30fdc8d8SChris Lattner	about to launch to make sure the file exists. If the file doesn't, then an
28*30fdc8d8SChris Lattner	appropriate error string is returned. Also if we fail to get the task for
29*30fdc8d8SChris Lattner	our process ID, we return an error string right away instead of letting the
30*30fdc8d8SChris Lattner	debug session go for a little bit and then later failing after a few more
31*30fdc8d8SChris Lattner	packets.
32*30fdc8d8SChris Lattner
33*30fdc8d8SChris Lattner2009-04-07  Jim Ingham  <[email protected]>
34*30fdc8d8SChris Lattner
35*30fdc8d8SChris Lattner    * RNBRemote.h: Add vAttachWait
36*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable): Add vattachwait.
37*30fdc8d8SChris Lattner	(RNBRemoteShouldCancelCallback): New function.
38*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_v): Handle vattachwait.
39*30fdc8d8SChris Lattner	* RNBSocket.cpp (RNBSocket::Read): Mark the connection as closed when the
40*30fdc8d8SChris Lattner	port goes away.
41*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessAttachByName): New function.
42*30fdc8d8SChris Lattner	(DNBProcessAttach): Make this handle catching the attach when done and
43*30fdc8d8SChris Lattner	dealing with timeout & return conditions.
44*30fdc8d8SChris Lattner	(GetAllInfos): New function.
45*30fdc8d8SChris Lattner	(GetAlInfosMatchingName): New function.
46*30fdc8d8SChris Lattner	(DNBProcessAttachWait): New function.
47*30fdc8d8SChris Lattner	DNB.h: Declare DNBProcessAttachByName, DNBProcessAttachWait, change
48*30fdc8d8SChris Lattner	signature of DNBProcessAttach.
49*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::PrepareForAttach): New function.
50*30fdc8d8SChris Lattner	(MachProcess::CheckForProcess): New function.
51*30fdc8d8SChris Lattner	(MachProcess::CleanupAfterAttach): New function.
52*30fdc8d8SChris Lattner	(CopyBundleIDForPath): New function.
53*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Convert to using
54*30fdc8d8SChris Lattner	CopyBundleIDForPath.
55*30fdc8d8SChris Lattner	* MachProcess.h: Declare PrepareForAttach, CleanupAfterAttach and
56*30fdc8d8SChris Lattner	CheckForProcess.
57*30fdc8d8SChris Lattner    * DNBTimer.h (TimeOfDayLaterThan): New function.
58*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopGetStartModeFromRemote): Rename from
59*30fdc8d8SChris Lattner	RNBRunLoopGetArgsFromRemote, and handle vattachwait.
60*30fdc8d8SChris Lattner	(RNBRunLoopLaunchAttaching): Code was moved from here into DNBProcessAttach.
61*30fdc8d8SChris Lattner	(StartListening): New function.
62*30fdc8d8SChris Lattner	(GetAllProcessInfos, GetAllProcessInfosMatchingName): Moved to
63*30fdc8d8SChris Lattner	DNBProcess.cpp.
64*30fdc8d8SChris Lattner	(main): Handle attach waitfor, and make debugserver with only a host and
65*30fdc8d8SChris Lattner	port wait on commands from gdb.
66*30fdc8d8SChris Lattner
67*30fdc8d8SChris Lattner2009-04-03  Greg Clayton  <[email protected]>
68*30fdc8d8SChris Lattner
69*30fdc8d8SChris Lattner	* RNBRemote.h (PacketEnum): Added enum for qShlibInfoAddr.
70*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable) Added the qShlibInfoAddr
71*30fdc8d8SChris Lattner	packet definition to m_packets.
72*30fdc8d8SChris Lattner	(RNBRemote::GetPacket): Log when we run into an unimplemented packet.
73*30fdc8d8SChris Lattner	(RNBRemote::HandleReceivedPacket): Only log the packet when logging
74*30fdc8d8SChris Lattner	LOG_RNB_REMOTE.
75*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_q): Add support for the new qShlibInfoAddr packet.
76*30fdc8d8SChris Lattner	* DNB.h (DNBProcessGetSharedLibraryInfoAddress): New prototype.
77*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessGetSharedLibraryInfoAddress): New function.
78*30fdc8d8SChris Lattner	* MachTask.h (MachProcess::GetDYLDAllImageInfosAddress): New prototype.
79*30fdc8d8SChris Lattner	* MachTask.cpp (MachProcess::GetDYLDAllImageInfosAddress): New function.
80*30fdc8d8SChris Lattner
81*30fdc8d8SChris Lattner2009-04-01  Greg Clayton  <[email protected]>
82*30fdc8d8SChris Lattner
83*30fdc8d8SChris Lattner	* test-remotenub.cpp (main): Display the detailed error message if any when
84*30fdc8d8SChris Lattner	attaching fails.
85*30fdc8d8SChris Lattner
86*30fdc8d8SChris Lattner2009-03-25  Greg Clayton  <[email protected]>
87*30fdc8d8SChris Lattner
88*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopGetArgsFromRemote): Cleaned up logging and
89*30fdc8d8SChris Lattner	removed time deltas form the messages.
90*30fdc8d8SChris Lattner	(RNBRunLoopLaunchAttaching): Ditto.
91*30fdc8d8SChris Lattner	(RNBRunLoopLaunchInferior): Ditto and also use new DNBProcessLaunch that
92*30fdc8d8SChris Lattner	takes an error string pointer.
93*30fdc8d8SChris Lattner	* RNBContext.h (class RNBContext): Removed the m_timer member.
94*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::StartProcessStatusThread): Cleaned up logging
95*30fdc8d8SChris Lattner	and removed time deltas form the messages.
96*30fdc8d8SChris Lattner	(RNBContext::ThreadFunctionProcessStatus): Ditto.
97*30fdc8d8SChris Lattner	* RNBSocket.h (class RNBSocket): Removed unused m_last_errno member and
98*30fdc8d8SChris Lattner	accessor functions.
99*30fdc8d8SChris Lattner	* RNBSocket.cpp (RNBSocket::Listen): Cleaned up logging  and
100*30fdc8d8SChris Lattner	removed time deltas form the messages.
101*30fdc8d8SChris Lattner	(RNBSocket::ConnectToService): Ditto.
102*30fdc8d8SChris Lattner	(RNBSocket::Read): Ditto.
103*30fdc8d8SChris Lattner	(RNBSocket::Write): Ditto.
104*30fdc8d8SChris Lattner	(RNBSocket::SaveErrno): Removed.
105*30fdc8d8SChris Lattner	(RNBSocket::ClosePort): Don't call RNBSocket::SaveErrno().
106*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::RNBRemote): Cleaned up logging  and
107*30fdc8d8SChris Lattner	removed time deltas form the messages.
108*30fdc8d8SChris Lattner	(RNBRemote::~RNBRemote): Ditto.
109*30fdc8d8SChris Lattner	(RNBRemote::SendPacket): Ditto.
110*30fdc8d8SChris Lattner	(RNBRemote::GetPacketPayload): Ditto.
111*30fdc8d8SChris Lattner	(RNBRemote::GetPacket): Ditto): Ditto.
112*30fdc8d8SChris Lattner	(RNBRemote::HandleAsyncPacket): Ditto.
113*30fdc8d8SChris Lattner	(RNBRemote::HandleReceivedPacket): Ditto.
114*30fdc8d8SChris Lattner	(RNBRemote::CommDataReceived): Ditto.
115*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessLaunch): Changed to take a eror string pointer with
116*30fdc8d8SChris Lattner	size for more desciptive error reporting (instead of a uint32_t pointer).
117*30fdc8d8SChris Lattner	* DNB.h (DNBProcessLaunch): Ditto.
118*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::AsString): Now returns NULL if there is no error.
119*30fdc8d8SChris Lattner	* DNBError.h (DNBError::SetErrorString): New accessor to allow custom error
120*30fdc8d8SChris Lattner	strings.
121*30fdc8d8SChris Lattner	* arm/DNBArchImpl.cpp (DNBArchMachARM::GetGPRState): Improved logging.
122*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::SBForkChildForPTraceDebugging): Improved
123*30fdc8d8SChris Lattner	error messages when a file doesn't exist, or when unable to extract the
124*30fdc8d8SChris Lattner	CFBundleIdentifier.
125*30fdc8d8SChris Lattner	* PThreadEvent.cpp (class PThreadEvent): Commented out all logging calls.
126*30fdc8d8SChris Lattner
127*30fdc8d8SChris Lattner2009-03-07  Greg Clayton  <[email protected]>
128*30fdc8d8SChris Lattner
129*30fdc8d8SChris Lattner	* test-remotenub.cpp (GetAllProcessInfosMatchingName): New function that
130*30fdc8d8SChris Lattner	returns matching kinfo_proc structs given a process name.
131*30fdc8d8SChris Lattner	(main): Enhanced the --attach option to be able to take a PROCNAME or
132*30fdc8d8SChris Lattner	a PID. Changed the --waitfor=PROCNAME option to ignore any existing
133*30fdc8d8SChris Lattner	processes with PROCNAME so we only catch new process invocations.
134*30fdc8d8SChris Lattner
135*30fdc8d8SChris Lattner2009-03-07  Greg Clayton  <[email protected]>
136*30fdc8d8SChris Lattner
137*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_p): Use the correct get current
138*30fdc8d8SChris Lattner	thread function call so we get the correct thread registers.
139*30fdc8d8SChris Lattner
140*30fdc8d8SChris Lattner2009-03-03  Greg Clayton  <[email protected]>
141*30fdc8d8SChris Lattner
142*30fdc8d8SChris Lattner	* test-remotenub.cpp (g_isatty): New global that gets set to non-zero if
143*30fdc8d8SChris Lattner	STDOUT is a TTY in the beginning of main.
144*30fdc8d8SChris Lattner	(RNBLogSTDOUT): New macro that logs to STDOUT if g_isatty is non-zero, else
145*30fdc8d8SChris Lattner	it logs to asl.
146*30fdc8d8SChris Lattner	(RNBLogSTDERR): New macro that logs to STDERR if g_isatty is non-zero, else
147*30fdc8d8SChris Lattner	it logs to asl.
148*30fdc8d8SChris Lattner	(RNBRunLoopGetArgsFromRemote): Use new RNBLogSTDOUT/RNBLogSTDERR macros.
149*30fdc8d8SChris Lattner	(GetAllProcessInfos): Get all process info structs for everything on the
150*30fdc8d8SChris Lattner	system.
151*30fdc8d8SChris Lattner	(main): Implemented new --waitfor=NAME option to allow waiting for a process
152*30fdc8d8SChris Lattner	to run by polling the system processes. The new --waitfor-interval=N option
153*30fdc8d8SChris Lattner	allows fine control over the polling interval where N is the number of mirco
154*30fdc8d8SChris Lattner	seconds (usec) to wait between polls (defaults to 1000). The new
155*30fdc8d8SChris Lattner	--waitfor-duration=N allows	a timeout in seconds to be specified when
156*30fdc8d8SChris Lattner	waiting for a process (defaults	to infinite).
157*30fdc8d8SChris Lattner
158*30fdc8d8SChris Lattner2009-03-02  Greg Clayton  <[email protected]>
159*30fdc8d8SChris Lattner
160*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup):
161*30fdc8d8SChris Lattner	Take care of a case where no instructions execute in a Thumb IT block and
162*30fdc8d8SChris Lattner	the last of which is a branch.
163*30fdc8d8SChris Lattner
164*30fdc8d8SChris Lattner2009-02-10  Greg Clayton  <[email protected]>
165*30fdc8d8SChris Lattner
166*30fdc8d8SChris Lattner	* RNBRemote.h (PacketEnum): Added 'detach' enumeration.
167*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_D): New member function prototype.
168*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable): Added detach support.
169*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_D): New function for detach support.
170*30fdc8d8SChris Lattner
171*30fdc8d8SChris Lattner2009-02-10  Greg Clayton  <[email protected]>
172*30fdc8d8SChris Lattner
173*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_UNIMPLEMENTED): Log this
174*30fdc8d8SChris Lattner	packet with the packet that is unimplemented.
175*30fdc8d8SChris Lattner	(RNBRemote::GetPacket): Call RNBRemote::HandlePacket_UNIMPLEMENTED()
176*30fdc8d8SChris Lattner	when we don't recognize a packet.
177*30fdc8d8SChris Lattner	(RNBRemote::HandleReceivedPacket): Don't reply to packets we don't
178*30fdc8d8SChris Lattner	recognize with unimplemented in this fucntion as that should have
179*30fdc8d8SChris Lattner	already been done for us in RNBRemote::GetPacket().
180*30fdc8d8SChris Lattner
181*30fdc8d8SChris Lattner2009-02-10  Greg Clayton  <[email protected]>
182*30fdc8d8SChris Lattner
183*30fdc8d8SChris Lattner	* RNBRemote.h (PacketEnum): Added query_step_packet_supported.
184*30fdc8d8SChris Lattner	* RNBRemot.cpp (RNBRemote::CreatePacketTable): Added new
185*30fdc8d8SChris Lattner	qStepPacketSupported packet.
186*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_q): Added support for the new
187*30fdc8d8SChris Lattner	"qStepPacketSupported" packet.
188*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_G): Some cleanup when reading registers
189*30fdc8d8SChris Lattner	to avoid spurious console logging.
190*30fdc8d8SChris Lattner
191*30fdc8d8SChris Lattner2009-01-30  Greg Clayton  <[email protected]>
192*30fdc8d8SChris Lattner
193*30fdc8d8SChris Lattner	* debugserver-entitlements.plist: Changed the entitlement
194*30fdc8d8SChris Lattner	"run-invalid-allow" to "run-unsigned-code".
195*30fdc8d8SChris Lattner
196*30fdc8d8SChris Lattner2009-01-23  Greg Clayton  <[email protected]>
197*30fdc8d8SChris Lattner
198*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup):
199*30fdc8d8SChris Lattner	Merged Yusuf's changes to make software single stepping work.
200*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Call new
201*30fdc8d8SChris Lattner	DNBResolveExecutablePath function to resolve executable paths.
202*30fdc8d8SChris Lattner	* DNB.h (DNBResolveExecutablePath): New function prototype.
203*30fdc8d8SChris Lattner	* DNB.cpp (DNBResolveExecutablePath): New function that will resolve
204*30fdc8d8SChris Lattner	relative paths and also executable paths for executables that aren't relative
205*30fdc8d8SChris Lattner	but yet are in the shell PATH environment variable.
206*30fdc8d8SChris Lattner
207*30fdc8d8SChris Lattner2009-01-22  Greg Clayton  <[email protected]>
208*30fdc8d8SChris Lattner
209*30fdc8d8SChris Lattner	* DNBArchImpl.h (class DBNArchMachARM): Renamed member variable
210*30fdc8d8SChris Lattner	m_chained_hw_single_step_addr to m_hw_single_chained_step_addr. Added
211*30fdc8d8SChris Lattner	new member variables: m_sw_single_step_itblock_break_id, m_last_decode_pc,
212*30fdc8d8SChris Lattner	and m_sw_single_step_itblock_break_count. Renamed m_thumbStaticData to
213*30fdc8d8SChris Lattner	m_last_decode_thumb, and renamed m_decodedInstruction to m_last_decode_arm.
214*30fdc8d8SChris Lattner	(DBNArchMachARM::DecodeITBlockInstructions): New prototype.
215*30fdc8d8SChris Lattner	(DBNArchMachARM::DecodeInstructionUsingDisassembler): New prototype.
216*30fdc8d8SChris Lattner    (DBNArchMachARM::BreakpointHit): New prototype.
217*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::ThreadDidStop): Disable any of the
218*30fdc8d8SChris Lattner	many software single step breakpoints if any are set.
219*30fdc8d8SChris Lattner	(DNBArchMachARM::StepNotComplete): Changed renamed member accesses.
220*30fdc8d8SChris Lattner	(DNBArchMachARM::DecodeITBlockInstructions): New function for software
221*30fdc8d8SChris Lattner	single stepping through Thumb IT blocks.
222*30fdc8d8SChris Lattner	(DNBArchMachARM::EnableHardwareSingleStep): Cleaned up logging.
223*30fdc8d8SChris Lattner	(DNBArchMachARM::ComputeNextPC): Ditto.
224*30fdc8d8SChris Lattner	(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): Now
225*30fdc8d8SChris Lattner	properly handles Thumb IT software single stepping.
226*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Ditto.
227*30fdc8d8SChris Lattner	(DNBArchMachARM::DecodeInstructionUsingDisassembler): New function.
228*30fdc8d8SChris Lattner	(DNBArchMachARM::BreakpointHit): New breakpoint callback function.
229*30fdc8d8SChris Lattner
230*30fdc8d8SChris Lattner2009-01-21  Greg Clayton  <[email protected]>
231*30fdc8d8SChris Lattner
232*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::PrivateResume): Set the process state before
233*30fdc8d8SChris Lattner	we actually resume so we are sure to get the events in the correct order.
234*30fdc8d8SChris Lattner
235*30fdc8d8SChris Lattner2009-01-16  Greg Clayton  <[email protected]>
236*30fdc8d8SChris Lattner
237*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): Include only
238*30fdc8d8SChris Lattner	registers which are to be expedited in the T packets.
239*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_p): Enable for all targets.
240*30fdc8d8SChris Lattner	(struct register_map_entry): Added an expedite member so we know which
241*30fdc8d8SChris Lattner	registers need to be sent up to the host with each stop reply packet.
242*30fdc8d8SChris Lattner	(register_map): Updated each array members' expedite member with an
243*30fdc8d8SChris Lattner	appropriate value.
244*30fdc8d8SChris Lattner
245*30fdc8d8SChris Lattner2009-01-16  Greg Clayton  <[email protected]>
246*30fdc8d8SChris Lattner
247*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_s): Enabled the step command ("s"
248*30fdc8d8SChris Lattner	packet) for ARM now that libdebugnub.dylib can do both hardware and software
249*30fdc8d8SChris Lattner	single stepping.
250*30fdc8d8SChris Lattner
251*30fdc8d8SChris Lattner2009-01-13  Greg Clayton  <[email protected]>
252*30fdc8d8SChris Lattner
253*30fdc8d8SChris Lattner	*DNBArchImpl.cpp (bit): New function.
254*30fdc8d8SChris Lattner	(bits): New function.
255*30fdc8d8SChris Lattner	(DNBArchMachARM::ConditionPassed): Use new "bit" function.
256*30fdc8d8SChris Lattner	(DNBArchMachARM::ComputeNextPC): Use new "bit" function, remove inline
257*30fdc8d8SChris Lattner	assembly for "RSC" instruction so this compiles for armv7 (which defaults
258*30fdc8d8SChris Lattner	to thumb)
259*30fdc8d8SChris Lattner	(DNBArchMachARM::NumSupportedHardwareBreakpoints): Use new "bits" function.
260*30fdc8d8SChris Lattner	(DNBArchMachARM::NumSupportedHardwareWatchpoints): Use new "bits" function.
261*30fdc8d8SChris Lattner
262*30fdc8d8SChris Lattner2009-01-12  Greg Clayton  <[email protected]>
263*30fdc8d8SChris Lattner
264*30fdc8d8SChris Lattner	* DNBArch.h (DNBArchProtocol::NumSupportedHardwareBreakpoints()): Removed
265*30fdc8d8SChris Lattner	the "const" qualifier to allow arches to auto detect how many hardware
266*30fdc8d8SChris Lattner	breakpoints they have.
267*30fdc8d8SChris Lattner	(DNBArchProtocol::NumSupportedHardwareWatchpoints()): Removed the "const"
268*30fdc8d8SChris Lattner	qualifier to allow arches to auto detect how many hardware watchpoints they
269*30fdc8d8SChris Lattner	have.
270*30fdc8d8SChris Lattner	* DNBArchImpl.h (DNBArchMachARM::NumSupportedHardwareBreakpoints()): Auto
271*30fdc8d8SChris Lattner	detect how many BRP pairs are avialable and disable for armv7 for the time
272*30fdc8d8SChris Lattner	being (rdar://problem/6372672).
273*30fdc8d8SChris Lattner	(DNBArchMachARM::NumSupportedHardwareWatchpoints()): Auto detect how many
274*30fdc8d8SChris Lattner	WRP pairs are avialable and disable for armv7 for the time being
275*30fdc8d8SChris Lattner	(rdar://problem/6372672).
276*30fdc8d8SChris Lattner
277*30fdc8d8SChris Lattner2009-01-09  Greg Clayton  <[email protected]>
278*30fdc8d8SChris Lattner
279*30fdc8d8SChris Lattner	* test-remotenub.cpp (main): Filled in short argument versions for
280*30fdc8d8SChris Lattner	--applist (-t) and --lockdown (-k) options.
281*30fdc8d8SChris Lattner	* DNBArchImpl.h (DNBArchMachARM::ConditionPassed): New protected
282*30fdc8d8SChris Lattner	member function.
283*30fdc8d8SChris Lattner	(DNBArchMachARM::ComputeNextPC): New protected member function.
284*30fdc8d8SChris Lattner	(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): New
285*30fdc8d8SChris Lattner	protected member function.
286*30fdc8d8SChris Lattner	(DNBArchMachARM::m_thumbStaticData): New protected member variable.
287*30fdc8d8SChris Lattner	(DNBArchMachARM::m_decodedInstruction): New protected member variable.
288*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::ThreadDidStop): Added extra code that
289*30fdc8d8SChris Lattner	will log and exit when we are verifying software single stepping (a
290*30fdc8d8SChris Lattner	compile time option).
291*30fdc8d8SChris Lattner	(DNBArchMachARM::ConditionPassed): New function.
292*30fdc8d8SChris Lattner	(DNBArchMachARM::ComputeNextPC): New function.
293*30fdc8d8SChris Lattner	(DNBArchMachARM::EvaluateNextInstructionForSoftwareBreakpointSetup): New
294*30fdc8d8SChris Lattner	function.
295*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Added the guts of the
296*30fdc8d8SChris Lattner	software single stepping.
297*30fdc8d8SChris Lattner	(DNBArchMachARM::NumSupportedHardwareBreakpoints): Prepared for adding
298*30fdc8d8SChris Lattner	auto detection code.
299*30fdc8d8SChris Lattner	(DNBArchMachARM::NumSupportedHardwareWatchpoints): Prepared for adding
300*30fdc8d8SChris Lattner	auto detection code.
301*30fdc8d8SChris Lattner
302*30fdc8d8SChris Lattner2008-12-11  Greg Clayton  <[email protected]>
303*30fdc8d8SChris Lattner
304*30fdc8d8SChris Lattner	* DNB.h (DNBProcessWaitForEvent): Renamed to DNBProcessWaitForEvents.
305*30fdc8d8SChris Lattner	(DNBProcessSetEvents): Removed (deprecated).
306*30fdc8d8SChris Lattner	(DNBProcessGetWaitForResetMask): Removed (unused).
307*30fdc8d8SChris Lattner	(DNBProcessSetWaitForResetMask): Removed (unused).
308*30fdc8d8SChris Lattner	(DNBProcessInterruptEvents): New function prototype.
309*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessWaitForEvent): Renamed to DNBProcessWaitForEvents.
310*30fdc8d8SChris Lattner	(DNBProcessSetEvents): Removed (deprecated).
311*30fdc8d8SChris Lattner	(DNBProcessGetWaitForResetMask): Removed (unused).
312*30fdc8d8SChris Lattner	(DNBProcessSetWaitForResetMask): Removed (unused).
313*30fdc8d8SChris Lattner	(DNBProcessInterruptEvents): New function that can be used to
314*30fdc8d8SChris Lattner	asynchronously interrupt infinite wait for events calls.
315*30fdc8d8SChris Lattner	RNBRemote.cpp (RNBRemote::HandlePacket_v): Call DNBProcessWaitForEvents.
316*30fdc8d8SChris Lattner	RNBContext.cpp (RNBContext::ThreadFunctionProcessStatus): Ditto.
317*30fdc8d8SChris Lattner	test-remotenub.cpp (RNBRunLoopLaunchInferior): Ditto.
318*30fdc8d8SChris Lattner	(RNBRunLoopLaunchAttaching): Ditto.
319*30fdc8d8SChris Lattner
320*30fdc8d8SChris Lattner2008-12-11  Greg Clayton  <[email protected]>
321*30fdc8d8SChris Lattner
322*30fdc8d8SChris Lattner	* DNB.cpp (GetProcessMap): Use new PTHREAD_MUTEX_LOCKER macro to ease
323*30fdc8d8SChris Lattner	debugging of deadlocks.
324*30fdc8d8SChris Lattner	(DNBProcessLaunch): Improved logging.
325*30fdc8d8SChris Lattner	(DNBProcessMemoryRead): Call MachProcess::ReadMemory so breakpoint
326*30fdc8d8SChris Lattner	opcodes can be removed from memory.
327*30fdc8d8SChris Lattner	(DNBProcessMemoryWrite): Call MachProcess::WriteMemory so that we work
328*30fdc8d8SChris Lattner	around enabled software breakpoint traps.
329*30fdc8d8SChris Lattner	* DNBLog.cpp (GetLogThreadedMutex): New function.
330*30fdc8d8SChris Lattner	(_DNBLogThreaded): Use new PTHREAD_MUTEX_LOCKER macro to ease
331*30fdc8d8SChris Lattner	debugging of deadlocks.
332*30fdc8d8SChris Lattner	(_DNBLogThreadedIf): Ditto.
333*30fdc8d8SChris Lattner	* DNBBreakpoint.h (DNBBreakpoint::IntersectsRange): New function.
334*30fdc8d8SChris Lattner	* DNBBreakpoint.cpp	(DNBBreakpointList::FindIDByAddress): Improved
335*30fdc8d8SChris Lattner	logging.
336*30fdc8d8SChris Lattner	* MacOSX/MachThread.cpp (MachThread::MachThread): Improved logging.
337*30fdc8d8SChris Lattner	(MachThread::~MachThread): Ditto.
338*30fdc8d8SChris Lattner	(MachThread::Suspend): Ditto.
339*30fdc8d8SChris Lattner	(MachThread::Resume): Ditto.
340*30fdc8d8SChris Lattner	(MachThread::RestoreSuspendCount): Ditto.
341*30fdc8d8SChris Lattner	(MachThread::GetState): Use new PTHREAD_MUTEX_LOCKER macro to ease
342*30fdc8d8SChris Lattner	debugging of deadlocks.
343*30fdc8d8SChris Lattner	(MachThread::SetState): Ditto.
344*30fdc8d8SChris Lattner	* MacOSX/MachVMMemory.cpp (MachVMMemory::Read): Improved logging.
345*30fdc8d8SChris Lattner	(MachVMMemory::Write): Ditto.
346*30fdc8d8SChris Lattner	(MachVMMemory::WriteRegion): Ditto.
347*30fdc8d8SChris Lattner	* MacOSX/MachProcess.cpp (MachProcess::GetState): Use new
348*30fdc8d8SChris Lattner	PTHREAD_MUTEX_LOCKER macro to ease debugging of deadlocks.
349*30fdc8d8SChris Lattner	(MachProcess::SetState): Ditto.
350*30fdc8d8SChris Lattner	(MachProcess::Clear): Ditto.
351*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Ditto.
352*30fdc8d8SChris Lattner	(MachProcess::ReplyToAllExceptions): Ditto.
353*30fdc8d8SChris Lattner	(MachProcess::ExceptionMessageReceived): Ditto.
354*30fdc8d8SChris Lattner	(MachProcess::AppendSTDOUT): Ditto.
355*30fdc8d8SChris Lattner	(MachProcess::GetAvailableSTDOUT): Ditto.
356*30fdc8d8SChris Lattner	(MachProcess::ThreadFunctionSTDIO): Renamed from to
357*30fdc8d8SChris Lattner	MachProcess::STDIOThread.
358*30fdc8d8SChris Lattner	(MachProcess::StartSTDIOThread): Improved logging.
359*30fdc8d8SChris Lattner	(MachProcess::CreateBreakpoint): Ditto.
360*30fdc8d8SChris Lattner	(MachProcess::CreateWatchpoint): Ditto.
361*30fdc8d8SChris Lattner	(MachProcess::DisableAllBreakpoints): Ditto.
362*30fdc8d8SChris Lattner	(MachProcess::DisableBreakpoint): Ditto.
363*30fdc8d8SChris Lattner	(MachProcess::DisableWatchpoint): Ditto.
364*30fdc8d8SChris Lattner	(MachProcess::EnableBreakpoint): Ditto.
365*30fdc8d8SChris Lattner	(MachProcess::EnableWatchpoint): Ditto.
366*30fdc8d8SChris Lattner	(MachProcess::LaunchForDebug): Ditto.
367*30fdc8d8SChris Lattner	(MachProcess::PosixSpawnChildForPTraceDebugging): Ditto.
368*30fdc8d8SChris Lattner	(MachProcess::Detach): Reset the running event bit after resuming prior
369*30fdc8d8SChris Lattner	to issuing the SIGSTOP to avoid a pause.
370*30fdc8d8SChris Lattner	(MachProcess::RemoveTrapsFromBuffer): New function that removes
371*30fdc8d8SChris Lattner	breakpoint traps from a memory buffer.
372*30fdc8d8SChris Lattner	(MachProcess::ReadMemory): Read memory from the task, then removes any
373*30fdc8d8SChris Lattner	breakpoint traps prior to returning the buffer.
374*30fdc8d8SChris Lattner	(MachProcess::WriteMemory): Write memory and any needed data to the
375*30fdc8d8SChris Lattner	breakpoint saved opcodes for any software breakpoint traps that are
376*30fdc8d8SChris Lattner	enabled.
377*30fdc8d8SChris Lattner	* MacOSX/MachProcess.h (MachProcess::ThreadFunctionException): Removed.
378*30fdc8d8SChris Lattner	(MachProcess::ThreadFunctionSTDIO): Renamed to MachProcess::STDIOThread().
379*30fdc8d8SChris Lattner	(MachProcess::RemoveTrapsFromBuffer): New function.
380*30fdc8d8SChris Lattner	* MacOSX/MachVMRegion.cpp (MachVMRegion::SetProtections): Improved
381*30fdc8d8SChris Lattner	logging.
382*30fdc8d8SChris Lattner	(MachVMRegion::RestoreProtections): Ditto.
383*30fdc8d8SChris Lattner	(MachVMRegion::GetRegionForAddress): Ditto.
384*30fdc8d8SChris Lattner	* MacOSX/MachException.cpp (catch_mach_exception_raise_state): Improved
385*30fdc8d8SChris Lattner	logging.
386*30fdc8d8SChris Lattner	(catch_mach_exception_raise_state_identity): Ditto.
387*30fdc8d8SChris Lattner	(catch_mach_exception_raise): Ditto.
388*30fdc8d8SChris Lattner	(MachException::Message::Dump): Ditto.
389*30fdc8d8SChris Lattner	(MachException::Data::GetStopInfo): Ditto.
390*30fdc8d8SChris Lattner	(MachException::Message::Receive): Ditto.
391*30fdc8d8SChris Lattner	(MachException::Message::Reply): Ditto.
392*30fdc8d8SChris Lattner	(MachException::Data::Dump): Ditto.
393*30fdc8d8SChris Lattner	(MachException::PortInfo::Save): Ditto.
394*30fdc8d8SChris Lattner	(MachException::PortInfo::Restore): Ditto.
395*30fdc8d8SChris Lattner	* MacOSX/MachTask.cpp (MachTask::Suspend): Improved logging.
396*30fdc8d8SChris Lattner	(MachTask::Resume): Ditto.
397*30fdc8d8SChris Lattner	(MachTask::ReadMemory): Ditto.
398*30fdc8d8SChris Lattner	(MachTask::WriteMemory): Ditto.
399*30fdc8d8SChris Lattner	(MachTask::TaskPortForProcessID): Ditto.
400*30fdc8d8SChris Lattner	(MachTask::BasicInfo): Ditto.
401*30fdc8d8SChris Lattner	(MachTask::StartExceptionThread): Ditto.
402*30fdc8d8SChris Lattner	(MachTask::ShutDownExcecptionThread): Ditto and use pthread_cancel to
403*30fdc8d8SChris Lattner	interrupt the exception thread.
404*30fdc8d8SChris Lattner	(MachTask::ExceptionThread): Ditto and revert back to infinite timeout
405*30fdc8d8SChris Lattner	as pthread_cancel will break us out of infinite mach_msg receive calls.
406*30fdc8d8SChris Lattner	* MacOSX/MachThreadList.cpp	(MachThreadList::UpdateThreadList): Improved
407*30fdc8d8SChris Lattner	logging.
408*30fdc8d8SChris Lattner	(MachThreadList::CurrentThread): Use new PTHREAD_MUTEX_LOCKER macro to
409*30fdc8d8SChris Lattner	ease debugging of deadlocks.
410*30fdc8d8SChris Lattner	* DNBTimer.h (DNBTimer::DNBTimer): Initialize the mutex with a recursive
411*30fdc8d8SChris Lattner	pthread.
412*30fdc8d8SChris Lattner	(DNBTimer::Reset): Use new PTHREAD_MUTEX_LOCKER macro to ease debugging
413*30fdc8d8SChris Lattner	of deadlocks.
414*30fdc8d8SChris Lattner	(DNBTimer::TotalMicroSeconds): Ditto.
415*30fdc8d8SChris Lattner	(DNBTimer::GetTime): Ditto.
416*30fdc8d8SChris Lattner	(DNBTimer::ElapsedMicroSeconds): Ditto.
417*30fdc8d8SChris Lattner	(DNBTimer::GetTimeOfDay): New class function.
418*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::LogThreaded): Improved logging.
419*30fdc8d8SChris Lattner	* test-dbgnub.cpp
420*30fdc8d8SChris Lattner	* PThreadMutex.h: Added the ability to debug deadlocks by defining
421*30fdc8d8SChris Lattner	DEBUG_PTHREAD_MUTEX_DEADLOCKS.
422*30fdc8d8SChris Lattner	* FunctionProfiler.cpp
423*30fdc8d8SChris Lattner	* PThreadEvent.cpp (PThreadEvent::NewEventBit): Use new
424*30fdc8d8SChris Lattner	PTHREAD_MUTEX_LOCKER macro to ease debugging of deadlocks.
425*30fdc8d8SChris Lattner	(PThreadEvent::FreeEventBits): Ditto.
426*30fdc8d8SChris Lattner	(PThreadEvent::GetEventBits): Ditto.
427*30fdc8d8SChris Lattner	(PThreadEvent::ReplaceEventBits): Ditto.
428*30fdc8d8SChris Lattner	(PThreadEvent::SetEvents): Ditto.
429*30fdc8d8SChris Lattner	(PThreadEvent::ResetEvents): Ditto.
430*30fdc8d8SChris Lattner	(PThreadEvent::WaitForSetEvents): Ditto.
431*30fdc8d8SChris Lattner	(PThreadEvent::WaitForEventsToReset): Ditto.
432*30fdc8d8SChris Lattner
433*30fdc8d8SChris Lattner2008-12-05  Greg Clayton  <[email protected]>
434*30fdc8d8SChris Lattner
435*30fdc8d8SChris Lattner	* DNBDefs.h (LOG_TASK): New log bit.
436*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessIsAlive): User newly abtracted MachTask class.
437*30fdc8d8SChris Lattner	(DNBProcessMemoryRead): Ditto.
438*30fdc8d8SChris Lattner	(DNBProcessMemoryWrite): Ditto.
439*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::EnableHardwareSingleStep): Ditto.
440*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints) Ditto.
441*30fdc8d8SChris Lattner	* MachException.cpp (MachException::Message::Receive): Cleaned up logging
442*30fdc8d8SChris Lattner	so it doesn't always log timeout errors.
443*30fdc8d8SChris Lattner	(MachException::Message::Reply): Use abstracted MachTask class for any
444*30fdc8d8SChris Lattner	task related queries.
445*30fdc8d8SChris Lattner	(MachException::PortInfo::Save): Cleaned up logging.
446*30fdc8d8SChris Lattner	(MachException::PortInfo::Restore): Cleaned up logging and now return an
447*30fdc8d8SChris Lattner	error instead of the number of restored port infos.
448*30fdc8d8SChris Lattner	* MachProcess.cpp (class MachProcess): Abstracted out all of the task_t
449*30fdc8d8SChris Lattner	related stuff (suspend, resuyme, exception ports, exception thread, and
450*30fdc8d8SChris Lattner	more) into a new class MachTask.
451*30fdc8d8SChris Lattner	(MachProcess::Task): Now returns a reference to a MachTask class.
452*30fdc8d8SChris Lattner	(MachProcess::Clear): Uses new abstracted MachTask class.
453*30fdc8d8SChris Lattner	(MachProcess::Detach): Ditto.
454*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Ditto.
455*30fdc8d8SChris Lattner	(MachProcess::DisableBreakpoint): Ditto.
456*30fdc8d8SChris Lattner	(MachProcess::ExceptionMessageReceived): Ditto.
457*30fdc8d8SChris Lattner	(MachProcess::ExceptionMessageBundleComplete): Ditto.
458*30fdc8d8SChris Lattner	(MachProcess::AttachForDebug): Ditto.
459*30fdc8d8SChris Lattner	(MachProcess::LaunchForDebug): Ditto.
460*30fdc8d8SChris Lattner	(MachProcess::SBLaunchForDebug): Ditto.
461*30fdc8d8SChris Lattner	(MachProcess::TaskIsValid): Removed (replaced by similar functionality
462*30fdc8d8SChris Lattner	in the new MachTask class).
463*30fdc8d8SChris Lattner	(MachProcess::ExceptionPort): Ditto.
464*30fdc8d8SChris Lattner	(MachProcess::ExceptionPortIsValid): Ditto.
465*30fdc8d8SChris Lattner	(MachProcess::StartExceptionThread): Ditto.
466*30fdc8d8SChris Lattner	(MachProcess::Suspend): Ditto.
467*30fdc8d8SChris Lattner	(MachProcess::TaskResume): Ditto.
468*30fdc8d8SChris Lattner	(MachProcess::TaskBasicInfo): Ditto.
469*30fdc8d8SChris Lattner	(MachProcess::TaskBasicInfo): Ditto.
470*30fdc8d8SChris Lattner	(MachProcess::ReadMemory): Ditto.
471*30fdc8d8SChris Lattner	(MachProcess::WriteMemory): Ditto.
472*30fdc8d8SChris Lattner	(MachProcess::ThreadFunctionException): Ditto.
473*30fdc8d8SChris Lattner
474*30fdc8d8SChris Lattner2008-12-04  Greg Clayton  <[email protected]>
475*30fdc8d8SChris Lattner
476*30fdc8d8SChris Lattner	* DNB.h (DNBProcessSetEvents): New API function prototype.
477*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessSetEvents): New API function.
478*30fdc8d8SChris Lattner	(DNBProcessHalt): Send our process a SIGINT instead of suspending
479*30fdc8d8SChris Lattner	the task.
480*30fdc8d8SChris Lattner	* DNBDefs.h (NUB_STATE_IS_STOPPED): Removed up duplicate entry in macro.
481*30fdc8d8SChris Lattner	(eEventPrcoessAsyncInterrupt): New prcoess event bit that allows async
482*30fdc8d8SChris Lattner	interrupting of infinite DNBProcessWaitForEvent() function calls.
483*30fdc8d8SChris Lattner	* MachException.cpp (MachException::Message::Receive): Improved logging.
484*30fdc8d8SChris Lattner	(MachException::Message::Reply): Improved logging.
485*30fdc8d8SChris Lattner	* MachProcess.h (MachProcess::TaskBasicInfo): New member and static
486*30fdc8d8SChris Lattner	functions.
487*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::TaskIsValid): Use new TaskBasicInfo()
488*30fdc8d8SChris Lattner	member function.
489*30fdc8d8SChris Lattner	(MachProcess::Resume): Removed the detach parameter from the PrivateResume()
490*30fdc8d8SChris Lattner	function call.
491*30fdc8d8SChris Lattner	(MachProcess::Kill): Added a absolute timeout pointer to allow callers to
492*30fdc8d8SChris Lattner	wait for the signal to be received if the timeout is non-NULL.
493*30fdc8d8SChris Lattner	(MachProcess::TaskBasicInfo): New member and static function.
494*30fdc8d8SChris Lattner	(MachProcess::TaskResume): New function that resumes the task by making sure
495*30fdc8d8SChris Lattner	the suspend count is correctly ref counted.
496*30fdc8d8SChris Lattner	(MachProcess::Detach): When detaching from a process make sure it is
497*30fdc8d8SChris Lattner	stopped (SIGSTOP) first, then we can successfully detach. The exception
498*30fdc8d8SChris Lattner	thread now also properly exits.
499*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Call new TaskResume function, and removed the
500*30fdc8d8SChris Lattner	detach functionality.
501*30fdc8d8SChris Lattner	(MachProcess::DisableBreakpoint): Only notify the thread list that a
502*30fdc8d8SChris Lattner	breakpoint has changed if the breakpoint is going to be removed.
503*30fdc8d8SChris Lattner	(MachProcess::ThreadFunctionException): Added a permanent 1 second timeout
504*30fdc8d8SChris Lattner	for each call to mach_msg() so we can exit the thread in the event that
505*30fdc8d8SChris Lattner	we detach from a process/task.
506*30fdc8d8SChris Lattner	* test-debugnub (main): Modified to show an example of how to detach using
507*30fdc8d8SChris Lattner	a signal_handler to asynchronously receive a SIGINT and properly interrupt
508*30fdc8d8SChris Lattner	and detach from a running process.
509*30fdc8d8SChris Lattner
510*30fdc8d8SChris Lattner2008-11-26  Greg Clayton  <[email protected]>
511*30fdc8d8SChris Lattner
512*30fdc8d8SChris Lattner	* DNBDefs.h (LOG_STEP): New logging define.
513*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::LogThreaded): If there is no error, then
514*30fdc8d8SChris Lattner	log with "success: " as a prefix instead of "error: ".
515*30fdc8d8SChris Lattner	* arm/DBNArchImpl.cpp (DNBArchMachARM::EnableHardwareSingleStep): Log using
516*30fdc8d8SChris Lattner	new LOG_STEP instead of LOG_BREAKPOINTS.
517*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): Ditto.
518*30fdc8d8SChris Lattner	* MachException.cpp (MachException::Message::Dump): Log excetion header
519*30fdc8d8SChris Lattner	and reply header on two separate lines.
520*30fdc8d8SChris Lattner	* MachProcess.cpp (IsSBProcess): Check for NULL CFArrayRef returned from
521*30fdc8d8SChris Lattner	SBSCopyApplicationDisplayIdentifiers for SkankPhone.
522*30fdc8d8SChris Lattner	(MachProcess::Suspend): Check if process state is not running instead of
523*30fdc8d8SChris Lattner	having to receive an event after a timeout if one is given.
524*30fdc8d8SChris Lattner	(MachProcess::Detach): Deallocate the exception port when detaching and
525*30fdc8d8SChris Lattner	restore the inferior task exception ports prior to clearing and detaching.
526*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Grab the task's basic info and make sure we
527*30fdc8d8SChris Lattner	get the resume the correct number of times.
528*30fdc8d8SChris Lattner	(MachProcess::DisableBreakpoint): Removed unused variable opcode_restored
529*30fdc8d8SChris Lattner	and make sure the breakpoint is enabled before we start warning that
530*30fdc8d8SChris Lattner	our opcode wasn't there.
531*30fdc8d8SChris Lattner	* ppc/DBNArchImpl.cpp (DNBArchMachPPC::EnableHardwareSingleStep): Log
532*30fdc8d8SChris Lattner	using LOG_STEP instead of LOAD_BREAKPOINTS.
533*30fdc8d8SChris Lattner	* RNBServices.cpp (IsSBProcess): Check for NULL CFArrayRef returned from
534*30fdc8d8SChris Lattner	SBSCopyApplicationDisplayIdentifiers for SkankPhone.
535*30fdc8d8SChris Lattner
536*30fdc8d8SChris Lattner2008-11-26  Greg Clayton  <[email protected]>
537*30fdc8d8SChris Lattner
538*30fdc8d8SChris Lattner	* MachProcess.h (MachProcess::Suspend): Now takes an optional absolute
539*30fdc8d8SChris Lattner	timeout that, if non-NULL, will case the function to return after the
540*30fdc8d8SChris Lattner	process has been suspended and is in a stopped state. If the timeout is
541*30fdc8d8SChris Lattner	NULL, then no waiting will occur.
542*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::Suspend): Ditto.
543*30fdc8d8SChris Lattner	(MachProcess::Detach): Now replies to all exceptions, un-suspends all
544*30fdc8d8SChris Lattner	threads and resumes the task.
545*30fdc8d8SChris Lattner	(MachProcess::ReplyToAllExceptions): New function.
546*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Now takes an additional parameter named
547*30fdc8d8SChris Lattner	detach that will do the right thing when detaching from a process.
548*30fdc8d8SChris Lattner	* DNBArchImpl.h (DNBArchMachI386::ThreadWillResume): Returns void.
549*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachI386::ThreadWillResume): Returns void.
550*30fdc8d8SChris Lattner	* RNBServices.cpp (ListApplications): #ifdef-ed for ARM only as it
551*30fdc8d8SChris Lattner	currently uses SpringBoard.
552*30fdc8d8SChris Lattner	(IsSBProcess): Ditto.
553*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): #ifdef-ed around
554*30fdc8d8SChris Lattner	ARM parts so it compiles for i386.
555*30fdc8d8SChris Lattner	(main): Ditto.
556*30fdc8d8SChris Lattner
557*30fdc8d8SChris Lattner2008-11-24  Greg Clayton  <[email protected]>
558*30fdc8d8SChris Lattner
559*30fdc8d8SChris Lattner	* DNBArchProtocol.h (DNBArchProtocol::ThreadWillResume): Now returns void.
560*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::ThreadWillResume): Returns void and
561*30fdc8d8SChris Lattner	has hollowed out support for software single step.
562*30fdc8d8SChris Lattner	(DNBArchMachARM::ThreadDidStop): Has a debug mode that uses hardware single
563*30fdc8d8SChris Lattner	step to verify software single step that can be enabled by defining
564*30fdc8d8SChris Lattner	DNB_ARCH_MACH_ARM_DEBUG_SW_STEP.
565*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): New function.
566*30fdc8d8SChris Lattner	* DNBArchImpl.h (DNBArchMachARM::ThreadWillResume): Returns void.
567*30fdc8d8SChris Lattner	(DNBArchMachARM::SetSingleStepSoftwareBreakpoints): New prototype.
568*30fdc8d8SChris Lattner	(DNBArchMachARM::m_sw_single_step_next_pc): New member variable.
569*30fdc8d8SChris Lattner	(DNBArchMachARM::m_sw_single_step_break_id): New member variable.
570*30fdc8d8SChris Lattner	* MachThread.cpp (MachThread::ThreadWillResume): Now returns void.
571*30fdc8d8SChris Lattner	* MachThread.h (MachThread::ThreadWillResume): Now returns void.
572*30fdc8d8SChris Lattner
573*30fdc8d8SChris Lattner2008-11-19  Greg Clayton  <[email protected]>
574*30fdc8d8SChris Lattner
575*30fdc8d8SChris Lattner	* DNBError.h (FlavorType): Added SpringBoard error type for arm builds.
576*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::AsString): Now returns SpringBoard error strings
577*30fdc8d8SChris Lattner	if the error type is SpringBoard.
578*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Set the error into
579*30fdc8d8SChris Lattner	RNBContext as either a POSIX error or a SpringBoard error.
580*30fdc8d8SChris Lattner	* RNBContext.h (m_launch_status): Changed this member to be a DNBError
581*30fdc8d8SChris Lattner	instead of a uint32_t.
582*30fdc8d8SChris Lattner	(RNBContext::LaunchStatus): Now returns a reference to the DNBError object
583*30fdc8d8SChris Lattner	in m_launch_status.
584*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::LaunchStatusAsString): Let DNBError handle
585*30fdc8d8SChris Lattner	any error string descriptions, including SpringBoard errors.
586*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_q): Use new error class in
587*30fdc8d8SChris Lattner	RNBContext.
588*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_C): Return without an erroneous error when resuming
589*30fdc8d8SChris Lattner	a process with a signal.
590*30fdc8d8SChris Lattner	* DNBArch.h (DNBArchProtocol::StepNotComplete): New protocol function with
591*30fdc8d8SChris Lattner	default return value.
592*30fdc8d8SChris Lattner	* DNBArchImpl.cpp (DNBArchMachARM::StepNotComplete): New function.
593*30fdc8d8SChris Lattner	(DNBArchMachARM::EnableHardwareSingleStep): Handle hardware single stepping
594*30fdc8d8SChris Lattner	over 32 bit thumb instructions better so we always do a true instruction
595*30fdc8d8SChris Lattner	level single step.
596*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::ExceptionMessageBundleComplete): Now resumes
597*30fdc8d8SChris Lattner	if single stepping wasn't able to complete in a single run.
598*30fdc8d8SChris Lattner	* MachThread.cpp (MachThread::ShouldStop): Fills in new step_more parameter
599*30fdc8d8SChris Lattner	if stepping is not complete.
600*30fdc8d8SChris Lattner	* MachThreadList.cpp (MachThreadList::ShouldStop): Pass step_more parameter
601*30fdc8d8SChris Lattner	to each MachThread::ShouldStop call.
602*30fdc8d8SChris Lattner
603*30fdc8d8SChris Lattner2008-11-13  Greg Clayton  <[email protected]>
604*30fdc8d8SChris Lattner
605*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::PosixSpawnChildForPTraceDebugging): Don't
606*30fdc8d8SChris Lattner	call posix_spawnattr_setbinpref_np when launching with posix_spawn on ARM
607*30fdc8d8SChris Lattner	targets as it currently selects the incorrect slice due to multiple slices
608*30fdc8d8SChris Lattner	that contain the same cputype, yet they all have differing cpusubtypes.
609*30fdc8d8SChris Lattner
610*30fdc8d8SChris Lattner2008-11-04  Greg Clayton  <[email protected]>
611*30fdc8d8SChris Lattner
612*30fdc8d8SChris Lattner	* RNBRemote.h (GetContinueThread): Don't return the current thread when
613*30fdc8d8SChris Lattner	the continue thread is zero or -1.
614*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_c): Resume the process if we
615*30fdc8d8SChris Lattner	have no continue thread set.
616*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_s): Ditto.
617*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_C): Ditto unless a continue address is specified
618*30fdc8d8SChris Lattner	in which case we will only succeed if we have one thread when the continue
619*30fdc8d8SChris Lattner	with signal and address doesn't have a continue thread specified.
620*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_S): Ditto.
621*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessResumeWithSignal): New function.
622*30fdc8d8SChris Lattner	(DNBProcessResume): Added better logging.
623*30fdc8d8SChris Lattner	(DNBProcessHalt): Ditto.
624*30fdc8d8SChris Lattner	(DNBThreadResume): Ditto.
625*30fdc8d8SChris Lattner	(DNBThreadResumeWithSignal): Ditto.
626*30fdc8d8SChris Lattner	* DNB.h (DNBProcessResumeWithSignal): New prototype.
627*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::LogThreaded): New function.
628*30fdc8d8SChris Lattner	* DNBError.h (DNBError::LogThreaded): New prototype.
629*30fdc8d8SChris Lattner	* DNBLog.cpp (_DNBLogThreaded): Added sequence ID for threaded logs.
630*30fdc8d8SChris Lattner	(_DNBLogThreadedIf): Ditto.
631*30fdc8d8SChris Lattner	* MachException.cpp (MachException::Data::GetStopInfo): Use new SoftSignal()
632*30fdc8d8SChris Lattner	accessor.
633*30fdc8d8SChris Lattner	(MachException::Data::DumpStopReason): Ditto.
634*30fdc8d8SChris Lattner	(MachException::Message::Reply): Added better logging and log using the
635*30fdc8d8SChris Lattner	soft signal if our task matches that in the exception.
636*30fdc8d8SChris Lattner	(MachException::Data::Dump): Added better logging.
637*30fdc8d8SChris Lattner	* MachException.h (IsSoftSignal): Removed.
638*30fdc8d8SChris Lattner	(SoftSignal): New function that returns the soft signal in the exception
639*30fdc8d8SChris Lattner	data if there is one, or zero otherwise.
640*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::Suspend): Improved logging.
641*30fdc8d8SChris Lattner	(MachProcess::Resume): Ditto.
642*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Handle the case where the process is told
643*30fdc8d8SChris Lattner	to resume with a signal by matching the signal up to the thread that had
644*30fdc8d8SChris Lattner	the soft signal if no thread id is specified.
645*30fdc8d8SChris Lattner	* MachThread.cpp (MachThread::Suspend): Improved logging.
646*30fdc8d8SChris Lattner	(MachThread::Resume): Improved logging.
647*30fdc8d8SChris Lattner	(MachThread::RestoreSuspendCount): Improved logging.
648*30fdc8d8SChris Lattner	(MachThread::Resume): Improved logging.
649*30fdc8d8SChris Lattner	(MachThread::Dump): Improved logging.
650*30fdc8d8SChris Lattner	* MachThreadList.cpp (MachThreadList::Dump): Improved logging.
651*30fdc8d8SChris Lattner
652*30fdc8d8SChris Lattner2008-10-22  Greg Clayton  <[email protected]>
653*30fdc8d8SChris Lattner
654*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopMode): Added a new enum value
655*30fdc8d8SChris Lattner	eRNBRunLoopModeInferiorAttaching.
656*30fdc8d8SChris Lattner	(g_long_options): Added "--attach=PID" for attaching to existing processes
657*30fdc8d8SChris Lattner	and "--launch=(auto|posix|fork|springboard)" options.
658*30fdc8d8SChris Lattner	(RNBRunLoopLaunchInferior): Now launches process with new
659*30fdc8d8SChris Lattner	nub_launch_flavor_t enum that can be overridden with the --launch option.
660*30fdc8d8SChris Lattner	(RNBRunLoopLaunchAttaching): New function for attaching to existing
661*30fdc8d8SChris Lattner	processes.
662*30fdc8d8SChris Lattner	(main): Added command line option support for the "--attach" and "--launch"
663*30fdc8d8SChris Lattner	options and added attach to pid support and better logging.
664*30fdc8d8SChris Lattner	* DNB.cpp/h: (DNBProcessLaunch): Added nub_launch_flavor_t and error
665*30fdc8d8SChris Lattner	parameter for more precise control when launching processes.
666*30fdc8d8SChris Lattner	(DNBProcessSBLaunch): Removed function as launching with SpringBoard can
667*30fdc8d8SChris Lattner	now be done using DNBProcessLaunch with launch_flavor being set to
668*30fdc8d8SChris Lattner	eLaunchTypeSpringBoard (arm only).
669*30fdc8d8SChris Lattner	(DNBProcessSBAttach): Removed function (SpringBoard processes are now auto
670*30fdc8d8SChris Lattner	detected in the MachProcess::AttachForDebug function on ARM).
671*30fdc8d8SChris Lattner	* DNBDefs.h (NUB_GENERIC_ERROR): New generic error definition.
672*30fdc8d8SChris Lattner	(nub_launch_flavor_t): New enumeration used for control over process
673*30fdc8d8SChris Lattner	launching.
674*30fdc8d8SChris Lattner	* MachProcess.cpp (IsSBProcess): New function.
675*30fdc8d8SChris Lattner	(MachProcess::AttachForDebug): Removed flags parameter that was being used
676*30fdc8d8SChris Lattner	for SpringBoard flags and we now detect if a process belongs to SpringBoard
677*30fdc8d8SChris Lattner	by calling IsSBProcess.
678*30fdc8d8SChris Lattner	(MachProcess::LaunchForDebug): Now has launch parameter that tells it how
679*30fdc8d8SChris Lattner	to launch the inferior process and there is also an error code that gets
680*30fdc8d8SChris Lattner	returned. This function can now launch using fork + exec, posix_spawn,
681*30fdc8d8SChris Lattner	or SpringBoard on ARM targets.
682*30fdc8d8SChris Lattner	(MachProcess::SBLaunchForDebug): Now uses DNBError reference instead of
683*30fdc8d8SChris Lattner	uint32_t pointer for the error code.
684*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Ditto.
685*30fdc8d8SChris Lattner
686*30fdc8d8SChris Lattner2008-10-22  Greg Clayton  <[email protected]>
687*30fdc8d8SChris Lattner
688*30fdc8d8SChris Lattner	* MacOSX/arm/DNBArchImpl.cpp (DNBArchMachARM::GetRegisterValue): Set
689*30fdc8d8SChris Lattner	register value to a uint32 value instead of a float64 value for s0 -
690*30fdc8d8SChris Lattner	s31.
691*30fdc8d8SChris Lattner
692*30fdc8d8SChris Lattner2008-10-17  Greg Clayton  <[email protected]>
693*30fdc8d8SChris Lattner
694*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Don't listen for
695*30fdc8d8SChris Lattner	the qLaunchSuccess if we aren't doing a lockdown connnection.
696*30fdc8d8SChris Lattner
697*30fdc8d8SChris Lattner2008-10-13  Greg Clayton  <[email protected]>
698*30fdc8d8SChris Lattner
699*30fdc8d8SChris Lattner	* RNBRemote.h (class RNBRemote): Added m_watchpoints member.
700*30fdc8d8SChris Lattner	* DNB.cpp (DNBBreakpointSet): Added boolean hardware parameter for
701*30fdc8d8SChris Lattner	requesting that a hardware breakpoint be set.
702*30fdc8d8SChris Lattner	(DNBWatchpointSet): New function.
703*30fdc8d8SChris Lattner	(DNBWatchpointClear): New function.
704*30fdc8d8SChris Lattner	(DNBWatchpointGetHitCount): New function.
705*30fdc8d8SChris Lattner	(DNBWatchpointGetIgnoreCount): New function.
706*30fdc8d8SChris Lattner	(DNBWatchpointSetIgnoreCount): New function.
707*30fdc8d8SChris Lattner	(DNBWatchpointSetCallback): New function.
708*30fdc8d8SChris Lattner	(DNBWatchpointPrint): New function.
709*30fdc8d8SChris Lattner	* DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Modified to emit
710*30fdc8d8SChris Lattner	a single DNBLog() call so there aren't multiple newlines when logging
711*30fdc8d8SChris Lattner	to ASL.
712*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::ThreadFunctionProcessStatus): Use new
713*30fdc8d8SChris Lattner	process state changed events.
714*30fdc8d8SChris Lattner	* DNBBreakpoint.h (class DNBBreakpoint): Removed m_state member and
715*30fdc8d8SChris Lattner	added m_tid, m_enabled, m_hw_preferred, m_is_watchpoint, m_watch_read,
716*30fdc8d8SChris Lattner	m_watch_write, and m_hw_index.
717*30fdc8d8SChris Lattner	(DNBBreakpoint::ThreadID()): New accessor.
718*30fdc8d8SChris Lattner	(DNBBreakpoint::IsEnabled()): New accessor.
719*30fdc8d8SChris Lattner	(DNBBreakpoint::SetEnabled()): New accessor.
720*30fdc8d8SChris Lattner	(DNBBreakpoint::IsWatchpoint()): New accessor.
721*30fdc8d8SChris Lattner	(DNBBreakpoint::IsBreakpoint()): New accessor.
722*30fdc8d8SChris Lattner	(DNBBreakpoint::SetIsWatchpoint()): New accessor.
723*30fdc8d8SChris Lattner	(DNBBreakpoint::WatchpointRead()): New accessor.
724*30fdc8d8SChris Lattner	(DNBBreakpoint::WatchpointWrite()): New accessor.
725*30fdc8d8SChris Lattner	(DNBBreakpoint::HardwarePreferred()): New accessor.
726*30fdc8d8SChris Lattner	(DNBBreakpoint::IsHardware()): New accessor.
727*30fdc8d8SChris Lattner	(DNBBreakpoint::GetHardwareIndex()): New accessor.
728*30fdc8d8SChris Lattner	(DNBBreakpoint::SetHardwareIndex()): New accessor.
729*30fdc8d8SChris Lattner	(DNBBreakpoint::ThreadID()): New accessor.
730*30fdc8d8SChris Lattner	(DNBBreakpoint::GetState()): Removed accessor.
731*30fdc8d8SChris Lattner	(DNBBreakpoint::SetState()): Removed accessor.
732*30fdc8d8SChris Lattner	(DNBBreakpoint::AddBreakpoint()): Renamed to Add().
733*30fdc8d8SChris Lattner	(DNBBreakpoint::RemoveBreakpoint()): Renamed to Remove().
734*30fdc8d8SChris Lattner	(DNBBreakpoint::FindBreakIDForAddress()): Renamed to FindIDByAddress().
735*30fdc8d8SChris Lattner	(DNBBreakpoint::ShouldStopAtBreakpoint()): Renamed to ShouldStop().
736*30fdc8d8SChris Lattner	(DNBBreakpoint::SetBreakpointCallback()): Renamed to SetCallback().
737*30fdc8d8SChris Lattner	(DNBBreakpoint::FindBreakpointWithAddress()): Renamed to
738*30fdc8d8SChris Lattner	FindByAddress().
739*30fdc8d8SChris Lattner	(DNBBreakpoint::FindBreakpointWithBreakID()): Renamed to FindByID().
740*30fdc8d8SChris Lattner	(DNBBreakpoint::GetBreakpointAtIndex()): Renamed to GetByIndex().
741*30fdc8d8SChris Lattner	* FunctionProfiler.h: New header for subclass of DNBRuntimeAction.
742*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_v): Use new process state
743*30fdc8d8SChris Lattner	changed events.
744*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_z): Implement the hardware breakpoint and
745*30fdc8d8SChris Lattner	watchpoint commands z1, Z1, z2, Z2, z3 and Z3
746*30fdc8d8SChris Lattner	* PThreadEvent.h (PThreadEvent::GetEventBits): Made member function
747*30fdc8d8SChris Lattner	const.
748*30fdc8d8SChris Lattner	(PThreadEvent::WaitForSetEvents): Ditto.
749*30fdc8d8SChris Lattner	(PThreadEvent::WaitForEventsToReset): Ditto.
750*30fdc8d8SChris Lattner	(PThreadEvent::WaitForResetAck): Ditto.
751*30fdc8d8SChris Lattner	(PThreadEvent::m_mutex): Made class member mutable.
752*30fdc8d8SChris Lattner	(PThreadEvent::m_set_condition): Made class member mutable.
753*30fdc8d8SChris Lattner	(PThreadEvent::m_reset_condition): New mutable class member.
754*30fdc8d8SChris Lattner	* ProfileObjectiveC.cpp
755*30fdc8d8SChris Lattner	* DNBArch.h (DNBArch::NotifyException): Now has default implementation
756*30fdc8d8SChris Lattner	that returns false.
757*30fdc8d8SChris Lattner	(DNBArch::NumSupportedHardwareBreakpoints): New virtual member
758*30fdc8d8SChris Lattner	function with a default implementation.
759*30fdc8d8SChris Lattner	(DNBArch::NumSupportedHardwareWatchpoints): Ditto.
760*30fdc8d8SChris Lattner	(DNBArch::EnableHardwareBreakpoint): Ditto.
761*30fdc8d8SChris Lattner	(DNBArch::EnableHardwareWatchpoint): Ditto.
762*30fdc8d8SChris Lattner	(DNBArch::DisableHardwareBreakpoint): Ditto.
763*30fdc8d8SChris Lattner	(DNBArch::DisableHardwareWatchpoint): Ditto.
764*30fdc8d8SChris Lattner	* DNB.h (DNBBreakpointSet): New take a HARDWARE parameter that allows
765*30fdc8d8SChris Lattner	requests for setting hardware breakpoints.
766*30fdc8d8SChris Lattner	(DNBWatchpointSet): New function prototype.
767*30fdc8d8SChris Lattner	(DNBWatchpointClear): New function prototype.
768*30fdc8d8SChris Lattner	(DNBWatchpointGetHitCount): New function prototype.
769*30fdc8d8SChris Lattner	(DNBWatchpointGetIgnoreCount): New function prototype.
770*30fdc8d8SChris Lattner	(DNBWatchpointSetIgnoreCount): New function prototype.
771*30fdc8d8SChris Lattner	(DNBWatchpointSetCallback): New function prototype.
772*30fdc8d8SChris Lattner	(DNBWatchpointPrint): New function prototype.
773*30fdc8d8SChris Lattner	* MacOSX/arm/DNBArchImpl.cpp: Added hardware breakpoint and watchpoint
774*30fdc8d8SChris Lattner	support for ARM.
775*30fdc8d8SChris Lattner	(DNBArchMachARM::GetCPUType): New function.
776*30fdc8d8SChris Lattner	(DNBArchMachARM::DumpDBGState): New function.
777*30fdc8d8SChris Lattner	(DNBArchMachARM::GetDBGState): New function.
778*30fdc8d8SChris Lattner	(DNBArchMachARM::SetDBGState): New function.
779*30fdc8d8SChris Lattner	(DNBArchMachARM::EnableHardwareSingleStep): New function.
780*30fdc8d8SChris Lattner	(DNBArchMachARM::EnableHardwareBreakpoint): New function.
781*30fdc8d8SChris Lattner	(DNBArchMachARM::NotifyException): Removed.
782*30fdc8d8SChris Lattner	(DNBArchMachARM::DisableHardwareBreakpoint): New function.
783*30fdc8d8SChris Lattner	(DNBArchMachARM::EnableHardwareWatchpoint): New function.
784*30fdc8d8SChris Lattner	(DNBArchMachARM::DisableHardwareWatchpoint): New function.
785*30fdc8d8SChris Lattner	* MacOSX/MachThread.cpp (MachThread::Suspend): Added better logging.
786*30fdc8d8SChris Lattner	(MachThread::Resume): Ditto.
787*30fdc8d8SChris Lattner	(MachThread::RestoreSuspendCount): Ditto.
788*30fdc8d8SChris Lattner	(MachThread::Dump): Ditto.
789*30fdc8d8SChris Lattner	(MachThread::EnableHardwareBreakpoint): New function.
790*30fdc8d8SChris Lattner	(MachThread::EnableHardwareWatchpoint): New function.
791*30fdc8d8SChris Lattner	(MachThread::DisableHardwareBreakpoint): New function.
792*30fdc8d8SChris Lattner	(MachThread::DisableHardwareWatchpoint): New function.
793*30fdc8d8SChris Lattner	* MacOSX/MachThreadList.h (MachThreadList::GetLastError): Removed.
794*30fdc8d8SChris Lattner	(MachThread::EnableHardwareBreakpoint): New prototype.
795*30fdc8d8SChris Lattner	(MachThread::DisableHardwareBreakpoint): New prototype.
796*30fdc8d8SChris Lattner	(MachThread::EnableHardwareWatchpoint): New prototype.
797*30fdc8d8SChris Lattner	(MachThread::DisableHardwareWatchpoint): New prototype.
798*30fdc8d8SChris Lattner	(class MachThread): Remove m_err member variable.
799*30fdc8d8SChris Lattner	* MacOSX/ppc/DNBArchImpl.cpp (DNBArchMachPPC::GetCPUType) New
800*30fdc8d8SChris Lattner	function.
801*30fdc8d8SChris Lattner	(DNBArchMachPPC::NotifyException): Removed.
802*30fdc8d8SChris Lattner	* MacOSX/ppc/DNBArchImpl.h (DNBArchMachPPC::NotifyException): Removed.
803*30fdc8d8SChris Lattner	* MacOSX/MachThread.h (MachThread::EnableHardwareBreakpoint): New
804*30fdc8d8SChris Lattner	prototype.
805*30fdc8d8SChris Lattner	(MachThread::EnableHardwareWatchpoint): New prototype.
806*30fdc8d8SChris Lattner	(MachThread::DisableHardwareBreakpoint): New prototype.
807*30fdc8d8SChris Lattner	(MachThread::DisableHardwareWatchpoint): New prototype.
808*30fdc8d8SChris Lattner	(class MachThread): Renambed class member m_exception to
809*30fdc8d8SChris Lattner	m_stop_exception.
810*30fdc8d8SChris Lattner	* MacOSX/MachProcess.cpp (MachProcess::SetState): Updated to use new
811*30fdc8d8SChris Lattner	process event enumerations.
812*30fdc8d8SChris Lattner	(MachProcess::PrivateResume): Added better logging.
813*30fdc8d8SChris Lattner	(MachProcess::CreateBreakpoint): Added bool HARDWARE parameter for
814*30fdc8d8SChris Lattner	requesting hardware breakpoints.
815*30fdc8d8SChris Lattner	(MachProcess::CreateWatchpoint): New function.
816*30fdc8d8SChris Lattner	(MachProcess::DisableAllWatchpoints): New function.
817*30fdc8d8SChris Lattner	(MachProcess::DisableWatchpoint): New function.
818*30fdc8d8SChris Lattner	(MachProcess::DumpWatchpoint): New function.
819*30fdc8d8SChris Lattner	(MachProcess::EnableBreakpoint): Enabled breakpoints in hardware if
820*30fdc8d8SChris Lattner	requested and supported.
821*30fdc8d8SChris Lattner	(MachProcess::DisableBreakpoint): Disable hardware breakpoints if that
822*30fdc8d8SChris Lattner	is how they were set.
823*30fdc8d8SChris Lattner	(MachProcess::EnableWatchpoint): New function.
824*30fdc8d8SChris Lattner	(MachProcess::ExceptionMessageBundleComplete): Wait for the
825*30fdc8d8SChris Lattner	eEventProcessRunningStateChanged event to be reset before changing
826*30fdc8d8SChris Lattner	state to stopped to avoid race condition with very fast start/stops.
827*30fdc8d8SChris Lattner	(MachProcess::LaunchForDebug): Added posix_spawn support.
828*30fdc8d8SChris Lattner	(MachProcess::PosixSpawnChildForPTraceDebugging): New function.
829*30fdc8d8SChris Lattner	* MacOSX/i386/DNBArchImpl.cpp (DNBArchMachI386::GetCPUType): New
830*30fdc8d8SChris Lattner	function.
831*30fdc8d8SChris Lattner	* MacOSX/i386/DNBArchImpl.h (DNBArchMachI386::GetCPUType): New
832*30fdc8d8SChris Lattner	prototype.
833*30fdc8d8SChris Lattner	* MacOSX/MachProcess.h (PosixSpawnChildForPTraceDebugging): New
834*30fdc8d8SChris Lattner	prototype.
835*30fdc8d8SChris Lattner	* MacOSX/MachException.cpp (class MachException::ThreadMessage):
836*30fdc8d8SChris Lattner	Renamed	class to MachException::Data.
837*30fdc8d8SChris Lattner	* MacOSX/MachThreadList.cpp (class MachThreadList): Removed m_err
838*30fdc8d8SChris Lattner	class member.
839*30fdc8d8SChris Lattner	(MachThreadList::EnableHardwareBreakpoint): New function.
840*30fdc8d8SChris Lattner	(MachThreadList::DisableHardwareBreakpoint): New function.
841*30fdc8d8SChris Lattner	(MachThreadList::EnableHardwareWatchpoint): New function.
842*30fdc8d8SChris Lattner	(MachThreadList::DisableHardwareWatchpoint): New function.
843*30fdc8d8SChris Lattner	* MacOSX/MachException.h (class MachException::ThreadMessage):
844*30fdc8d8SChris Lattner	Renamed	class to MachException::Data.
845*30fdc8d8SChris Lattner	* DNBDefs.h (nub_watch_t): New typedef.
846*30fdc8d8SChris Lattner	(INVALID_NUB_HW_INDEX): New macro definition.
847*30fdc8d8SChris Lattner	(WATCH_TYPE_READ): New macro definition.
848*30fdc8d8SChris Lattner	(WATCH_TYPE_WRITE): New macro definition.
849*30fdc8d8SChris Lattner	(NUB_STATE_IS_RUNNING): New macro to see if state is a running state.
850*30fdc8d8SChris Lattner	(NUB_STATE_IS_STOPPED): New macro to see if state is a stopped state.
851*30fdc8d8SChris Lattner	(eEventProcessStateChanged): Deprecated.
852*30fdc8d8SChris Lattner	(eEventProcessRunningStateChanged): New process event state.
853*30fdc8d8SChris Lattner	(eEventProcessStoppedStateChanged): New process event state.
854*30fdc8d8SChris Lattner	(LOG_WATCHPOINTS): New macro definition for logging watchpoints.
855*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Use new process
856*30fdc8d8SChris Lattner	event states.
857*30fdc8d8SChris Lattner	* FunctionProfiler.cpp: New class that allows single stepping through
858*30fdc8d8SChris Lattner	an address range for tracing exact call graphs.
859*30fdc8d8SChris Lattner
860*30fdc8d8SChris Lattner2008-09-22  Greg Clayton  <[email protected]>
861*30fdc8d8SChris Lattner
862*30fdc8d8SChris Lattner        * RNBRemote.h (GetContinueThread): If the continue thread is zero or
863*30fdc8d8SChris Lattner        -1 then return GetCurrentThread().
864*30fdc8d8SChris Lattner        * RNBRemote.cpp (m_packets): Made the vCont functions call
865*30fdc8d8SChris Lattner        RNBRemote::HandlePacket_v().
866*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_H): Cleaned up whitespace.
867*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_last_signal): Return actual signal values for
868*30fdc8d8SChris Lattner        EXE_SOFTWARE/EXC_SOFT_SIGNAL mach exceptions.
869*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_v): Implemented the 'vCont?' and 'vCont;'
870*30fdc8d8SChris Lattner        packets.
871*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_c): Handle the case where an address is
872*30fdc8d8SChris Lattner        provided.
873*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_C): Implemented the continue with signal
874*30fdc8d8SChris Lattner        including when an address is provided.
875*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_S): Implemented the step with signal
876*30fdc8d8SChris Lattner        including when an address is provided.
877*30fdc8d8SChris Lattner        * DNB.cpp (DNBProcessResume): Pass 0 as the signal when resuming
878*30fdc8d8SChris Lattner        a process without specifying a thread.
879*30fdc8d8SChris Lattner        (DNBThreadResume): Pass 0 as the signal when resuming a specific thread.
880*30fdc8d8SChris Lattner        (DNBThreadResumeWithSignal): New function.
881*30fdc8d8SChris Lattner        * DNB.h (DNBThreadResumeWithSignal): New prototype.
882*30fdc8d8SChris Lattner        * MachException.h (MachException::Message::Reply): Added a signal
883*30fdc8d8SChris Lattner        parameter.
884*30fdc8d8SChris Lattner        * MachException.cpp (MachException::Message::Reply): Update the thread
885*30fdc8d8SChris Lattner        with the new SIGNAL parameter instead of always zero so signals can be
886*30fdc8d8SChris Lattner        passed on to programs.
887*30fdc8d8SChris Lattner        * MachProcess.h (MachProcess::Resume): Added a signal parameter.
888*30fdc8d8SChris Lattner        * MachProcess.h (MachProcess::PrivateResume): Added a signal parameter.
889*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::Resume): Pass new SIGNAL parameter to
890*30fdc8d8SChris Lattner        MachProcess::PrivateResume.
891*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::PrivateResume): Pass new SIGNAL
892*30fdc8d8SChris Lattner        parameter to the mach exception reply.
893*30fdc8d8SChris Lattner
894*30fdc8d8SChris Lattner2008-08-08  Greg Clayton  <[email protected]>
895*30fdc8d8SChris Lattner
896*30fdc8d8SChris Lattner        * DNB.cpp (gProcessMap): Removed static C++ global.
897*30fdc8d8SChris Lattner        (GetProcessMap): New Function.
898*30fdc8d8SChris Lattner        (AddProcessToMap): New function.
899*30fdc8d8SChris Lattner        (RemoveProcessFromMap): New function.
900*30fdc8d8SChris Lattner        (GetProcessSP): Use new GetProcessMap function to get process list.
901*30fdc8d8SChris Lattner
902*30fdc8d8SChris Lattner2008-07-30  Greg Clayton  <[email protected]>
903*30fdc8d8SChris Lattner
904*30fdc8d8SChris Lattner        * debugserver-entitlements.plist (get-task-allow): Removed.
905*30fdc8d8SChris Lattner        (run-invalid-allow): Added boolean value set to TRUE.
906*30fdc8d8SChris Lattner
907*30fdc8d8SChris Lattner2008-04-18  Greg Clayton  <[email protected]>
908*30fdc8d8SChris Lattner
909*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::Task): Added getuid(), geteuid(),
910*30fdc8d8SChris Lattner        getgid(), getegid() to the log message if task for pid fails.
911*30fdc8d8SChris Lattner
912*30fdc8d8SChris Lattner2008-04-07  Greg Clayton  <[email protected]>
913*30fdc8d8SChris Lattner
914*30fdc8d8SChris Lattner        * RNBContext.cpp (RNBContext::LaunchStatusAsString): Removed unused
915*30fdc8d8SChris Lattner        tmp_str variable.
916*30fdc8d8SChris Lattner
917*30fdc8d8SChris Lattner2008-04-04  Greg Clayton  <[email protected]>
918*30fdc8d8SChris Lattner
919*30fdc8d8SChris Lattner        * CFString.cpp/h (UTF8): Made a static function that can convert
920*30fdc8d8SChris Lattner        a CFStringRef to UTF8.
921*30fdc8d8SChris Lattner
922*30fdc8d8SChris Lattner2008-04-04  Greg Clayton  <[email protected]>
923*30fdc8d8SChris Lattner
924*30fdc8d8SChris Lattner        * test-remotenub.cpp (main): Make sure we exit after we send the
925*30fdc8d8SChris Lattner        application list.
926*30fdc8d8SChris Lattner
927*30fdc8d8SChris Lattner2008-04-04  Greg Clayton  <[email protected]>
928*30fdc8d8SChris Lattner
929*30fdc8d8SChris Lattner        * RNBServices.h (IsSBProcess): New prototype;
930*30fdc8d8SChris Lattner        * RNBServices.cpp (IsSBProcess): New function that returns true it
931*30fdc8d8SChris Lattner        SpringBoard owns or knows about the process.
932*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::HandlePacket_v): Made attach work correctly.
933*30fdc8d8SChris Lattner        * DNB.cpp (DNBProcessSBAttach): New function for use when attaching to
934*30fdc8d8SChris Lattner        a process owned by SpringBoard.
935*30fdc8d8SChris Lattner        (DNBProcessAttach): Fixed an issue where a local was shadowing a
936*30fdc8d8SChris Lattner        parameter.
937*30fdc8d8SChris Lattner        * DNB.h (DNBProcessSBAttach): New prototype.
938*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::AttachForDebug): AttachForDebug now
939*30fdc8d8SChris Lattner        takes some flags so it knows to enable SpringBoard functionality.
940*30fdc8d8SChris Lattner        * MachProcess.h (MachProcess::AttachForDebug): Added flags parameter
941*30fdc8d8SChris Lattner        to prototype.
942*30fdc8d8SChris Lattner
943*30fdc8d8SChris Lattner2008-04-04  Greg Clayton  <[email protected]>
944*30fdc8d8SChris Lattner
945*30fdc8d8SChris Lattner        * test-remotenub.cpp (RNBRunLoopGetArgsFromRemote): Handle the new
946*30fdc8d8SChris Lattner        attach packet and watch for connection being lost.
947*30fdc8d8SChris Lattner        (main): handle the --applist option when there we aren't using lockdown
948*30fdc8d8SChris Lattner        by printing the results to stdout and exiting with appropriate error code
949*30fdc8d8SChris Lattner        if we failed. Also handle the new prototype for ListApplications.
950*30fdc8d8SChris Lattner        * RNBServices.h (ListApplications): Change first parameter to be a std::string
951*30fdc8d8SChris Lattner        that will get the contents of the plist so we can use this for more than
952*30fdc8d8SChris Lattner        just lockdown.
953*30fdc8d8SChris Lattner        * RNBServices.cpp (ListApplications): Change first parameter to be a std::string
954*30fdc8d8SChris Lattner        that will get the contents of the plist so we can use this for more than
955*30fdc8d8SChris Lattner        just lockdown and also fixed the logic so we actually create a full list of
956*30fdc8d8SChris Lattner        applications instead of just overwriting the first entry.
957*30fdc8d8SChris Lattner        * RNBRemote.h (PacketEnum): Added a new 'vattach' enum for the "vAttach;PID"
958*30fdc8d8SChris Lattner        gdb remote command.
959*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_v): New prototype;
960*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::CreatePacketTable): add the vattach packet definition
961*30fdc8d8SChris Lattner        to m_packets.
962*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_v): New function that handles attach to a process.
963*30fdc8d8SChris Lattner
964*30fdc8d8SChris Lattner2008-04-03  Jim Ingham  <[email protected]>
965*30fdc8d8SChris Lattner
966*30fdc8d8SChris Lattner	* RNBRemote.h: Add query_launch_success to packet enum.
967*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable_): Add query_launch_success.
968*30fdc8d8SChris Lattner	(HandlePacket_q): Handle query_launch_success.
969*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessSBLaunch): Pass in launch_retval.
970*30fdc8d8SChris Lattner	* DNB.h: Change prototype of DNBProcessSBLaunch to take launch_retval.
971*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::LaunchStatusAsString): New function.
972*30fdc8d8SChris Lattner	* RNBContext.h (RNBContext): Add m_launch_status & accessors.
973*30fdc8d8SChris Lattner	* macosx/MachProcess.cpp (MachProcess::SBLaunchForDebug): Pass launch_retval.
974*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Accept & set launch_retval.
975*30fdc8d8SChris Lattner	* Macosx/MachProcess.h: Change prototypes of SBLaunchForDebug &
976*30fdc8d8SChris Lattner	ForkChildForPTraceDebugging to accept launch_retval.
977*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Get the launch status and
978*30fdc8d8SChris Lattner	put it in the context, then wait for the qLaunchStatus packet.
979*30fdc8d8SChris Lattner
980*30fdc8d8SChris Lattner2008-04-03  Greg Clayton  <[email protected]>
981*30fdc8d8SChris Lattner
982*30fdc8d8SChris Lattner        * com.apple.debugserver.plist: Changed plist so debugserver
983*30fdc8d8SChris Lattner        runs as mobile user.
984*30fdc8d8SChris Lattner        * com.apple.debugserver.applist.plist: Ditto.
985*30fdc8d8SChris Lattner
986*30fdc8d8SChris Lattner2008-04-03  Greg Clayton  <[email protected]>
987*30fdc8d8SChris Lattner
988*30fdc8d8SChris Lattner        * MachProcess.cpp: (MachProcess::SBForkChildForPTraceDebugging):
989*30fdc8d8SChris Lattner        Increased SBS application launch timeout to 30 seconds.
990*30fdc8d8SChris Lattner
991*30fdc8d8SChris Lattner2008-03-27 Christopher Friesen <[email protected]>
992*30fdc8d8SChris Lattner
993*30fdc8d8SChris Lattner        * RNBServices.h: Pass tasks from SpringBoard as a plist
994*30fdc8d8SChris Lattner        * RNBServices.cpp: Ditto.
995*30fdc8d8SChris Lattner        * test-remotenub.cpp: added --applist flag
996*30fdc8d8SChris Lattner        * com.apple.debugserver.applist.plist: Agent plist
997*30fdc8d8SChris Lattner
998*30fdc8d8SChris Lattner2008-03-17  Jim Ingham  <[email protected]>
999*30fdc8d8SChris Lattner
1000*30fdc8d8SChris Lattner        * DNB.h: Pass envp to DNBProcessLaunch & DNBProcessSBLaunch.
1001*30fdc8d8SChris Lattner        * DNB.cpp: Ditto.
1002*30fdc8d8SChris Lattner        * MachProcess.h: Ditto for *LaunchForDebug and
1003*30fdc8d8SChris Lattner        *ForkChildForPtraceDebugging.
1004*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::LaunchForDebug): Pass on envp.
1005*30fdc8d8SChris Lattner        (MachProcess::SBLaunchForDebug): Ditto.
1006*30fdc8d8SChris Lattner        (MachProcess::ForkChildForPtraceDebugging): Accept envp, haven't actually
1007*30fdc8d8SChris Lattner        implemented the passing yet.
1008*30fdc8d8SChris Lattner        (MachProcess::SBForkChildForPtraceDebuggin): Accept envp, convert to
1009*30fdc8d8SChris Lattner        CFDictionary and pass to SBSLaunchApplication.
1010*30fdc8d8SChris Lattner        * RNBContext.h: Add environment to the context.
1011*30fdc8d8SChris Lattner        * RBNContext.cpp (RNBContext::EnvironmentAtIndex): New function.
1012*30fdc8d8SChris Lattner        * RNBRemote.h: Add set_environment_variable to the PacketEnum.
1013*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::CreatePacketTable): Add QEnvironment:.
1014*30fdc8d8SChris Lattner        * (RNBRemote::HandlePacket_Q): Ingest the environment variable.
1015*30fdc8d8SChris Lattner        * test-remotenub.cpp (RNBRunLoppLaunchInferior): Convert the env
1016*30fdc8d8SChris Lattner        array in the context into an array, and pass it to the DNBProcess*Launch
1017*30fdc8d8SChris Lattner        methods.
1018*30fdc8d8SChris Lattner
1019*30fdc8d8SChris Lattner2008-03-17  Greg Clayton  <[email protected]>
1020*30fdc8d8SChris Lattner
1021*30fdc8d8SChris Lattner	* DNBBreakpoint.cpp (DNBBreakpointList::GetBreakpointAtIndex): New
1022*30fdc8d8SChris Lattner	functions (const and non-const versions).
1023*30fdc8d8SChris Lattner	* DNBBreakpoint.h (DNBBreakpointList::GetBreakpointAtIndex): New
1024*30fdc8d8SChris Lattner	prototypes (const and non-const versions).
1025*30fdc8d8SChris Lattner	* DNBError.h (DNBError::Success()): Don't use KERN_SUCCESS define.
1026*30fdc8d8SChris Lattner	(DNBError::Fail()): Don't use KERN_SUCCESS define.
1027*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::DisableAllBreakpoints): New function.
1028*30fdc8d8SChris Lattner	(MachProcess::Detach): Added initial implementation that will halt
1029*30fdc8d8SChris Lattner	the process, disable all breakpoints and call PT_DETACH.
1030*30fdc8d8SChris Lattner	* MachProcess.h (MachProcess::DisableAllBreakpoints): New prototype.
1031*30fdc8d8SChris Lattner
1032*30fdc8d8SChris Lattner2008-03-04  Greg Clayton  <[email protected]>
1033*30fdc8d8SChris Lattner
1034*30fdc8d8SChris Lattner        * RNBRemote.h (RNBRemote::SendHexEncodedBytePacket): New prototype.
1035*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::SendHexEncodedBytePacket): New function.
1036*30fdc8d8SChris Lattner        (RNBRemote::SendSTDOUTPacket): Use SendHexEncodedBytePacket function
1037*30fdc8d8SChris Lattner        to send bytes.
1038*30fdc8d8SChris Lattner        (RNBRemote::SendSTDERRPacket): Ditto.
1039*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_q): Return a valid thread info string for
1040*30fdc8d8SChris Lattner        qThreadExtraInfo queries.
1041*30fdc8d8SChris Lattner        * DNB.cpp (DNBThreadPrintStopReason): Commented out unused function.
1042*30fdc8d8SChris Lattner        (DNBThreadGetInfo): New function.
1043*30fdc8d8SChris Lattner        * DNB.h (DNBThreadPrintStopReason): Commented out prototype.
1044*30fdc8d8SChris Lattner        (DNBThreadGetInfo): New prototype.
1045*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::GetThreadInfo): New function.
1046*30fdc8d8SChris Lattner        * MachProcess.h (MachProcess::GetThreadInfo): New prototype.
1047*30fdc8d8SChris Lattner        * MachThreadList.cpp (MachThreadList::GetThreadInfo): New function.
1048*30fdc8d8SChris Lattner        * MachThreadList.h (MachThreadList::GetThreadInfo): New prototype.
1049*30fdc8d8SChris Lattner        * MachThread.cpp (MachThread::GetBasicInfoAsString): New function.
1050*30fdc8d8SChris Lattner        (MachThread::InferiorThreadID): New function.
1051*30fdc8d8SChris Lattner        * MachThread.cpp (MachThread::GetBasicInfoAsString): New prototype.
1052*30fdc8d8SChris Lattner        (MachThread::InferiorThreadID): New prototype.
1053*30fdc8d8SChris Lattner
1054*30fdc8d8SChris Lattner2008-02-27  Greg Clayton  <[email protected]>
1055*30fdc8d8SChris Lattner
1056*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): Set the
1057*30fdc8d8SChris Lattner        current thread when we notify a thread has stopped to subsequent
1058*30fdc8d8SChris Lattner        g and p packets get the correct data.
1059*30fdc8d8SChris Lattner
1060*30fdc8d8SChris Lattner2008-02-26  Jason Molenda  ([email protected])
1061*30fdc8d8SChris Lattner
1062*30fdc8d8SChris Lattner	* RNBRemote.h: Add query_thread_extra_info enum.
1063*30fdc8d8SChris Lattner	* RNBRemote.cpp: Add support for qThreadExtraInfo.
1064*30fdc8d8SChris Lattner	Currently we return 'Ok' as the packet status for
1065*30fdc8d8SChris Lattner        every thread.
1066*30fdc8d8SChris Lattner
1067*30fdc8d8SChris Lattner2008-02-26  Jason Molenda  ([email protected])
1068*30fdc8d8SChris Lattner
1069*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_q): Correct handling
1070*30fdc8d8SChris Lattner	of qfThreadInfo/qsThreadInfo.
1071*30fdc8d8SChris Lattner
1072*30fdc8d8SChris Lattner2008-02-20  Jason Molenda  ([email protected])
1073*30fdc8d8SChris Lattner
1074*30fdc8d8SChris Lattner	* RNBRemote.h: Change default for gdb's max incoming packet size to
1075*30fdc8d8SChris Lattner	reflect the real default size.
1076*30fdc8d8SChris Lattner	* RNBRemote.cpp (HandlePacket_Q): Correct the string comparisions for
1077*30fdc8d8SChris Lattner	the QSetMaxPayloadSize and QSetMaxPacketSize packets.
1078*30fdc8d8SChris Lattner
1079*30fdc8d8SChris Lattner2008-02-19 Christopher Friesen <[email protected]>
1080*30fdc8d8SChris Lattner
1081*30fdc8d8SChris Lattner        * CFDataFormatters.c: CoreFoundation data formatters added to project.
1082*30fdc8d8SChris Lattner
1083*30fdc8d8SChris Lattner2008-02-19  Jason Molenda  ([email protected])
1084*30fdc8d8SChris Lattner
1085*30fdc8d8SChris Lattner	* RNBRemote.h: Record the max payload size, not the max packet
1086*30fdc8d8SChris Lattner        size for less ambiguous meaning.
1087*30fdc8d8SChris Lattner	* RNBRemote.cpp: Add support for QSetMaxPayloadSize: packet which
1088*30fdc8d8SChris Lattner	should have a clearer meaning than QSetMaxPacketSize.
1089*30fdc8d8SChris Lattner	QSetMaxPacketSize will be removed once we get have a chance to get
1090*30fdc8d8SChris Lattner	a new debugserver and gdb submitted.
1091*30fdc8d8SChris Lattner
1092*30fdc8d8SChris Lattner2008-02-18  Jason Molenda  ([email protected])
1093*30fdc8d8SChris Lattner
1094*30fdc8d8SChris Lattner	* RNBRemote.h: Make default size 1024.
1095*30fdc8d8SChris Lattner	* RNBRemote.cpp: Questionmark packet should stay under
1096*30fdc8d8SChris Lattner	max_packet_size - 5 to allow for start, end, checksum and nul
1097*30fdc8d8SChris Lattner	char bytes.
1098*30fdc8d8SChris Lattner
1099*30fdc8d8SChris Lattner2008-02-18  Jason Molenda  ([email protected])
1100*30fdc8d8SChris Lattner
1101*30fdc8d8SChris Lattner	* RNBRemote.h: Add m_max_packet_size to class defn.
1102*30fdc8d8SChris Lattner	* RNBRemote.cpp: Initialize it, use it.
1103*30fdc8d8SChris Lattner
1104*30fdc8d8SChris Lattner2008-02-18  Jason Molenda  ([email protected])
1105*30fdc8d8SChris Lattner
1106*30fdc8d8SChris Lattner	* RNBRemote.h: Add set_max_packet_size.
1107*30fdc8d8SChris Lattner	* RNBRemote.cpp: Add QSetMaxPacketSize packet handling.
1108*30fdc8d8SChris Lattner
1109*30fdc8d8SChris Lattner2008-02-18  Greg Clayton <[email protected]>
1110*30fdc8d8SChris Lattner
1111*30fdc8d8SChris Lattner        * test-remotenub.cpp (HandleProcessStateChange): Call new
1112*30fdc8d8SChris Lattner        RNBRemote::FlushSTDIO function.
1113*30fdc8d8SChris Lattner        (RNBRunLoopInferiorExecuting): Ditto.
1114*30fdc8d8SChris Lattner        * RNBRemote.h (RNBRemote::FlushSTDIO): New prototype.
1115*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::FlushSTDIO): New function to
1116*30fdc8d8SChris Lattner        centralize the stdio.
1117*30fdc8d8SChris Lattner
1118*30fdc8d8SChris Lattner2008-02-18  Greg Clayton <[email protected]>
1119*30fdc8d8SChris Lattner
1120*30fdc8d8SChris Lattner	* DNB.cpp (DNBProcessWaitForEvent): Added timeout pointer as
1121*30fdc8d8SChris Lattner	parameter that can be NULL for infinite timeout to simplify
1122*30fdc8d8SChris Lattner	the DNB interface.
1123*30fdc8d8SChris Lattner	(DNBProcessTimedWaitForEvent): Removed function.
1124*30fdc8d8SChris Lattner	* DNB.h (DNBProcessWaitForEvent): Added timeout argument.
1125*30fdc8d8SChris Lattner	(DNBProcessTimedWaitForEvent): Removed prototype.
1126*30fdc8d8SChris Lattner	* DNBTimer.h (DNBTimer::OffsetTimeOfDay): New function.
1127*30fdc8d8SChris Lattner	* CFString.cpp (CFString::GetLength() const): New function.
1128*30fdc8d8SChris Lattner	* CFString.h (CFString::GetLength() const): New prototype.
1129*30fdc8d8SChris Lattner	* MachProcess.h (MachProcess class): Removed m_attached and
1130*30fdc8d8SChris Lattner	added m_flags.
1131*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::AttachForDebug): Set m_flags
1132*30fdc8d8SChris Lattner	to indicate we attached.
1133*30fdc8d8SChris Lattner	(MachProcess::SBLaunchForDebug): Set m_flags to indicate we
1134*30fdc8d8SChris Lattner	attached using SpringBoard and that we attached.
1135*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Changed to new
1136*30fdc8d8SChris Lattner	SpringBoardServices API.
1137*30fdc8d8SChris Lattner	(MachProcess::ThreadFunctionException): Added code that will
1138*30fdc8d8SChris Lattner	renew a watchdog assertion when we launch apps through
1139*30fdc8d8SChris Lattner	SpringBoardServices.
1140*30fdc8d8SChris Lattner	* PThreadEvent.cpp (PThreadEvent::WaitForSetEvents): Simplified
1141*30fdc8d8SChris Lattner	PThreadEvent API to have only one version of WaitForSetEvents
1142*30fdc8d8SChris Lattner	that has an optional timeout pointer argument.
1143*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::StopProcessStatusThread): Adapt
1144*30fdc8d8SChris Lattner	to new PThreadEvent API changes.
1145*30fdc8d8SChris Lattner	(RNBContext::ThreadFunctionProcessStatus): Adapt to new
1146*30fdc8d8SChris Lattner	DNBProcessWaitForEvent API changes.
1147*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::StopReadRemoteDataThread): Adapt
1148*30fdc8d8SChris Lattner	to new PThreadEvent API changes.
1149*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Adapt to new
1150*30fdc8d8SChris Lattner	DNBProcessWaitForEvent API changes.
1151*30fdc8d8SChris Lattner	(RNBRunLoopInferiorExecuting): Process STDIO first, then
1152*30fdc8d8SChris Lattner	incoming packets.
1153*30fdc8d8SChris Lattner
1154*30fdc8d8SChris Lattner2008-02-14  Jason Molenda  ([email protected])
1155*30fdc8d8SChris Lattner
1156*30fdc8d8SChris Lattner	* MachProcess.cpp: (MachProcess::SBForkChildForPTraceDebugging):
1157*30fdc8d8SChris Lattner	Set mode bits on slave side of pty.
1158*30fdc8d8SChris Lattner
1159*30fdc8d8SChris Lattner2008-02-12  Greg Clayton  <[email protected]>
1160*30fdc8d8SChris Lattner
1161*30fdc8d8SChris Lattner        * DNB.cpp (DNBEnableLogging): Removed function.
1162*30fdc8d8SChris Lattner        (DNBThreadPrintStopReason): Removed the file handle from this
1163*30fdc8d8SChris Lattner        function and use DNBLog calls.
1164*30fdc8d8SChris Lattner        * DNB.h (DNBEnableLogging): Removed function prototype.
1165*30fdc8d8SChris Lattner        (DNBThreadPrintStopReason): Removed the file handle
1166*30fdc8d8SChris Lattner        from the function prototype in favor of using DNBLog calls.
1167*30fdc8d8SChris Lattner        * DNBDataRef.cpp (DNBDataRef::Dump): Removed file handle to use
1168*30fdc8d8SChris Lattner        DNBLog for the logging and print a log line each time a full line
1169*30fdc8d8SChris Lattner        is ready for output after caching it in a local buffer.
1170*30fdc8d8SChris Lattner        * DNBDataRef.cpp (DNBDataRef::Dump): Removed file handle from
1171*30fdc8d8SChris Lattner        prototype.
1172*30fdc8d8SChris Lattner        * DNBDefs.h (DNBCallbackLog): New callback prototype for all
1173*30fdc8d8SChris Lattner        logging.
1174*30fdc8d8SChris Lattner        DNBLog.cpp(g_debug_opt): Renamed to d_debug and made it a file
1175*30fdc8d8SChris Lattner        static.
1176*30fdc8d8SChris Lattner        (DNBLogGetDebug): New accessor function for g_debug.
1177*30fdc8d8SChris Lattner        (DNBLogSetDebug): New accessor function for g_debug.
1178*30fdc8d8SChris Lattner        (g_verbose): Made into a file static and added accessors.
1179*30fdc8d8SChris Lattner        (DNBLogGetVerbose): New accessor function for g_verbose.
1180*30fdc8d8SChris Lattner        (DNBLogSetVerbose): New accessor function for g_verbose.
1181*30fdc8d8SChris Lattner        (DNBLogSetLogCallback): New function call that registers a logging
1182*30fdc8d8SChris Lattner        callback for all logging in libdebugnub.dylib and any code that
1183*30fdc8d8SChris Lattner        loads it.
1184*30fdc8d8SChris Lattner        (DNBLogToASL): Removed function as it is deprecated in favor of
1185*30fdc8d8SChris Lattner        using DNBLogSetLogCallback to regsiter a callback function that
1186*30fdc8d8SChris Lattner        implements the logging.
1187*30fdc8d8SChris Lattner        (DNBLogToFile): Ditto.
1188*30fdc8d8SChris Lattner        (DNBLogCloseLogFile): Ditto.
1189*30fdc8d8SChris Lattner        (DNBLogToFile): Ditto.
1190*30fdc8d8SChris Lattner        (DNBLogToFile): Ditto.
1191*30fdc8d8SChris Lattner        (_DNBLogPuts): Removed unused function.
1192*30fdc8d8SChris Lattner        (_DNBLogVAPrintf): Calls the callback function to do the logging
1193*30fdc8d8SChris Lattner        if one has been registered.
1194*30fdc8d8SChris Lattner        * DNBLog.h (DNBLOG_FLAG_FATAL): New defines that get passed to
1195*30fdc8d8SChris Lattner        any registered logging callback functions.
1196*30fdc8d8SChris Lattner        (DNBLOG_FLAG_FATAL): Ditto.
1197*30fdc8d8SChris Lattner        (DNBLOG_FLAG_ERROR): Ditto.
1198*30fdc8d8SChris Lattner        (DNBLOG_FLAG_WARNING): Ditto.
1199*30fdc8d8SChris Lattner        (DNBLOG_FLAG_DEBUG): Ditto.
1200*30fdc8d8SChris Lattner        (DNBLOG_FLAG_VERBOSE): Ditto.
1201*30fdc8d8SChris Lattner        (DNBLOG_FLAG_THREADED): Ditto.
1202*30fdc8d8SChris Lattner        (DNBLog*): All logging calls are now exported from libdebugnub.dylib
1203*30fdc8d8SChris Lattner        so there aren't two copies (one in debugserver and one in debugnub).
1204*30fdc8d8SChris Lattner        C99 vararg Macros wrap all logging calls so no var arg processing
1205*30fdc8d8SChris Lattner        occurs when logging is disabled.
1206*30fdc8d8SChris Lattner        * DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Removed file
1207*30fdc8d8SChris Lattner        handle and now use DNBLog calls.
1208*30fdc8d8SChris Lattner        * DNBRegisterInfo.h (DNBRegisterValueClass::Dump): Removed file
1209*30fdc8d8SChris Lattner        handle from prototype.
1210*30fdc8d8SChris Lattner        * MachException.cpp (catch_mach_exception_raise_state_identity):
1211*30fdc8d8SChris Lattner        Removed newlines from logging call.
1212*30fdc8d8SChris Lattner        (catch_mach_exception_raise): Ditto.
1213*30fdc8d8SChris Lattner        (MachException::Message::Dump): Removed file handle from params
1214*30fdc8d8SChris Lattner        and removed newlines from logging call.
1215*30fdc8d8SChris Lattner        (MachException::ThreadMessage::DumpStopReason): Removed file handle
1216*30fdc8d8SChris Lattner        from params and use DNBLog for logging output.
1217*30fdc8d8SChris Lattner        (MachException::ThreadMessage::Dump): Log using DNBLog instead of
1218*30fdc8d8SChris Lattner        file handle.
1219*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::DumpThreadStoppedReason): Ditto.
1220*30fdc8d8SChris Lattner        (MachProcess::ReadMemory): Ditto.
1221*30fdc8d8SChris Lattner        (MachProcess::WriteMemory): Ditto.
1222*30fdc8d8SChris Lattner        (ExceptionMessageBundleComplete): Ditto.
1223*30fdc8d8SChris Lattner        * MachThread.cpp (MachThread::Dump): Ditto.
1224*30fdc8d8SChris Lattner        (MachThread::DumpRegisterState): Ditto.
1225*30fdc8d8SChris Lattner        * MachThreadList.cpp (MachThreadList::DumpThreadStoppedReason): Ditto.
1226*30fdc8d8SChris Lattner        (MachThreadList::Dump): Ditto.
1227*30fdc8d8SChris Lattner        * RNBRemote.cpp (set_logging): Use new function callback registration
1228*30fdc8d8SChris Lattner        calls when enabling ASL logging.
1229*30fdc8d8SChris Lattner        test-remotenub.cpp (ASLLogCallback): New function to handle all ASL
1230*30fdc8d8SChris Lattner        logging. This function gets registered with libdebugnub.dylib when we
1231*30fdc8d8SChris Lattner        want to log using ASL.
1232*30fdc8d8SChris Lattner        (FileLogCallback): New function to handle all file logging. This
1233*30fdc8d8SChris Lattner        function gets registered with libdebugnub.dylib when we want to log
1234*30fdc8d8SChris Lattner        to a 'FILE *'.
1235*30fdc8d8SChris Lattner        (main): Register the logging callback functions when we want to log
1236*30fdc8d8SChris Lattner        to file or using ASL.
1237*30fdc8d8SChris Lattner
1238*30fdc8d8SChris Lattner2008-02-12  Greg Clayton  <[email protected]>
1239*30fdc8d8SChris Lattner
1240*30fdc8d8SChris Lattner        * test-remotenub.cpp (main): Default to ASL logging with no log
1241*30fdc8d8SChris Lattner        bits set to allow for warning and error logging.
1242*30fdc8d8SChris Lattner        * RNBRemote.h (struct Breakpoint): New structure for ref counting
1243*30fdc8d8SChris Lattner        breakpoints in Z and z packets.
1244*30fdc8d8SChris Lattner        * RNBRemote.cpp (RNBRemote::SendPacket): Use new LOG_RNB_PACKETS
1245*30fdc8d8SChris Lattner        defined when logging actual packet content.
1246*30fdc8d8SChris Lattner        (RNBRemote::HandleAsyncPacket): Ditto.
1247*30fdc8d8SChris Lattner        (RNBRemote::HandleReceivedPacket): Ditto.
1248*30fdc8d8SChris Lattner        (RNBRemote::HandlePacket_z): Ref count the setting and removing
1249*30fdc8d8SChris Lattner        of breakpoints with the Z and z packets using new struct
1250*30fdc8d8SChris Lattner        RNBRemote::Breakpoint.
1251*30fdc8d8SChris Lattner        * RNBDefs.h (LOG_RNB_PACKETS): New define for logging the sending
1252*30fdc8d8SChris Lattner        and receiving of packets data.
1253*30fdc8d8SChris Lattner        * DNB.cpp (DNBPrintf): Check for NULL file handle.
1254*30fdc8d8SChris Lattner        * DNBBreakpoint.cpp (DNBBreakpoint::Dump): Ditto.
1255*30fdc8d8SChris Lattner        (DNBBreakpointList::Dump): Ditto.
1256*30fdc8d8SChris Lattner        * DNBDefs.h (LOG_EVENTS): New define for logging PThreadEvent.
1257*30fdc8d8SChris Lattner        * DNBLog.cpp (g_debug_opt): Relocated outside of #if that turns off
1258*30fdc8d8SChris Lattner        logging completely to allow option parsing code that uses it to
1259*30fdc8d8SChris Lattner        still compile.
1260*30fdc8d8SChris Lattner        (g_verbose): Ditto.
1261*30fdc8d8SChris Lattner        * DNBLog.h (DNBLogToASL): Added prototype for when logging is
1262*30fdc8d8SChris Lattner        disabled via preprocessor macro.
1263*30fdc8d8SChris Lattner        (DNBLogToFile): Ditto.
1264*30fdc8d8SChris Lattner        * DNBRegisterInfo.cpp (DNBRegisterValueClass::Dump): Check for NULL
1265*30fdc8d8SChris Lattner        file handle.
1266*30fdc8d8SChris Lattner        * MachException.cpp (MachException::ThreadMessage::DumpStopReason): Ditto.
1267*30fdc8d8SChris Lattner        (MachException::ThreadMessage::Dump): Ditto.
1268*30fdc8d8SChris Lattner        * MachProcess.cpp (MachProcess::CreateBreakpoint): Improved logging.
1269*30fdc8d8SChris Lattner        (MachProcess::DisableBreakpoint): Verify the original opcode gets
1270*30fdc8d8SChris Lattner        restored, improved logging and added unconditional logging for when
1271*30fdc8d8SChris Lattner        things go wrong.
1272*30fdc8d8SChris Lattner        (MachProcess::EnableBreakpoint): Verify the breakpoint opcode gets
1273*30fdc8d8SChris Lattner        written, improved logging and added unconditional logging for when
1274*30fdc8d8SChris Lattner        things go wrong.
1275*30fdc8d8SChris Lattner        * MachThread.cpp (MachThread::Dump): Check for NULL file handle.
1276*30fdc8d8SChris Lattner        * MachVMMemory.cpp (MachVMMemory::WriteRegion): Flush caches in inferior
1277*30fdc8d8SChris Lattner        after writing to inferior memory.
1278*30fdc8d8SChris Lattner        * PThreadEvent.cpp: Changed all logging calls to key off of LOG_EVENTS
1279*30fdc8d8SChris Lattner        instead of LOG_VERBOSE.
1280*30fdc8d8SChris Lattner        MachDYLD.cpp (MachDYLD::Dump): Check for NULL file handle.
1281*30fdc8d8SChris Lattner        (MachDYLD::DYLIBInfo::Dump): Ditto.
1282*30fdc8d8SChris Lattner        ProfileObjectiveC.cpp (ProfileObjectiveC::DumpStats): Ditto.
1283*30fdc8d8SChris Lattner
1284*30fdc8d8SChris Lattner2008-02-09  Jason Molenda  ([email protected])
1285*30fdc8d8SChris Lattner
1286*30fdc8d8SChris Lattner	* RNBRemote.cpp (set_logging): Log to ASL unconditionally when
1287*30fdc8d8SChris Lattner	processing a QSetLogging packet.
1288*30fdc8d8SChris Lattner
1289*30fdc8d8SChris Lattner2008-02-06  Greg Clayton  <[email protected]>
1290*30fdc8d8SChris Lattner
1291*30fdc8d8SChris Lattner        * test-remotenub.cpp (main): Dup stdout and stderr to /dev/NULL
1292*30fdc8d8SChris Lattner        when we use lockdown.
1293*30fdc8d8SChris Lattner
1294*30fdc8d8SChris Lattner2008-02-06  Greg Clayton  <[email protected]>
1295*30fdc8d8SChris Lattner
1296*30fdc8d8SChris Lattner	* RNBSocket.cpp (RNBSocket::Disconnect): Removed unused var ERR.
1297*30fdc8d8SChris Lattner	* RNBRemote.cpp(RNBRemote::HandlePacket_Q): Removed unused var PID.
1298*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::LogThreadedIfError): Removed unused var
1299*30fdc8d8SChris Lattner	ERR_MSG.
1300*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Removed unused
1301*30fdc8d8SChris Lattner	variable EXECUTABLE_LENGTH.
1302*30fdc8d8SChris Lattner	(main): Removed unused variable ARG_IDX.
1303*30fdc8d8SChris Lattner
1304*30fdc8d8SChris Lattner2008-02-06  Chris Marcellino ([email protected]) and Myke Olson ([email protected])
1305*30fdc8d8SChris Lattner
1306*30fdc8d8SChris Lattner	* MachProcess.cpp (SBForkChildForPTraceDebugging): Bring up to date with
1307*30fdc8d8SChris Lattner	current SpringBoardServices.framework types and imports.
1308*30fdc8d8SChris Lattner
1309*30fdc8d8SChris Lattner2008-02-05  Jason Molenda  ([email protected])
1310*30fdc8d8SChris Lattner
1311*30fdc8d8SChris Lattner	* RNBRemote.cpp (set_logging): Remove the mode=file and filename=
1312*30fdc8d8SChris Lattner	options to the QSetLogging packet.  We're only going to support logging
1313*30fdc8d8SChris Lattner	to ASL for now.  Logging to a file can still be accomplished by the
1314*30fdc8d8SChris Lattner	-l command line argument.
1315*30fdc8d8SChris Lattner
1316*30fdc8d8SChris Lattner2008-02-02  Christopher Friesen  ([email protected])
1317*30fdc8d8SChris Lattner
1318*30fdc8d8SChris Lattner        * Added libXcodeDebugerSupport.dylib target
1319*30fdc8d8SChris Lattner        * XCDebuggerIntrospection.[hc]: Support for Xcode's debugger introspection.
1320*30fdc8d8SChris Lattner
1321*30fdc8d8SChris Lattner2008-02-01  Jason Molenda  ([email protected])
1322*30fdc8d8SChris Lattner
1323*30fdc8d8SChris Lattner	* DNBLog.cpp (DNBLogCloseLogFile): New function to close a logfile
1324*30fdc8d8SChris Lattner	at exit.
1325*30fdc8d8SChris Lattner	* DNBLog.h: Prototype.
1326*30fdc8d8SChris Lattner	* test-remotenub.cpp (main): Close the log file before exiting.
1327*30fdc8d8SChris Lattner
1328*30fdc8d8SChris Lattner2008-02-01  Jason Molenda  ([email protected])
1329*30fdc8d8SChris Lattner
1330*30fdc8d8SChris Lattner	* RNBRemote.cpp (set_logging): Recognize the "filename=" argument
1331*30fdc8d8SChris Lattner	to the QSetLogging directive.
1332*30fdc8d8SChris Lattner	* DNBLog.cpp (DNBLogGetLogMask): New fun.c
1333*30fdc8d8SChris Lattner	* DNBLog.h: Prototype.
1334*30fdc8d8SChris Lattner
1335*30fdc8d8SChris Lattner2008-01-31  Jason Molenda  ([email protected])
1336*30fdc8d8SChris Lattner
1337*30fdc8d8SChris Lattner	* DNBLog.cpp: Add ASL logging as a run-time selectable option.
1338*30fdc8d8SChris Lattner	(DNBLogToASL, DNBLogToFile): Functions to switch between logging to
1339*30fdc8d8SChris Lattner	a file and logging via ASL.
1340*30fdc8d8SChris Lattner	* DNBLog.h: Prototypes.
1341*30fdc8d8SChris Lattner	* RNBRemote.cpp (set_logging): Recognize the "mode=" field to enable
1342*30fdc8d8SChris Lattner	asl logging.  Skip unrecognized keys.
1343*30fdc8d8SChris Lattner
1344*30fdc8d8SChris Lattner2008-01-31  Greg Clayton  ([email protected])
1345*30fdc8d8SChris Lattner
1346*30fdc8d8SChris Lattner	* DNB.cpp (sigchld_handler): Better logging when we get a
1347*30fdc8d8SChris Lattner	SIGCHILD and we are watching for process related logging events.
1348*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopInferiorExecuting): Only reset
1349*30fdc8d8SChris Lattner	events when we still have event bits set.
1350*30fdc8d8SChris Lattner
1351*30fdc8d8SChris Lattner2008-01-29  Jason Molenda  ([email protected])
1352*30fdc8d8SChris Lattner
1353*30fdc8d8SChris Lattner	* RNBRemote.h: Add set_logging_mode.
1354*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable): Recognize
1355*30fdc8d8SChris Lattner	QSetLogging.
1356*30fdc8d8SChris Lattner
1357*30fdc8d8SChris Lattner2008-01-29  Jason Molenda  ([email protected])
1358*30fdc8d8SChris Lattner
1359*30fdc8d8SChris Lattner	* RNBRemote.cpp (set_logging): New function to parse the QSetLogging
1360*30fdc8d8SChris Lattner	packet.
1361*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_Q): Call it.
1362*30fdc8d8SChris Lattner
1363*30fdc8d8SChris Lattner2008-01-28  Jason Molenda  ([email protected])
1364*30fdc8d8SChris Lattner
1365*30fdc8d8SChris Lattner	* RNBRemote.h: Minimal packet size is 1024 in our gdb now.
1366*30fdc8d8SChris Lattner	* RNBRemote.cpp: Add the stop_pc value in big-endian order to the
1367*30fdc8d8SChris Lattner	T response packet to make it a little easier to follow where gdb
1368*30fdc8d8SChris Lattner	is stepping.
1369*30fdc8d8SChris Lattner
1370*30fdc8d8SChris Lattner2008-01-28  Greg Clayton  <[email protected]>
1371*30fdc8d8SChris Lattner
1372*30fdc8d8SChris Lattner	* RNBContext.h: Removed m_pid_state from RNBContext class so that
1373*30fdc8d8SChris Lattner	it couldn't get out of sync with the actual process and its accessors
1374*30fdc8d8SChris Lattner	SetProcessState() and GetProcessState().
1375*30fdc8d8SChris Lattner	* RNBContext.cpp (RNBContext::ProcessStateRunning): Always return the
1376*30fdc8d8SChris Lattner	current state of the process instead of a cached value.
1377*30fdc8d8SChris Lattner	* test-remotenub.cpp (RNBRunLoopLaunchInferior): Remove call to
1378*30fdc8d8SChris Lattner        deprecated RNBContext::SetProcessState().
1379*30fdc8d8SChris Lattner	(HandleProcessStateChange): Ditto.
1380*30fdc8d8SChris Lattner
1381*30fdc8d8SChris Lattner2008-01-24  Greg Clayton  ([email protected])
1382*30fdc8d8SChris Lattner
1383*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_q): See if command starts with
1384*30fdc8d8SChris Lattner	"qSymbol" (no trailing "s") and return the empty string.
1385*30fdc8d8SChris Lattner
1386*30fdc8d8SChris Lattner2008-01-24  Greg Clayton  ([email protected])
1387*30fdc8d8SChris Lattner
1388*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_q): See if command starts with
1389*30fdc8d8SChris Lattner	"qSymbols" and return the empty string.
1390*30fdc8d8SChris Lattner
1391*30fdc8d8SChris Lattner2008-01-24  Greg Clayton  ([email protected])
1392*30fdc8d8SChris Lattner
1393*30fdc8d8SChris Lattner	* DNBError.h (DNBError::DumpIfError): Removed prototype.
1394*30fdc8d8SChris Lattner	* DNBError.cpp (DNBError::DumpIfError): Removed function.
1395*30fdc8d8SChris Lattner	(DNBError::LogThreadedIfError): Output error as hex.
1396*30fdc8d8SChris Lattner	* MachException.cpp (MachException::Message::Receive): Don't use
1397*30fdc8d8SChris Lattner	DNBError::DumpIfError, now use DNBError::LogThreadedIfError.
1398*30fdc8d8SChris Lattner	* MachProcess.cpp (MachProcess::StartExceptionThread): Ditto.
1399*30fdc8d8SChris Lattner 	(MachProcess::Suspend): Ditto.
1400*30fdc8d8SChris Lattner	(MachProcess::SBForkChildForPTraceDebugging): Ditto.
1401*30fdc8d8SChris Lattner	* MachVMMemory.cpp (MachVMMemory::Read): Cleaned up logging
1402*30fdc8d8SChris Lattner	calls.
1403*30fdc8d8SChris Lattner	(MachVMMemory::Write): Ditto.
1404*30fdc8d8SChris Lattner	(MachVMMemory::WriteRegion): Added logging.
1405*30fdc8d8SChris Lattner	* RNBContenxt.cpp (display_thread_info): Removed function.
1406*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::GetPacket): Commented out stderr
1407*30fdc8d8SChris Lattner	messages to avoid SpringBoard from killing us.
1408*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_p): Ditto.
1409*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_P): Ditto.
1410*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_c): Ditto.
1411*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_A): Removed code that was already
1412*30fdc8d8SChris Lattner	* RNBSocket.cpp (RNBSocket::Listen): Commented out stdout
1413*30fdc8d8SChris Lattner	messages to avoid SpringBoard from killing us.
1414*30fdc8d8SChris Lattner	(RNBSocket::ConnectToService): Ditto.
1415*30fdc8d8SChris Lattner
1416*30fdc8d8SChris Lattner2008-01-24  Jim Ingham  <[email protected]>
1417*30fdc8d8SChris Lattner
1418*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_q): Reply "" to qSymbols
1419*30fdc8d8SChris Lattner	and qOffsets.
1420*30fdc8d8SChris Lattner
1421*30fdc8d8SChris Lattner2008-01-23  Jason Molenda  ([email protected])
1422*30fdc8d8SChris Lattner
1423*30fdc8d8SChris Lattner	* RNBRemote.h: m_noack_mode to RNBRemote class.
1424*30fdc8d8SChris Lattner	* RNBRemote.cpp: Change #ifdef NO_ACKS code blocks
1425*30fdc8d8SChris Lattner	to use m_noack_mode instance variable.
1426*30fdc8d8SChris Lattner	(RNBRemote::HandlePacket_Q): New function to handle
1427*30fdc8d8SChris Lattner	QStartNoAckMode packet and set m_noack_mode appropriately.
1428*30fdc8d8SChris Lattner	* test-remotenub.cpp: Remove NO_ACKS ifdefs.
1429*30fdc8d8SChris Lattner
1430*30fdc8d8SChris Lattner2008-01-22  Jason Molenda  ([email protected])
1431*30fdc8d8SChris Lattner
1432*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::CreatePacketTable): Recognize
1433*30fdc8d8SChris Lattner	QStartNoAckMode as an unsupported remote protocol request.
1434*30fdc8d8SChris Lattner	* RNBRemote.h: Add start_noack_mode enum entry.
1435*30fdc8d8SChris Lattner
1436*30fdc8d8SChris Lattner2008-01-22  Greg Clayton  ([email protected])
1437*30fdc8d8SChris Lattner
1438*30fdc8d8SChris Lattner	* DNBLog.h: Removed C++ namespace for DNBLog (changed all DNBLog::
1439*30fdc8d8SChris Lattner	to DNBLog) so C99 var arg macros can be used to completely disable
1440*30fdc8d8SChris Lattner	all logging and any functions that may be called when making the
1441*30fdc8d8SChris Lattner	variable arguments.
1442*30fdc8d8SChris Lattner	* DNBLog.cpp: Ditto.
1443*30fdc8d8SChris Lattner	* DNB.cpp: Ditto.
1444*30fdc8d8SChris Lattner	* DNBBreakpoint.cpp: Ditto.
1445*30fdc8d8SChris Lattner	* DNBError.cpp: Ditto.
1446*30fdc8d8SChris Lattner	* MacOSX/MachDYLD.cpp: Ditto.
1447*30fdc8d8SChris Lattner	* MacOSX/MachException.cpp: Ditto.
1448*30fdc8d8SChris Lattner	* MacOSX/MachProcess.cpp: Ditto.
1449*30fdc8d8SChris Lattner	* MacOSX/MachThread.cpp: Ditto.
1450*30fdc8d8SChris Lattner	* MacOSX/MachThreadList.cpp: Ditto.
1451*30fdc8d8SChris Lattner	* MacOSX/MachVMMemory.cpp: Ditto.
1452*30fdc8d8SChris Lattner	* MacOSX/MachVMRegion.cpp: Ditto.
1453*30fdc8d8SChris Lattner	* MacOSX/arm/DNBArchImpl.cpp: Ditto.
1454*30fdc8d8SChris Lattner	* MacOSX/ppc/DNBArchImpl.cpp: Ditto.
1455*30fdc8d8SChris Lattner	* PThreadEvent.cpp: Ditto.
1456*30fdc8d8SChris Lattner	* RNBContext.cpp: Ditto.
1457*30fdc8d8SChris Lattner	* RNBRemote.cpp: Ditto.
1458*30fdc8d8SChris Lattner	* RNBSocket.cpp: Ditto.
1459*30fdc8d8SChris Lattner	* test-remotenub.cpp: Ditto.
1460*30fdc8d8SChris Lattner
1461*30fdc8d8SChris Lattner2008-01-21  Jason Molenda  ([email protected])
1462*30fdc8d8SChris Lattner
1463*30fdc8d8SChris Lattner	* test-remotenub.cpp: Add NO_SPRINGBOARD for turning off SpringBoard
1464*30fdc8d8SChris Lattner	dependency ala NO_ACKS.
1465*30fdc8d8SChris Lattner
1466*30fdc8d8SChris Lattner2008-01-18  Jason Molenda  ([email protected])
1467*30fdc8d8SChris Lattner
1468*30fdc8d8SChris Lattner	* RNBSocket.h (RNBSocket::RNBSocket): Take either a port # or
1469*30fdc8d8SChris Lattner	an already-opened socket, with a boolean to indicate which it is.
1470*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::RNBRemote): Ditto.
1471*30fdc8d8SChris Lattner	* RNBRemote.h: Prototype update.
1472*30fdc8d8SChris Lattner	* test-remotenub.cpp: Include lockdown.h.  Take --lockdown command
1473*30fdc8d8SChris Lattner	line arg, get the socket from liblockdown.dylib instead of opening
1474*30fdc8d8SChris Lattner	our own socket if it is specified.  --lockdown indicates that
1475*30fdc8d8SChris Lattner	the program name/args will be provided via remote protocol instead
1476*30fdc8d8SChris Lattner	of on the command line.
1477*30fdc8d8SChris Lattner
1478*30fdc8d8SChris Lattner2008-01-17  Jason Molenda  ([email protected])
1479*30fdc8d8SChris Lattner
1480*30fdc8d8SChris Lattner	* RNBRemote.cpp: Add NO_ACKS #ifdefs around code that computes
1481*30fdc8d8SChris Lattner	the checksums and sends/expects the gdb remote protocol ACK packets.
1482*30fdc8d8SChris Lattner	If NO_ACKS is defined, debugserver will not send or expect acks.
1483*30fdc8d8SChris Lattner	* test-remotenub.cpp (main): Print a different version string
1484*30fdc8d8SChris Lattner	if NO_ACKS is defined.
1485*30fdc8d8SChris Lattner
1486*30fdc8d8SChris Lattner2008-01-16  Greg Clayton  ([email protected])
1487*30fdc8d8SChris Lattner
1488*30fdc8d8SChris Lattner	* PThreadEvent.cpp: Added this pointer to all logging calls.
1489*30fdc8d8SChris Lattner
1490*30fdc8d8SChris Lattner2008-01-16  Greg Clayton  ([email protected])
1491*30fdc8d8SChris Lattner
1492*30fdc8d8SChris Lattner	* RNBSocket.cpp (RNBSocket::Connect()): Use TCP so we can try the
1493*30fdc8d8SChris Lattner	TCP_NODELAY socket option.
1494*30fdc8d8SChris Lattner	(RNBSocket::SetSocketOption()): New function.
1495*30fdc8d8SChris Lattner	* RNBSocket.h (RNBSocket::SetSocketOption()): New class function.
1496*30fdc8d8SChris Lattner
1497*30fdc8d8SChris Lattner2008-01-14  Jason Molenda  ([email protected])
1498*30fdc8d8SChris Lattner
1499*30fdc8d8SChris Lattner	* RNBRemote.cpp (RNBRemote::HandlePacket_last_signal): When printing
1500*30fdc8d8SChris Lattner	registers, skip over gdb regs which don't map to DNB regs.
1501*30fdc8d8SChris Lattner
1502*30fdc8d8SChris Lattner2008-01-14  Jim Ingham  <[email protected]>
1503*30fdc8d8SChris Lattner
1504*30fdc8d8SChris Lattner    * ChangeLog - created.
1505*30fdc8d8SChris Lattner    * RBNContext.h: Added m_arg_vec and accessors.
1506*30fdc8d8SChris Lattner    * RNBContext.cpp (SetProcessID): New function.
1507*30fdc8d8SChris Lattner    * RBNRemote.h: Added packet type to HandlePacket & HandleAsyncPacket
1508*30fdc8d8SChris Lattner    * RNBRemote.cpp (HandlePacket, HandleAsyncPacket): Return type.
1509*30fdc8d8SChris Lattner    (HandlePacket_A): Fix a few bugs.
1510*30fdc8d8SChris Lattner    (HandlePacket_H): Return OK if target is not yet running.
1511*30fdc8d8SChris Lattner    (HandlePacket_q): Return PID of 0 if target is not yet running.
1512*30fdc8d8SChris Lattner    * testremotenub.cpp (RNBRunLoopGetArgsFromRemote): Implement.
1513*30fdc8d8SChris Lattner    (RNBRunLoopLaunchInferior): Fetch arguments from context.
1514*30fdc8d8SChris Lattner    (main) Store arguments in context, call RNBRunLoopGetArgsFromRemote
1515*30fdc8d8SChris Lattner    if appropriate.
1516