Palm OS Debugger Release Notes

Version History

Version 2.3.7.0				11/12/2004
- Partially fixed ptype and whatis for handling casted expressions.
  Next VarCreate will need to be fixed to complete the bug fix.
- Fixed an issue where global variables wouldn't be available in
  the expression view.

Version 2.3.6.0				11/10/2004
- Fixed multi-threaded debugging of Protein apps within Eclipse.

Version 2.3.5.0				11/09/2004
- POD-MI no longer causes device to freeze when Protein
  app is run on a Protein target.
- Add support for PNO Debugging on PalmOne Tungsten T5.
- Fixed a "not all control paths return a value" that could affect
  if a variable value has changed or not being properly reported
  to Eclipse.
- Fixed an issue for when using memory mapped register definition
  files that could occur if the main register context for actual
  CPU registers had differing endian swap settings than value to
  be read from memory. This would occur with Macraigor since it
  gets all of it's CPU register data in Network order (big endian),
  but any memory mapped registers would still be in little endian
  since they are just read from memory. There are now two buffers
  in a DbgRegContext to allow such a difference to happen and still
  have all values display correctly.


Version 2.3.4.0				11/03/2004
- Fix bug 68514: ADM6 now flushes inbound notifications before
  sending a Disconnect message to the target device.  This is
  critical since sending a Kill Process to the device causes a
  bunch of module loads to be generated back to POD, and each
  one has halted its loading thread (waiting for POD to set any
  previously-unresolved breakpoints).  So, the flush routine
  resumes these halted threads and the Disconnect routine now
  waits for this module load activity to quiet down bofore
  actually disconnecting.  However, Eclipse won't wait forever,
  so everything must happen relatively quickly or POD-MI gets
  terminated anyway...  We're at the mercy of the device there.
- Fixed an issue with not being able to display bitfield values
  correctly within Eclipse when using POD/MI
- Modified ADM6 plug-in to be able to split up problematic memory
  reads that used to timeout.
- Modified stepping code to read all memory needed for step in
  one chunk to avoid multiple memory accesses. Also when stepping
  over the last instruction in a function, where there is data
  immediately following the last valid opcode, we no longer
  attempt to set a breakpoint at this location.

Version 2.3.3.0				11/02/2004
- Improved multi-threaded support for debugging threaded Protein
  applications using ADM6
- Implemented the -thread-select method in POD/MI
- Rewrote the expression parser from scratch. It now can handle
  casting of numbers or variables to other types!
- Registers are now displayed when debugging Protein applications
  on OS6 devices when using POD/MI
- The Palm OS 6 RTOS plug-in has been modified to be able to 
  accept a symbolic file which describes the process and thread 
  structures and alleviates the need to continually update the 
  RTOS plug-in with each OS 6.x release. Modifications to the 
  Kernel are necessary for this support, but if the preference
  is not specified for the symbolic file, the old code will still
  work.
- Values for "char *" now also show the string value in Eclipse
  when using POD/MI.
  
Version 2.3.2.0				09/24/2004
- Improved expression parser to handle more of the expressions that
  Eclipse asks POD/MI to evaluate. The expression parser now handles
  the pointer dereference operator '*'.
- Fixed an issue where sublaunching was not working for 68K apps
- Added breakpoint setting by specifying filename:function which 
  allows Eclipse to set breakpoints on functions from the outline
  view successfully.
  

Version 2.3.1.0				09/20/2004
- Fix bug 64512: Need a way to download a shared library via Debug Mgr.
- Completed separation of Launch from Download in ADM6 plugin.
  ADM6 now supports downloading multiple executables (libraries,
  etc.) and will only attempt to launch the first one that was
  downloaded (and only after everything has been downloaded).
- Also changed ADM6 plugin to allow (but not launch) .axf files.
  Thus we can now download and launch a Protein .prc, disconnect
  (not kill), then open the .axf symbol file and re-connect to
  the target (run/launch with F5), and then continue debugging.
- Changed ADM6 plugin to no longer process any inbound notifications
  while databases are being downloaded to the target device.
  Notifications will be processed after the download/launch sequence.
- Fixed registers to display within POD/MI again with the new
  Eclipse 3.0/CDT 2.0. Also fixed register expressions to evaluate
  when the data-evaluate-expression MI command was called.
- Fixed an issue where the dereferencing of a pointer type wasn't
  removing the '*' for the whatis and ptype commands.
- Added a "DbgTargetContext::EnabledBreakpoint()" to easily be able
  to enable a breakpoint by ID, fixed a typo where "Desensitize" was
  spelled "Densitize", and modified BreakCondition so it works.
  Fixing BreakCondition showed a grammer issue with the current
  parser (and in the MI specification) which we'll have to fix later
  since the command being sent down is illegal by the MI spec rules...
- Also fixed the "whatis" and "ptype" command problems that existed
  with the newer commands Eclipse 3.0/CDT 2.0 were sending down.
- Stop the MIResponse from being placed on the heap for no reason
  and now place it on the stack.

Version 2.3.0.0				09/14/2004
- PUD changes to support a -clear flag for exec. Allows clearing of a backup.
- Fixed variable value editing in POD/MI.
- Integrated changes from other trees back to primary Main build.
- ADM6 now posts threadResumed event if RunToBkpt doesn't actually stop.
- Added thread state column to Process tab.
- With DebugMgr, this column will show "running" or "stopped" from POD's
  perspective.  That is, a stopped or faulted thread will indicate "stopped".
- With JTAG, this column will show the thread state from the kernel's
  perspective, but will only update when the process tab is visible
  and the target stops such that POD can update the thread states.
  To reduce performance impact, switch to another tab.  We might
  want to add a preference to not display this when there is an RTOS
  plug-in active though it is still useful for JTAG debugging...
- (Tr) Fixed two crashes inside format routines when bad
  data was passed in.
- (DT) 2.2.9 for Dialtone GMC build of POD.
- (DT) 2.2.8 (Dialtone-Mako build 9B)
- (DT) ADM6 v1.1.1 protocol; fix recent ADM6 breakage in Main.
- Modified array types so that the DbgVarInfo contained within the
  DbgUDTInfoArray class now has it's byte size member variable as
  the byte size of a member of the array. Prior to this it was the
  size of the entire array which needed to be cleaned up.
  Also did a major cleanup on the POD/MI variable code.	
  The COFF parser has an issue where it would parse modifier types in
  the reverse order which mainly affected multi-dimensional arrays.
- Fixed the 68K disassembler table to correctly parse NOT, DBxx, and
  BKPT instructions. Since this table is used for single stepping as
  well, it fixes a stepping issue in 68K where stepping over a source
  line that contained a NOT instruction would cause bad things to happen.
- Made the member function "GetFormat()" const as it should be.
- make MX21 usb helper to known to prefs
- New POD NOR Flasher plugin.
- Get USB download helper for MX21 working
- Re-coded the ADMRequest methodology to use a map of shared pointers.
- Fixed an issue where we weren't disassembling the Thumb
  "ADD <Rd>, SP, #<immed_8> * 4" (ADD (6)) correctly. We were omitting
  the "*4" part. We now correctly display this and also show the
  calculated offset in the comment field.
- Updated our ARM disassembler to the latest and greatest sources from
  the ARM disassembler library in the compiler group.
- Also updated the prefs to be able to take advantage of the new
  XScale specific coprocessor instructions that are in the newest
  version of the disassembler.
- Fixed a crasher that happens with the Intel toolchain where it can
  create an ELF file that had the "release flags for the compiler,
  but the -debug flag for the linker". 
- Fixed some project dependencies.
- (Tr) fix BUG57843: README PODS variable display shows array as having
  extra element in 68K debugging.

Version 2.2.9.0				08/23/2004
- Fix bug 51162: When PNO debugging, stopped thread does not
  cause (68K or ARM) target window to pop to the top, regardless
  of the UI session "pop to front" settings.
- Fixed bug (44001) with hitting cancel during a download of a
  database; database is no longer created on target device if
  the download did not complete successfully.
- Added a call to Disconnect in the case where getting the
  Procs/Threads/Modules fails.
- Fix bug 64370: POD does not know about new "watermark" field in TCB.
- Fixed the VS2003 project dependencies for a couple of plug-ins.

Version 2.2.8.0				08/04/2004
- Added support for latest Cobalt DebugMgr protocol (v1.1.1) changes.
  Created new SendProcsThreadsModules command, and new DatabaseLaunch
  command.  These used to be bolted on the back of Connect and ImportDatabase.
- Fix bug 51991 (part 2 of 2): POD is slow to open and parse .pud files.
  This half of the fix involves telling POD to pre-load the symbolic
  plug-in DLL files once, before parsing the .pud file.  Previously,
  POD would load and unload each of the four symbolic plug-in DLLs
  for each .axf file listed in the .pud file.  Since there can be
  over 200 .axf files associated with a single ROM image, this means
  almost 1000 unnecessary iterations of loading and unloading DLLs
  before the target window can appear.
- Fix bug 51991 (part 1 of 2): POD is slow to open and parse .pud files.
  This half of the fix involves telling POD to recognize that a .axf
  file extension (and some others) are NOT COFF files.  This is important,
  because the COFF plug-in reads the entire file in order to determine
  if it's a COFF file or not.  That should be fixed too, but this is
  a simple, low-risk fix that immediately means POD no longer has to
  read each and every byte of every .axf file that went into the ROM
  before it can open a target window.
- Fix bug 51719: POD crashes if .widebin is "launched" with ADM6 target.
  Fixed XFCPrcFile to first examine the extension and only attempt to
  parse .prc or .pdb files.  Fixed ADM plug-in to accept (as valid, but
  non-launchable) .widebin and .bootimage in addition to .rom files,
  and reject anything that is not valid according to XFCPrcFile.
- Fix bug 51168: PC arrow disappears when thread stops on Cobalt target.
  SourceViewFrame was adopting the context for thread killed events
  (which would arrive for threads _other_ than the one being debugged).
  This caused the target window to "lose focus" on the stopped thread,
  and (among other things) to erase the PC arrow.

Version 2.2.7.0				07/21/2004
- Fixed POD UI crash when shutting down the application before
  diconnecting from device.

Version 2.2.6.0				07/19/2004
- Bumped USB plug-in timeout (waiting for read thread to exit) from
  two to ten seconds, as sometimes it seems to get stuck in ::ReadFile()
  for five seconds.  This may have caused some instances of bug 50733.
- Fixed another potential shutdown problem in the framer, also related
  to shutting down the read thread, potentially not realizing it was
  supposed to quit. Now when reader is blocked, it waits not only for
  a pending read request, but also for the eKillRequest.  This could
  also have been causing bug 50733 as well as 50051 (especially for 68K).
- Change framer thread creation so VS.net displays better thread name.
  Also eliminated numerous VC7 warnings.
- USBPort.dll --> USBPort-POD.dll in preset prefs and default-pref code.
  This change makes POD look for USBPort-POD.dll instead of USBPort.dll.
  As of the previous change, POD will now include its own build of USBPort
  called USBPort-POD.dll (not technically needed for GUI POD, but for MI).
- Incorporate USBPort.dll into PalmOSDebugger and PalmOSDebuggerMI builds.
  Note that the debug build of USBPort-POD.dll is not called USBPort-PODD
  because the preset prefs files mention this dll by name.
- Branch USBPort (6.x) into the POD tree.
- We're doing this because the 6.x build is statically linked to
  the MSVC Runtime, and POD-MI requires that it be dynamically linked,
  since otherwise the CRT_INIT gets called twice and deadlocks.
- We will have our own USBPort which will ship with POD, rather than
  referring to the "stock" build that HS6.x installs into System32.
- Fixed BUG50670, which talks about being able to disable breakpoints
  in Eclipse, but not being able to re-enable them.
- Fixed a crasher in content menu code.

Version 2.2.5.0				07/13/2004
- Removed delay in framer reader thread and re-instated overlapped
  I/O in USB plug-in for USBPort v6.0.
- Fixed a POD UI issue where if "File->Save" was selected the main
  executable would become a zero byte file (default CDocument save
  implementation is to open the file for write, and then call
  serialize which in our case didn't do anything). Now it actually
  calls the two routines to save the XML .pud and .opt files, and
  leaves the main executable file intact.

Version 2.2.4.0				07/12/2004
- Relax assert in Dwarf11 parser to not complain about zero-length functions.
- Added support for downloading PDB files. This involved adding support
  for PDB files into the XFCPrcFile class, adding support for downloading
  record databases, and cleaning up the download code a bit.
- Fixed absolute paths in project file to be relative.
- Fixed project file paths to be relative to the project instead of absolute.
- Really fixed the issue where if windows were not being created for
  each thread, yet the "bring to front" pref was enabled, that the
  thread windows weren't being brought to the front.  Now they are.
- Fixed an issue where if the windows were not being created for each
  thread, yet the bring to front pref was enabled that the thread
  windows weren't being brought to the front.
- Fixed missing process creator codes in DebugMgr debugging.
  If process is missing a "name" when a module arrives, we
  now grab the creator of the first loaded module in the process.
- Added default values to event and process constructors.
- Added new eUINotifyProcessModified event code to get
  process tree view to update and display new process name.
- BUG41694 - Fixed an issue where thread windows would be created
  and brought to the front if and when a thread stops for debugging
  with live debug services (ADM6). Now there are prefs with defaults of:
  Debugger UI->Session->Create separate windows for threads = false
  Debugger UI->Session->Automatically bring thread windows to front = false
  With these defaults we won't popup thread windows to the front
  automatically unless prefs are modified, and thread windows won't
  be created as stand along windows automatically unless users ask
  for it. The main target window can be used, and the users can of
  course double click on a thread in the "Processes" to get a stand
  alone window if desired.
- Remove multi-ice configs for POD-MI builds.
- Fix DebugMgr: Setting entry point breakpoint was not working,
  probably due to recent optimization where processes are created
  in the background in advance of SysAppLaunch, meaning that the
  processCreated message arrives with no creator/type information
  because nothing has been launched in it yet.  This means that
  the original code to "watch" for the processCreate message that
  matches our "app to be debugged" was failing.  Moved entryPoint
  breakpoint setting code into ModuleLoaded notification, since
  we will definitely get a ModuleLoaded for our app before it can
  run.  This is a better place to set the breakpoint anyway, since
  the thread is explicitly halted on the device until we release it.
- Added "Once Breakpoint at Function" to SourceView right-click menu.
- Also fixed what appears to have been a subtle bug in a call to
  target->SetBreakpoint call, where eBreakLocAddress was being passed
  for bpKind instead of eBreakKindRegular.
- SourceViewFrame's CreateFunctionMenu now always sorts the function menu
  (now sorts by lineNum if alpha was not requested)
- This fixes a bug with pacc symbolics since pacc doesn't seem to
  generate function info in source file order.
- Also fixed bug in "Goto function" that (if not in source mode) would
  always display the gone-to function in mixed-mode.
- BUG49251 - Fixed global variables so they show up. Static variables
  already worked, but globals now work as expected with COFF symbolics.


Version 2.2.3.0				07/08/2004
- Add new TFTP-over-Ethernet download driver.
- Fix bugs 47016, 47018, and hopefully a few others:
- 68K Connect now gathers more info about the target, mostly
  related to how well it can support PNO debugging.	
- 68K Load now checks this information and, if all is not right,
  can display one of several messages informing the user what is
  wrong -- like bad comm settings (ARM and 68K must be configured
  to use the same comm settings, and only serial on 5.x), incorrect
  ARM protocol setting, missing DebugNub or pre-6.1 Cobalt, etc.
  Also leaves copy of message in DebugConsole, including some
  messages it doesn't bother displaying an alert for (like "no
  PNO debugging in [PalmSim or 68K devices]").
- Made LoadDatabase a bit faster by reinstating a faster timeout
  while waiting for DmCreateDatabase to time out on 6.x.
- Resume no longer does anything if 68K target is already running.
- Rearranged Disconnect code a bit to try to speed things up as
  well as to try to fix the intermittent crashes at shutdown.
- Add more logging to framer (in Open, Close, and BytesAvailable).
  Fixed BytesAvailable to return non-zero even if a frame is not
  ready but there are bytes waiting to be read from the comm layer.
  This fixed a race condition at shutdown when debugging 68K+PNO
  and we told the DebugNub to enter the debugger, and then also
  sent a SysReset RPC which sometimes got dropped (or "stuck" in
  a stopped PACE) before could be handled.  Now that we're getting
  the EnterDebugger response, the nub itself is able to handle the
  SysReset and reset the (5.x) device.
- Add new constructor to DbgPrefDataExtractor that allows passing in
  the name of the pref panel from which you'd like to extract prefs.
  This means anyone looking to read a pref (like the Dwarf2 plugin,
  or the 68K protocol) doesn't first have to iterate all installed
  plug-ins to find the correct path to hand to DbgPrefDataExtractor.
  The plug-ins are still iterated (in the new constructor), so the
  caller need not worry about that.  Updated Dwarf2 code to use this,
  and the next change (to 68K protocol) will also require this change.
- Fixed POD/MI being able to show variables correctly when different
  stack frames are selected.
- Fixed POD/MI display of 68K registers to display them correctly, and
  to display the values correctly when clicking on other stack frames
- Fixed an issue that could cause multiple versions of the Palm OS 
  Simulator or Palm OS Emulator to be spawned if the TCP/IP port number
  was not set correctly in POD/MI.

Version 2.2.2.0				07/06/2004
- Fix bug 49698: Add all-in-one pref files for 6.x/MX21/PXA250.
- Remove unnecessary items from ADM6 preset pref files.
- Fix bug 49119: allow_rom_addr_override now defaults to off for MX21.
- Remove some unnecessary prefs from OS5.xDebugNub preset prefs.
- Fixes for bug 49369: Clean up and fix SerialLinkFramer for better
  throughput and cooperation with multiple clients.
- DebugMgr listener now reads for 100mS at a time, not 1000mS.
- Framer always creates reader thread now for use with all transports.
- Framer tracks waiting readers and blocks reader thread if none.
- Framer now requests exactly what it needs from the transport in
  order to make progress parsing the next (incoming) frame.
- Purged old single-threaded framer (USB) polling code.
- Numerous improvements to framer logging info.
- In sockets, fix time_out: uS = mS * 1000, _not_ mS % 1000.
- Tested extensively with 6.1 on PXA250 over serial and USB as well
  as PalmSim 6.1 using sockets.  Preliminary tests with Eclipse looked
  ok as well, but need more validation with Eclipse variants.
- Fixed USB critical section usage to protect only read/write
  call to USBPort.dll, rather than (for example) blocking all
  outbound packets for the entire duration of a read timeout.
  Also removed old dead code that just cluttered up the file.
- Exposed DUMP_BYTES (and DumpBytes) in DbgCommLogging.h.
- Logging (only) changes to framer plug-in; nothing else.

Version 2.2.1.0				06/22/2004
- POD USB download plugin - currently only limited support for internal use.
- Initial code for accessing the TCB and PCB structure information from a
  symbolic file (AXF file). This won't require the RTOS plug-in to be updated
  for each revision of PalmOS and will also allow for complete visibility
  into the TCB and PCB structures. The corresponding pref (prefdef.xml and
  prefdat.xml) files aren't being checked in until more coding has been done
  to complete this approach, but is being checked in for testing.
- Added initial ".debug_macinfo" support for extracting macro information
  from this debug info section.
- Fix the TFTP bug which was leading to corrupt downloaded ROMs, as seen by
  some folks during PDK training, and probably others.
- Added the missing header file for GNU/GCC compilation for OSX compiling.
- Fixes for recently checked in code for Mac OSX. Sinc only XFC and DebugEngine
  are building on OSX, I wasn't able to verify all changes on OSX alone. XFC
  endian #defines were renamed from LITTLE_ENDIAN and BIG_ENDIAN to
  XFC_LITTLE_ENDIAN and XFC_BIG_ENDIAN since it conflicted with OSX headers,
  and the XFCPrcFile had a resource ID member changed from "id" to "resID"
  since "id" is a reserved word in objective C.
- DebugEngine XCode project and support files for MacOSX builds of DebugEngine.
- MacOSX XFC and DebugEngine implementations are included here with the code
  changes that are needed and the XCode projects. I am sure I probably missed
  a few files, so I will probably be submitting another change closely following
  this (and this should only affect OSX builds).
- Fixed the batch file to remove the mx21 config file that was recently added
  for non-JTAG based builds.
- Trimmed the debug directory as well for JTAG cleanup.

Version 2.2.0.0				06/15/2004
- Added shared library debugging support within POD/MI
- Fixed an issue where the preference panels in the UI version of POD may not
  show up until the "Debugger UI->Fonts" panel was loaded
- Fixed a delay issue caused by terminating applications from Eclipse
- Fixed a race condition that could cause debug sessions to lose packets
- Fixed the register disassembly formats to show up for all registers that
  have it
- Fixed a crash issue with debugging protein applications

Version 2.1.9.0				06/07/2004
- Add new mx21 config file to POD config directory.
- BUG46842 - Fixed an issue where step over had to be hit more than once for
  single source lines that had reverse branches within them. This was
  intentional behavior prior to this fix as it allowed stepping over statments
  CodeWarrior generated single line for and while statements (loops that
  weren't bracketed by {}). The GCC/COFF info that is generated caused more
  issue with this approach, so it was removed for stepping over and in.
- After recent OnCmdMsg fixes, code that was in the OnCmdMsg for the
  SourceViewFrame class was always invalidating the breakpoint boxes. I am
  not really sure why this was always getting called, so I removed it since
  it was getting called way too much. Added other means of detecting that the
  source control had changed it's v-scroll position which works much better.
- Also fixed the floating and extra content windows to correctly respond to
  the OnCmdMsg chain correctly to finish out the UI update fixes. Now the
  memory combo boxes that are in floating and extra windows (the stand alone
  windows) will respond correctly to key commands and also update the UI correctly.
- Pref window is destroyed upon invoking the "OK"  button via DestroyWindow on
  the associated frame.  Checked that all destructors were being invoked (doc/frame
  and view) and checked that CWnd resources were being released via Spy++.

Version 2.1.8.0				06/04/2004
- Fix (and make consistent) all semihosting entries in Preset Prefs for RDI
- Fixed an issue with "Show All Files" that appeared after recent modification
  that would cause it to crash if you selected "Show All Files". No version of
  POD have yet been officially built with this error in there.
- Fixed the message routine throughout the debugger UI. The MFC Document/View
  architecture has a goofy way of passing commands around and I fixed all
  instances to properly deal with this. Now all items contained in the CView
  associated with a a CDocument can now properly update the UI. This fixes a
  few bugs that stated that Cut/Copy/Paste didn't work within combo boxes that
  were added to the memory window, which revealed this deeper issue.
- Add MX21 preset pref file for OS 6.1 and RDI
- Added minimal ADM6 logging.
- BUG43694 - Fixed a potential issue where if someone debugs an executable image
  in one location, then copies the entire directory to another directory, that
  could cause multiple files to be loaded from the old location since the .pud
  file had an absolute path to the old executable. Now if the path of the first
  executable in the .pud file doesn't match the .pud file path, a warning will
  be displayed allowing users to not load the information. Also modified
  DbgTargetContent to detect duplicate executables better by just looking at the
  executable name and not just comparing the absolute path.
- Fixed a few unsigned/signed warnings.
- BUG44901 - Fixed the 68K plug-in to auto launch PalmSim executables if their
  path is supplied in prefs, or it will prompt users to launch PalmSim and click
  OK when it is ready for debugging.
- BUG43608 - Fixed ADM6 to return the correct error code when user cancels the
  connection progress dialog in order to prevent an additional dialog from
  popping up stating that connection failed. If the user asks to cancel the
  connection process, they should already know it failed.
- BUG47367 - Fixed an issue where TINFO (type info) table entries at the end
  of the first page (the zeroed out blank space) and the second and higher
  pages of the TINFO table may not be parsed correctly.
- Modified the file view to show both executables and symbolic files. Now there
  are two root items: "Executables" and "Symbolics". All files that have appears
  in this view up until now will now appear under "Symbolics", and under the new
  "Executables" item, there will be a list of the all the executables for a
  target (which is currently usually only 1 item. This was needed to complete
  shared library debugging for 68K modifications. Context menu items have also
  been added to allow adding and removing executables. Now 68K users can load
  their main PRC files, then add any shared library PRC files by selecting "Add
  Executable File...". This will allow multiple PRC files to be downloaded and
  debugged simultaneously.

Version 2.1.7.0				05/25/2004
- Stopped the "EvtWakeup" from being sent to the Palm OS Emulator so now
 "EvtWakeup" is only sent to pre OS 5 devices.
- Make the sockets plug-in (client) return an error when a socket was closed 
  correctly by the server. In such a case, the "recv" function returns 
  zero bytes. This should stop an extra POD thread from hanging around 
  after the UI or MI thread has terminated.
- Enabled shared library debugging and debugging for resources with types: 
  'pupd','extn','exte', 'libr' (in addition to 'code').	
- Also added code that fixes up the COFF symbolic information that gets
  becomes incorrect if build-prc adds a branch to "start" if shared libraries
  are not built with "start" at offset zero in the code resource. The COFF
  symbolic plug-in can adjust all addresses by 2 or 4 if the PRC file is 
  available for each section that had an issue before registering the 
  information back with POD. This means GCC generated shared library COFF
  files can be hosed up and we can deal with this without needing a fix 
  for the PRC tools. Files that don't have an issue will work fine as well 
  of course.
- We now disable the 'gdbS' 0 feature for Palm OS Emulator all the time
  since it enables it automatically just before launching app by calling
  FtrUnregister('gdbS', 0);
- Added a fix so that stack crawls will not skip the second function when
  PC is sitting before the A6 stack frame has been created. This should 
  also fix our 68K stack crawler to be able to handle A7 based stack frames. 
  We check to see if A6 has been spilled onto the stack, and if it hasn't
  we assume A7 stack frames. We also now correctly terminate stack crawls
  when a NULL A6 stack frame is encountered which stops memory reads from
  invalid locations.

Version 2.1.6.0				05/19/2004
- Modified POD/MI code to do only one stack crawl each time a thread is 
  stopped to improved performance of slower debug protocols (like serial)

Version 2.1.5.0				05/19/2004
- Added version resource to PalmOSDebuggerMI.exe which contains the
  current version and copyright information.

Version 2.1.4.0				05/17/2004
- EvtWakeup() calls only follow a SysUIAppSwitch call for 68K launches
  for Palm OS 4 and earlier OS versions. Palm OS 5 and 6 devices were not
  happy with these extra calls.

Version 2.1.3.0				05/14/2004
- Fixed USB with POD/MI for debugging 68K applications and also improved
  the download and debug speed over USB (thanks Keith).
- Fixed many timing issues in POD/MI for debugging 68K apps and debugging
  only the 68K part of a PNO within Eclipse.
- Fixed an array display issue in the variables view.
- Added a call to EvtWakeup() following a SysUIAppSwitch to allow 
  applications that are sleeping when in a dialog to switch to the newly
  downloaded application without having to tap on the screen.
 
Version 2.1.2.0				05/04/2004
- Made some fixes to allow POD/MI to quit debug sessions more gracefully
- Added the ability for the sockets plug-in to lookup IP names

Version 2.1.1.0				04/29/2004
- Added some fixes for MI and GDB compatability when POD MI receives
  SIGINT signals from our host.

Version 2.1.0.0				04/22/2004
- Initial version of the Palm OS Debugger built with VS7 2003 and
  with support for the GDB MI using the PalmOSDebuggerMI.exe command
  line application.

Version 2.0.1++++ (engr build 3)	01/14/2004
- Fixed an issue with DWARF2 line tables when compiler adds line
  table entries that refer to the current file as an inline file.
- Fixed memory window to have two CComboBox controls above the tree/list
  view: one for address and one for byte size so the memory window is
  now more like other debugger memory windows and should be more
  intuitive. Also by separating these two into separate fields,
  expressions can now be used when typing the address or byte size
  (which addresses a feature request and also fulfills a change that
  should have happened a long time ago).
- Added the ability to use low level symbols to the expression parser.
  Now any ctoken will be searched for in the variables first, then if
  no variable matches, the low level symbols will be searched.
- Fixed an issue where if you had a conditional breakpoint and set the
  PC to cursor or changed your stack frame and the stack frame or new
  PC was at a conditional breakpoint that would be true, it would
  attempt to evaluate the condition.
- Fixed the default format for address to not have upper case hex
  numbers which fixes the "DATA" disassembly entries from having
  upper case addresses when all other addresses are lower case.
- Fixed POD crash at shutdown when debugging 68K and
  ARM on OS 5 (where 68K target owns the ARM target).
  MFC seems to destroy some things like window handles
  before we're really done with them, so we now set the
  kTargetIsGoingAway flag for the owned ARM target before
  disconnecting it.  This prevents UI-related events
  from being re-sent to views which may be half-torn-down,
  and thus prevents a few asserts and a subsequent crash.
- Fix "Lookup..." context command by first resolving the entered
  address as section-offset instead of absolute so the symbolics
  will be able to figure out which source file to display.
- Detect when a software reset happens and clear the entire process
  and thread list to make sure when we reboot, we get a correct list
  of processes.
- Fixed POD to save and restore file paths when they have been
  modified by the user. This typically happens when a symbolic
  file was built on another computer, or when sources have been
  moved on a host computer, and the user changes the file path
  using the POD UI.
- Added Palm OS 5.4 preset prefs
- Made register lookups by name case insensitive. This also means that
  expressions can have register names in any case.

Version 2.0.1+++ (engr build 2)		12/17/2003
- Fixed parsing of line tables that have multiple LNE_end_sequence
  entries (like the DWARF2 generated by CodeWarrior). The result is
  line table entries that appear at the end of a sequence now have
  the correct size. This will only affect CodeWarrior generated
  ELF/DWARF2 files, as ADS only emits one of these entries at the
  end of a line table.
- Merged in a fix for improving stack crawl when in Thumb code
  that does code such as:
        0xbc38      pop {r3-r5}
        0xbc08      pop {r3}
        0x4718      bx r3
  ...and where the PC is on the "BX r3" instruction. We now show
  the stack crawl correctly for such cases.

Version 2.0.1++	(engr build 1)	        12/17/2003
- Fix for DWARF2 to deal with DW_AT_comp_dir attributes which do
  not have a terminating directory delimiter on the path.
- Commented our the "#define DEBUG_VERIFY_INTERFACES" line that
  was stopping the DLLs from being unloaded (as expected) as this
  feature seems to cause classes to hang around longer than needed.
- Don't leak ADMRequestMap structures, especially when they contain
  pointers to local variables.  This change may fix the intermittent
  crashes when running in Windows XP.
- (Also, don't leak response buffers.)
- Updated the TFTP download plug-in to be able to use software
  breakpoints instead of rely on semihosting. Currently work
  needs to be done on the TFTP servers to support this, but we
  are very close. This version still works as before with semi-
  hosting, but is ready for the switch. More pref settings will
  need to be added for flash burning if this functionality is added.
- Added a constructor that takes a c-string path to the ELF file.
- Added the version resource to the VC6 project and included the
  DbgVersion.h the "legal" way.
- Added the download plug-in .h files to the main files view.
- Fixed an issue with ReadMem and WriteMem where an uninitialized
  variable was wreaking some havoc.
- Added a fix to not stop console's from logging if they are flushed
  under certain circumstances.
- Filled in 4 breakpoint command translations.
- Update the VC7 project to match the latest source arrangements
  (remove the ADM6 "DbgMgrListenThread" source & header files).

Version 2.0.1				12/12/2003
- Fixed ADM6 request code to not leak memory and also to remove
  needed packets from the queue as to not cause a possible crash.
- Fixed ADM6 ReadMemory and WriteMemory calls to behave correctly

Version 2.0.0				12/08/2003
- Many ADM6 fixes to improve functionality and make sure USB 
  debugging is functional. For USB debugging, be sure to install
  the Palm OS 6 IDK to ensure the latest and greatest USB drivers
  are installed on your system
- Fixed some update issues in tree views and sped up the memory
  view refresh times.
- The "Goto Function" menu now works in Disassembly mode.
- Fixed issues in the Thumb disassembler where some 32 bit
  BL/BLX instructions were being incorrectly disassembled as valid
  when they were actually illegal instructions, and where conditional
  branches with the AL (always) condition were not be properly shown
  as illegal.
- Thread faults are now properly displayed again after the premature
  release of 1.9.8.
- Thread windows for threads whose process is killed now properly 
  disappear when using ADM6.
- Added preset prefs for ADM6 with USB and fixed some preset pref
  settings for the other ADM6 pref sets.
 
Version 1.9.8				11/25/2003
- Forgot to change the names of the old header files to the new ones.
- Checkpoint for POD/MI interface: Connected the POD proper to
  the interface.  A target executable can now be connected to
  and a breakpoint set.  This fleshed out the MI's architecture.
- Architectural maturity showed the need for a different kind of
  response class -- an actual response that can compose itself,
  instead of a dumb response and a "composer" class.
- BUG20121 - Fixed an issue where resizing the window vertically
  so that it goes above the main splitter bar between the main
  tab view and the source view in the target winodw could hide
  the source view completely from view. This could show itself
  when cascade or tile window menu items were selected.
- Also associated the splitter bar with the correct parent
  window (the parent of the CView class which is a CFrameWnd)
  so that the status bar appears to be part of the main target
  window.
- Fixed VC7 XFC project to include new XFCLogger class and
  header files.
- BUG32556 - Stopped the variable view from trying to display
  variables if a thread was running and the view was selected.
- BUG26294 - Added prefs to be able to show line numbers by
  default when opening new source views, and also a pref to
  be able to sort function menus by default. As before, holding
  control or shift down when bringing up the context menu will
  reverse the current function sort setting.
- BUG26294 - Fixed the debugger to actually be able to display
  bold and italic fonts for any of the views by setting the font
  pref values accordingly. Prior to this fix, bold and italic
  settings were ignored. Also hid the extra styles that were
  available in the Win32 CFontDialog so that underline,
  strikethrough, and other styles we don't need are not displayed
  in the font dialog. Now only Font Face, Font Style, and Font
  Size are able to be set.
- BUG27062 - Fixed a problem where two dialogs would be presented
  if connection fails to RDI DLLs.
- REQ30023 - Add an xml extension if there isn't one to exported
  pref file paths.
- REQ36654 - Added live prefs to the ARM plug-in and now a
  pertinent message is displayed if prefs cannot be immediately
  changed while you are connected.
- BUG25725 - Fixed an issue where if there was no prefdat.xml file
  for a prefdef.xml file that revert didn't work correctly.
- After playing around with setting to test XFCLogger, forgot to
  set the flags back to the needed values. The flags are now correct.
- BUG34195 - Logging window is not now always popped up. There
  are prefs to set where to log to and the choices are: Disabled,
  Log to Debug Console, Log to Separate Console, or Log to File.
  There is also a pref for the path to the log file as well as a
  pref for the entry point to stop at.
- XFCLogger class has been added to XFC to enable easy logging
  using only a std::ostream* that can be set and modified as needed.
- BUG37067 - Fixed an issue where a process exited notification
  was received, ADM6 thread windows would not be closed down properly.
- BUG37521 - Fixed an issue where the last entry in a DWARF1
  line table was not being processed correctly if it was the
  last entry for a file compile unit scope.
- Fixed an issue where a blank dialog may be popped up if a normal
  RDI error was returned from RDI::Execute().
- Fixed a build error caused by an outside change to a base class.
- BUG34142 - Status bar areas are now wider to support larger fonts.
- Changes to the MI parser: clean up detection of native vs. MI
  command and match up options and option args.
- BUG34709 - Added a window focus saver to the UI Alert class and
  many other things such as file save/open dialogs, and text dialogs.
- Fixed stepping for 68K so that stepping in for loops works more
  as expected.
- Forgot to add the MI command parser and response generator classes.
- BUG37070 - Backed out a feature that we thought would be a good
  idea where the main source view didn't lock onto stopping threads
  contexts since there was a stand alone window for each thread.
- REQ37151 - Warning dialogs posted by RDI plug-ins are now modal. 	
- Added some calls to the UI interface to allow plug-ins to get
  the native window handles for the application, and for the main
  target window in case the DLLs they link to need this information
  (which was the case with RDI DLLs).
- BUG37148 - Fixed the case where a breakpoint expression was displayed
  once when the breakpoint was hit, then again if the session was killed.
- BUG37159 - Fixed an issue with skanky SYM info which defines built
  in types that are "pointer to pointer to char" and "pointer to
  pointer to void" etc. We now correctly translate these built-in
  types to types that the POD symbolic engine likes and displays.
- Checkpoint for MI.  Added a CLI class and changed the MI class.
  At this point, the MI input command parser works.

Version 1.9.7				11/18/2003
- Eliminated long delay during 68K application debugging startup.
- ADM6 stepping fixed when stepping over/into/out of a single
  instruction statement (stepping in mixed or assembly mode)
- Fixed an issue where multi-dimensional arrays had their 
  subscripts reversed in the variable type field. Variable values
  were displayed correctly, just the type name was incorrect.
- Fixed some 68K SYM parsing errors in the SYM symbolic plug-in 
  where certain user defined types were not showing up correctly 
  due to parsing errors. 
  
Version 1.9.6				11/14/2003
- Fixed an issue with parsing psym symbolic files where pointers
  to pointers were not being displayed correctly in all cases.
- Fixed the text find dialog in the source views to act properly in
  all edge cases.

Version 1.9.5				11/11/2003
- Fixed an issue with the TFTP plug-in where it wasn't being a good
  win32 sockets citizen and calling WSAStartup() itself. It now calls
  WSAStartup() and WSACleanup() correctly. Turned out if no one else
  in the current process called it, TFTP would fail to download..

Version 1.9.4				11/10/2003
- Many fixes and updates to ADM6 to both the protocol and the code 
  in Palm OS.
- When Cobalt thread faults when using a JTAG protocol, we now pop up
  a dialog and display a stand alone window with the thread faulted 
  in it. Since we are not currently stopped at this thread when a 
  thread faulted notification is sent to POD, it would be misleading 
  to show the thread as the stop context, but we now do show the thread
  is a stand alone window. When this window is brought to the front, 
  it will update all tabbed views and floating windows so the stack 
  crawl for the faulted thread can be viewed.
- Added a better dialog to RDI plug-in for when we are unable to force 
  the ARM processor into debug mode while it is running (when we can't
  stop it) due to it being in low power, doze or sleep mode. The dialog 
  now gives more useful information and allows 3 options: Abort, Retry 
  and Ignore. Abort will allow you to immediately disconnect from the 
  Multi-ICE. Retry will give you an easy way to send another halt 
  attempt and allows you to quicky tap the screen and hit the "Retry" 
  button, or type "r" on the keyboard sinc R is the shortcut for the 
  retry button. Ignore will allow you to do nothing at all. This dialog
  is only displayed after unsuccessfully halting the ARM processor.
- Added code that checks the return code from run for when users click 
  on the red reset button on the Multi-ICE server while POD is running
  code through the Multi-ICE, and causes a disconnect if this happens 
  and the Multi-ICE.dll doesn't crash first. 
- Modified the source view context menu's "Set Breakpoint at Function" 
  submenu put a check mark on any functions that have breakpoints set
  at them. This allows you to see which functions are checked to 
  quickly see which functions have breakpoints set at them, and also
  allows you to quickly set AND clear (if you select a checked function
  it will clear the breakpoint) breakpoints.
- Fixed an issue where thread register reads using the Palm OS 6 RTOS
  plug-in would sometimes not get the correct thread values.
- Implemented thread specific UI updating for ADM6.
- TFTP improvements: on-board feedback through LEDs on DBPXA250 boards
  it's now possible to figure out what the board is doing:
    - Set LEDs to display all zeros when tftp code first runs on board.
    - Set LEDs to display static IP address, if specified.
    - Set LEDs to display DHCP-related txCount and timeout values
      while waiting for reply from DHCP server.
    - Set LEDs to display DHCP-granted IP address.
 
Version 1.9.3				10/23/2003
- Very small nit picky optimization for access to m_TINFO array.
- Added code to correct the CSNTE table for SYM 3.3 files that were
  generated by CodeWarrior that have a swapping bug in them where each
  even MTE index in a CSNTE statement entry is incorrectly swapped. After
  determining that his bug was in CW7, CW8 and CW9, I decided to fix it
  in our plug-in. MW had said that this bug was introduced in CW9, but
  that turned out to not be true and the bug has been in MW code for a
  long long time.
- Fixed very strange preference panel bug where panels were blank.
  For some reason, the PropListBoxDlg class didn't like being the
  size that it was.  Removing m_suppressDialogs (which was added
  in change 171850) caused the problem to go away.  As it turns
  out, adding a new m_padding member also fixes things.
  This bug seems to only happen in Release builds (presumably Debug
  builds have other members which already alter the size of the
  structure -- in fact, I really hope this doesn't now break Debug
  builds...).  Also, it's only been seen (so far) on two separate
  WinXP systems, but it happens with engineering builds as well as
  SCM builds so it's definitely not just a problem with an
  individual build environment.
- Removed the need for the PropListBox.h file which was only needed
  for it's line: #include "resource.h"
- Minor cleanups to 68K plug-in:
- Connect does 30 1-second "steps" instead of 20 5-second ones.
  This means the progress bar increments one segment per try
  rather than one then two then one, etc.  It also now takes
  up to four seconds less time to recognize when the console
  has been activated and thus downloading starts much sooner.
- 5 second timeouts were put in for 6.x and/or PalmSim.
  Now they're the only configuration that gets them.
  Pre-6.x targets now get 2-second timeouts instead.
- BC@MW pointed out that the "Resume ARM then 68K?" dialog
  asked a yes/no question but the buttons were OK/Cancel.
  Now they are Yes/No with default of No.
- Fixed bug reported by BC@MW: ARM target window got confused
  when trying to resume after PostLoad resolved previously
  set breakpoints.  The reason is that something was happening
  to the m_debugContext, which we were passing to GetTarget.
  It's better to simply pass m_targID and now that we do that,
  everything works like it should.
- Updated source for use in MS.Net (fixed many easy to fix
  warnings that warranted fixing).
- Fix debug assert at shutdown; the logic was wrong.
- Removed Print Setup...  and New  from main File menu.
  Fixes BUG35340 and BUG35342.
- Pass the CPSR in the thread-stopped message, since POD depends on having
  that information before beginning disassembly.  Revs the wire protocol, and
  so needs a newer version of POD, but older POD will continue to work (just
  might get the wrong CPU choice if a thread stops in code for which no debug
  symbols are available).

Version 1.9.2				10/20/2003
- Always use POD's step logic when connected through ADM6

Version 1.9.1				10/18/2003
- Change the ADM6 implementation of DbgBreak() to use a new
  controlled fault.
- Added a progress bar to ADM6 connection process and also provide
  explanations when ports are unavailable. 
- Added a fix for on device Palm OS 6 68K debugging to make sure
  PACE is resumed before issuing a SysReset() at end of debug 
  session.
  
Version 1.9.0				10/14/2003
- Improved the ARM stack crawl to be able to use the CPU map 
  information more effectively, and also modified the stack crawl 
  to be able to deal with functions that start in thumb with a: 
  BX PC followed by a noop. This kind of function is commonly used
  in runtime code where a function could be called by either ARM
  or thumb (such as __16__rt_memcpy_w). 
- BUG32431 - Fixed an issue where a PalmSim application could not
  be stopped by POD. The solution was implemented by Patrick Porlan
  which mimicks Palm OS Emulator's ability to respond to "state" 
  packets with one major difference: the state packet is sent to 
  the console channel (not the debugger channel) yet it's reply 
  is received on the debugger channel. A propper version of PalmSim 
  must be used (one that has the stop fix in it).
- BUG34483 - Fixed not being able to select a protocol for a 
  different CPU (ie 68K protocols can only be selected by 68K 
  debugger plug-in prefs, and ARM protocols can only be selected 
  in ARM debugger plug-in prefs).
- Read/write mem in the ADM6 protocol now specify the process in 
  whose context the read/write operation is to be performed. This 
  is necessary to do things like stack crawls, because thread stacks
  are not visible outside their home process.
- Fixed an issue where stack traces for threads when using JTAG 
  would not be displayed after a recent fix that was made for ADM6.
- BUG34238 - Pop up a dialog if anyone tries to download an AXF or 
  ELF file to the ARM Debug Manager (ADM6).
- Added a boolean to suppress the "Save modified preferences?" 
  dialog that can occur repeatedly when importing pref files that
  have more than one panel's worth of data in them.
- Added logic to detect if prefdat.xml files are read only, and 
  attempt to unlock it if users attempt to save prefs to the
  file.


Version 1.8.9				10/03/2003
- BUG33985 - Fixed a bug that was introduced by changing the
  register set ID to a UInt32 from a UInt16 which prevented
  all SB based globals from being able to be displayed.
- Fixed Macraigor to use the ARMSemihost class exclusively.
  This eases maintenance of the ARM semihosting functionality
  and completes the migration to this abstracted class that can
  be used by and protocol plug-in (and currently is used by
  Macraigor, TI XDS, and partly by RDI (since RDI handles all
  normal semihosting calls already)).
- Made sure the thread register context of a faulted thread was
  being invalidated prior to a thread faulted notification going
  around. I wasn't currently affecting anything, but it needed to
  be fixed.
- Fixed a few cases where when DbgEvent.code == eDebugUpdateUI
  the reason was not properly being checked for being
  DbgEvent.reason == eReasonDebug. This became more apparent
  after a recent fix for reducing the window count.
- Removed unused variable.
- Fix BUG33988:  changes the way that transaction timeouts are detected.
- Added a fix that prevents circular typedef references from hosing
  our DWARF2 plug-in (like the ones that Metrowerks was incorrectly
  generating which was identified to be a linker bug).
- BUG29824  - Added a fix to the stack backtrace correction code (the
  stuff that will back up the return address to the actual instruction
  that called the function) that will correctly show the starting
  address of 4 byte BL and BLX instructions in stack traces.
- BUG31402 - Fixed TFTP so that when ROM download is complete and
  semihosting is not enabled, it will automatically stop. 
- BUG28845 - Fixed an issue where if you select Clear All Breakpoints,
  Disable All Breakpoints or Enable All Breakpoints from the context
  menu in the breakpoints view you got multiple alerts. Now a single
  alert is posted if anything goes wrong.
- Second fix for minimizing window count, this one should fix the
  menu bar being out of sync when a process is running.
- CR133: Implemented ARMSemihost::Semihost_PalmOS_Remove_Breakpoints
  and ARMSemihost::Semihost_PalmOS_Restore_Breakpoints.
- Also changed DbgTargetContext::UnresolveAllBreaksInSection and
  DbgTargetContext::SetAllUnresolvedBreakpoints fom private to public
  so ARMSemihost can use them.
- Added a debugging aid that will verify that DLLs are still loaded when
  code within them is being called. When the DEBUG_VERIFY_INTERFACES
  symbol is defined, DLLs will never be unloaded even when their ref
  counts are zero. The verify calls will make sure a ref count to an
  interface from a DLL is greater than zero before and after using a
  call into a DLL in all of the DbgIntImp____DLL classes that are
  contained in the DebugEngine. If an assert fires off it indicates
  something caused the DLL to be unloaded and yet something is going
  to try or just returned from code that would have already been
  unloaded (if this special verify mode had not been enabled) and a
  crash would probably soon follow.
- Added stream based logging to Win32 serial and socket plug-ins to
  be able to turn on logging using a single #define when it is needed
  and no serial port/socket monitoring program is available.
- CR133: Added initial semihost handlers for remove/restore
  breakpoints. Should work for both RDI and Macraigor.
- Fixed the serial prefs for ADM6 to not have DTR enabled incorrectly.
- Made a m_packetTimeout member variable so we can use one value for
  timeouts for all the send/receive calls to the 68K debug manager.
  Upped the timeout to 5 seconds to allow for PalmSim debugging.
  PalmSim sometimes takes up to about 5 seconds to respond to a
  commend when talking to PACE. We need to still determine what
  this delay comes from. This fixes a few debugging with PalmSim
  issues. Also modified the LoadDatabase call to correctly error
  out if certain calls timeout which was not happening before and
  was causing bad things to happen.
- BUG31967 - Renamed any visible instances of "PalmOS" to "Palm OS"
  and any visible instances of "Poser" to "Palm OS Emulator". Also
  fixed any source files to be able to deal with using/importing old
  pref values that contain these outdated strings. Cleaned up the
  preset pref files.
- Added semihost selectors for remove/restore breakpoints.  SignVfy
  library will make these calls in ARM DEBUG builds, prior to
  verifying the signature on a signed code resource.
- Added asserts to check for AT_high_pc being less than
  AT_low_pc to indicate to us that we have bad DWARF1 data.

Version 1.8.8				09/29/2003
- Added stack frame template caching to speed up stack crawling a bit
  and avoid accessing memory too much and also fixed a stack frame bound
  finding routine (for when get routine name function fails) so that it
  doesn't return a HUGE address range incorrectly and fry your HD by
  attempting to allocated a lot of memory when trying to parse a stack frame).
- Fixed the ResolveAddress call to subtract the length of the function name
  (which was included in the address range returned by 'sysPktGetRtnNameCmd').
  Fixing this address range cleans up our stack traces a little bit.
- Cleaned up a few more places where the stack frame will need to be zero.
- Fixed an issue where if user is stopped in code and a stack frame is
  selected other than the first stack frame, and the user stepped, the
  DbgContext that was passed down to the step could have an incorrect
  stackFrameID (not zero which means current frame). 
- Added code to check (on OS 5.x devices) for new ArmDebugNub feature.
- If ArmDebugNub feature isn't installed, further check for two
  devices known to have an earlier version in ROM (pre-feature).
- If ArmDebugNub is present, we should always open the ARM window,
  though we can't just yet since we don't have an API to do so.
  (The new code in PalmOS68KConnection::Load is currently disabled.)
- Added code to PalmOS68KConnection::LoadDatabase to check to see if
  the database we're about to load already exists on the device, and
  matches exactly the one we're about to load.  If so, we could skip
  uploading it if the user so desires.  Currently, we ask, but we may
  also add a preference to control this.  Actually, the whole thing is
  currently disabled because it's not quite finished (and working) yet.
- Added code to PalmOS68KConnection::HaveNotification to look for any
  stale 68K breakpoints that may have been left over from a previous
  debugging session (in the event that we skip the delete/upload of
  the database as per above).  This code can be extended to look up
  the original instruction and replace it (see comments in source).
- Moved "breakInst" definition into header file so everyone can share it.
- First step to auto-opening the ARM window when 68K debugging
  if the target device is OS 5.x and the ArmDebugNub is present:
  Added code to PalmOS68KConnection::Connect to look for the
  feature set by the ArmDebugNub (or for a couple of devices that
  also have older pre-feature-setting nubs in ROM).
- Added a fix for DebugMgr that will minimize the number of windows opened for
  each thread, and if windows are ever closed, they will pop back up as needed.
- Added DWARF2 dumping to ELF script to allow us to make a "dwarf2lint" type
  program eventually so we can verify DWARF2 symbolics. Did this on the plane
  ride back from the UK on the ARM partner meeting as something to do.
- Fix bug 31948 : long pause and delay while downloading ARM native PRCs
  The problem was that we were racing in our usage of an Event handle,
  which is a bad idea in general, and then Windows was behaving inconsistently
  when told to WaitForSingleObject() on an already-deleted Event.  That's
  Windows's problem, but now we don't race so it's moot.
- REQ28482 and HS bug #20571. If a file does not exist in the correct
  location on your hard drive with regards to the information that is in the
  symbolic file, then you have the option to attempt to locate a file that is
  in a different location. This relocation functionality has been in POD for
  a while, but there was no way to fix a path once you selected another file.
  Now the UI allows you to locate the "directory" of a given source file (since
  before you could choose a completely different source file (by accident)).
  Context menu items have been added to change only the path (for specifying
  a new directory), or to specify a completely different file (in case the file
  has been renamed). A context menu item also allows you to revert to the
  original path info that was in the symbolic to begin with.
- Fixed the colors to use SystemColors to be more Win32 compliant and also
  fixed an issue where an extra separator would appear in the context menu.
- BUG29045 - Fixed a bug where when files were opened for read access in
  POD, they couldn't be modified in other programs.
- BUG28492 - Fixed a request (shouldn't have been filed as a bug) to query
  the user to see if they wish to continue to connect if an autoload directory
  that is specified in the prefs doesn't exist.
- Fixed a crasher that occurred when m_tftp was dereferenced after it had its
  contents set to NULL (it is an std::auto_ptr).
- BUG31865 - Fixed a bug in the source view where the "Goto" function context
  menu item would not scroll to a function correctly when in mixed mode display.
- BUG32346 - Fixed a bug where removing symbolic files was not possible. The bug
  states that the "Remove Symbolics" menu item is not enabled, but it didn't make
  much sense to leave this menu item in the UI since it would be hard to determine
  it's state since it could only be active if the "Files" tab was in front, and
  also since there could be multiple "Files" tabs which makes it impossible to
  enable this item correctly (since a symbolic file could be selected in one view,
  and a source file could be selected in the other). So the solution is to allow
  users to select a symbolic file in the "Files" tab and hit the DELETE or BACKSPACE
  keys to remove it (with a confirmation dialog) and also users can right click on a
  symbolic file to get a context menu which now contains "Remove Symbolic File" as a
  choice and no confirmation dialog is needed. If breakpoints are currently set in a
  symbolic file that is being removed, the breakpoints will be removed.

Version 1.8.7				09/12/2003
- Added propper DbgMessage() / DbgGetChar() support for ADM6
- Added preset preference files for ADM6 serial, ADM6 virtio, and 
  68K USB
- ARM9 support for Macraigor
- Fixed some serial shut down issues where a packet to be sent it
  sent and immediately followed by a Close() of the communication
  port was not properly sending the last packet consistently.
- Added progress bar support for any protocols which implement
  their own Load() function for loading executables to the target

Version 1.8.5               08/25/2003
- Don't try to download .rom files, but allow them to be opened as
  ADM6 debugging targets.
- Controlled two more access points to stop which happens when prefs
  are edited while the target is running.
- BUG31346 - Fixed a path where the DACR was not being properly cached
  which happened when the user halts the program by hitting the stop
  button. Also fixed a logic error that was causing an old version of
  the DACR to be restored at a later time which of course had dire
  consequences.
- ARM prc downloading works now
- don't die when thread tracking goes awry

Version 1.8.4               08/22/2003
- Very carefully shrunk Version field in About box, in order to fix
  now-visible problem where Version string was overwriting the new
  Icon.  Actually, it was overwriting the old icon but it wasn't as
  noticeable as it was with the new icon (change #166882).
- Fixed BUG 29685: Installed new icon artwork.
- Some fixes to ADM6 db download; it now starts properly, though dies
  unpredictably in the middle of transmission for as-yet-unknown reasons.
- BUG31348: Bump version to 1.8.4 (previous build 49 was still 1.8.2).

Version 1.8.3               08/17/2003
- Added a progress dialog to also include the attempt to open a
  connection to the communication layer for 68K so we can see 
  what is doing on a little better during connect. Problems 
  arise with USB since the port can't event be opened unless 
  the "Shotcut dot 2" has been typed which then makes the USB
  port active and also allows the debugger to open the endpoints.
- Users can now expand the preference tree control (left panel) 
  in the preferences pane by using the new separator control.
- Cleaned up other various alert strings to be more clear and
  fixed a few naming issues where the old name of the debugger
  was mentioned.

Version 1.8.2               08/14/2003
- Integrate two changes from shared tree:
- Fixed "SB Expression" for OS-5 preset preferences.  This expression
  should work properly for Thumb code with module IDs > 31.
- Fixed the memory window so that single-quotes don't mess up editing
  in the "ASCII" column.
- Fixed a couple of 68K bugs (stepping and read memory):
- eEventTargetConnect is now sent by PalmOS68KDbgKernel
  instead of PalmOS68KConnection, since the connection ID
  needs to be added to the map before sending the event.
  Otherwise, the Memory view will try to update before
  there is a valid connection in the map.
- ReadMemory was not byte-swapping the original instruction
  when it found a breakpoint in the read buffer and then tried
  went to re-write the original instruction.  This caused
  an immediate problem when stepping over a breakpoint, and
  also with disassembly, as well as with the Memory view.
- Fixed ARM RDI 1.5.1 Self Describing Modules so that the register
  group names are displayed correctly if they have medium or long names.

Version 1.8.1               08/13/2003
- Added mandatory DACR modification to ARM Macraigor protocol, and to ARM
  RDI 1.5 protocol plug-ins. As soon as the device stops, the DACR is read
  and saved, and the DACR is modified with 0xFFFFFFFF to ensure that all
  memory is readable and writeable at all times. The corresponding scripts
  have been removed from the config files for the two protocols since the
  DACR modification is done automatically now. This helps us maintain 
  better control over the DACR register and exactly when we are setting
  and restoring it. Unfortunately with Multi-ICE.dll we lack of control
  of exactly when and how software breakpoints are set/cleared. Users can
  still run into issue with Multi-ICE if the DACR is currently set to not
  allow write access to the current code.I have a support email in to ARM
  to see if there is anything that can be done. The issue is the DACR 
  register restricts WRITE access to the code of the application, and
  Multi-ICE does not set breakpoints until we ask it to run. If the DACR 
  is in a state which doesn't allow write access to the code, it will NOT
  be able to set or clear software breakpoints. With Macraigor we have 
  direct control over when and how breakpoints are set since we do it 
  manually (do it ourselves by reading/writing memory, or by modifying 
  the hardware bp regs). With Multi-ICE we _ask_ the RDI DLL to set a 
  breakpoint, which they will do at some point (we don't have exact control 
  over when or how this happens). 
- Fixed ARM plug-in to correctly recognize ARM PRC files so that they can
  be debugged using the ADM6.
- Added access to all of the XScale cache function registers, TLB function
  registers, cache lock down registers, and TLB lockdown registers to the
  Macraigor protocol. This will allow them to be used in config files when
  having caches enabled so that the caches can be cleaned and invalidated.
  
Version 1.8.0				08/11/2003
- Alpha ARM Debug Manager for Palm OS 6.0 support
- Added access to all of the XScale cache function registers, TLB function
  registers, cache lock down registers, and TLB lockdown registers in the
  Macraigor protocol plug-in in preparation for needing to write to these
  cache registers in config files when having caches enabled when debugging.
- Fixed live symbolics such that when reporting file scopes, the address
  range need not be correct.
- Fixed a stepping issue that could arise if the step involved setting a 
  breakpoint somewhere that already had one that was conditional and when
  that condition would fail to evaluate.
- Improved stack crawl abilities of POD so that it can more intelligently 
  figure out what the CPU type of a function on the call stack is when there
  are no symbolics for given code by using the CSPR for the first stack frame,
  and bit zero of the return address if not the first stack frame.
- Improved stack crawl for stack frames created with STR/LDR
- Macraigor plug-in will always attempt to use hardware breakpoints for 
  stepping if any hardware breakpoint resources are available.
- Improved the DWARF2 parser to be able to handle GCC generated DWARF2
- Alpha 68K USB debugging support for using USBPort.dll which is now included
  in the POD executable directory.
- Fixed the menu commands "Target->Load Memory..." and "Target->Save Memory..."
  to be able to load and save files of any size.
- Fixed Globals to have their location expressions fixed up in the symbolic
  plug-in so that they can always be viewed instead of only being able to be
  viewed when the shared library that contained them where the current SB is
  pointing.
- Improved 68K stepping and disassembly

Version 1.7.9				07/09/2003
- Bumped POD version to 1.7.9 and updated ReleaseNotes.
- Rest of the fix for LDB Bug 25937.  PalmOSSymLoader was also constructing
  a pathname based (in part, but not enough) on the information coming in
  the postload params.  So, in addition to adding a test for ".sbin" to
  PalmOSSymLoader::HandledPostLoadPNO, we now also read the resource type
  out of the postload params, instead of assuming that it was 'ARMC'.
- Partial fix for LDB Bug 25937.  If we don't find .bin.elf, we will attempt
  to open .sbin.elf.  However, for some goofy reason, although we can open
  the ARM target window, and the symbolic file, and the source file, the
  ARM source doesn't show up when we call AdnDebugBreak().
- Fixed the XML in and out state saving of a breakpoint to note if a file's path
  had been manually updated by the user and saves needed information to restore
  breakpoints for SYM files (since SYM files need the correct path in order to be
  able to parse the line table which is needed to restore a breakpoint that was
  set on a specific line number of a specific source file).
- Bumped PoserARM ReadPacket timeout to allow nub textcommands to take a while to
  respond.  Added assert to check for packets that come shortly after a timeout.
- Fixed a bug where when a file that is mentioned in SYM information is not where it
  is said to be on the local machine, and the user locates it in a different location,
  the line table will still be able to be parsed. We need to open the source file for
  SYM since the line table contains only character offsets (no line numbers). Once we
  have the source file we can correctly parse the line table info.
- Fixed stepping in, over and out when there are long function calls of that use the
  PEA, PEA, ADDI, RTS compiler technique. Any RTS that is preceeded by two PEAs and
  an ADDI will be treated as if the user can step over the RTS (which usually is
  treated as an unconditional branch type instruction.
- Fixed more 68K disassembler bugs.  Addressing mode 6 was incorrectly reported
  (always) as a 68010 instruction.  Not so for unscaled brief extension words.
  Also, we no longer attempt to disassemble routine names following the RTS.
  We now parse the length properly, and just skip over the label as well as any
  embedded pc-relative data.  Also found another character array and replaced it
  with a tstring (with better debug error checking thanks to the guard bytes).
- Fixed LDB bug 22726: mixed for file crashes POD (68K disassembler).
- Fixed some major crashing problems in the disassembler with text buffer overruns
  (which the long STL templatized function names were stressing in a big way).
- Changed several character arrays to tstrings which provide for automatic heap
  guard checking in debug builds to catch future overruns.
- CodeWarrior seems to be bad about informing us how many TINFO items it actually
  has (like it should in the disk header) so after we have passed the mandatory
  amount of TINFO objects, keep looking for more items until we get all zero's or
  run out of data. This fixes an issue where some types were being omitted due to
  a CodeWarrior SYM generation bug.- Added a missing "Ws2_32.lib" to the linker
  settings for the "Release" build to it actually builds.

Version 1.7.8				07/07/2003
- Bumped POD version to 1.7.8 and updated ReleaseNotes.
- Fixed a bug similar to LDB bug 22723. It is now possible to shut down POD when
  the target is gone (has reset, crashed, etc.) even if debugging a PNO-enhanced
  68K application (22723 was 68K-only).  Previously, if halt returned an error, the
  entire Disconnect sequence was terminated, leaving the Framer and Comm plugins active.
- Fixed LDB bug 22723. It is now possible to shut down POD when
  the target is gone (has reset, crashed, etc.).  Previously,
  if halt returned an error, then the entire Disconnect sequence
  was terminated, leaving the Framer and Comm plugins active.
- BUG22718 - Fixed single step issue where the program must run to an instruction
  which needs certain registers to be computed (like a jump table index for a
  switch statement) in order to step correctly. 
- Had to make a work around for PACE which likes to step twice when the trace bit
  is set. I now replace the current instruction with a "BRA -2" (branch to self)
  to let PACE get the double trace out of it's system (it only happens once and
  only happens if the last stop was due to hitting a breakpoint instruction), then
  do replace the original instruction and trace again.
- Fixed a bug that I introduced with last check-in due to a flow change.
- Fixed a line table issue that showed up in the SYM 3.3 information with Codewarrior 9.x
  where there were two file changes in a line table (even though they are the same file).
- Removed unwanted ')' from a string destined for the download progress bar.
- Fix broken POD build.
- Added CMTE dumping to the SYM file which was needed to track down a line
  table issue. Also corrected the XFCSymFile class to check the table indexes
  more intelligently.
- Added another fix to the SYM information that was omitting the last TINFO
  object in the type information table.
- Debugger changes for ADM6: Add KALProcessSetDebugLevel() which makes the kernel
  notify the KeeperThreads about threads coming and going from the target process.
- Process scheduling classes for others to toy with.
- BUG28709 - Fixed an issue where if there was a line entry with a bogus line number
  of 0xFFFFFFF that it could possibly match up to something valid (the <string> header
  file in this case) and accidentally display the wrong source file in when clicking
  on a source file in the "Files" tab.
- BUG28766 - Fixed a stepping issue in 68K. The instruction size was not being
  correctly calculated for many instructions: Scc, ADDQ, EOR, SUBQ, ADD, ADDA, AND,
  CMP, CMPA, OR, SUB, SUBA, ASR, ASL, ROR, ROL, ROXL, ROXR and CHK. The size was
  miscalculated only for certain modes of these instructions, but I am guessing that
  many stepping bugs could be a result of this problem which is now fixed.
- BUG28640 - Fixed the SYM plug-in to handle cases where the TINFO (type info) has
  bit 15 of the physical size (size of the type data in the symbolic file) set. This
  bit indicates that the logical size (size of the type in bytes) is represented by
  a 32 bit value instead of the usual 16 bit value. This was causing any and types
  that followed one of these TINFO table entries to not be parsed since we only
  consumed 16 bits and thus hosed up all subsequent types. Luckily this only seems
  to happen in CW 9.x for Palm, but it could show itself CW8 if the types were large
  enough.
- Added a centralized SendCommand function that is able to deal with getting unsolicited
  packets (such as DbgMessage). Changed a few functions such as ReadMem, WriteMem,
  GetRoutineName and FindProcAddress to use this new function.
- Added a more useful progress bar when downloading a PRC file. It used to have it's
  minimum value set to the number of resources to download and get incremented with
  each resource. It now will update as memory is written to the device and also as
  each resource download is complete. This avoids a long gap in the progress bar when
  downloading where there seemed to be no progress being made.
- Updated many of the internal RPC function wrappers to take an optional progress
  parameter. Now the progress messages update as things are happening during PRC
  download so we can see when and where any delays occur during the download progress.
- Fixed the framer for USB only where a reader thread is not currently spawned. Bad
  logic left over from the past kept the communications interface read from being called
  when no reader thread was spawned which meant no unsolicited packets were being received.
- Added CRC checks and cleaned up output a tad.
- Removed an assert that was not needed.
- Cleaned up a call to GetOption from the comm plug-in that could cause some issues since
  the error return code is ignored.
- Debug Manager (ADM6) and POD plugin checkpoint
- Note that it's not actually present in the Cobalt build -- #ifdef guards -- because it exposes
  a crashing bug in process teardown, and breaking the ARM build for everyone wouldn't be polite.
- Also, yes, the DbgTest test app intentionally crashes....
- Changed USB read to return as soon as it gets all available bytes regardless of what
  was asked for. General updates to critical sections using XFCCriticalSection class.
  Modified framer parts specific to USB.
- Removed the "-f" option and made it the default output format (flat). Enable the "-v"
  option (verbose) to see the output like it used to be. Also added a "-b" option to be
  able to see the packet bytes for each packet.
- Move 68K preset prefs into new "Debugger Plugins - 68K" folder.

Version 1.7.7				06/26/2003
- Bumped POD version to 1.7.7 and updated ReleaseNotes.
- Fixed 68K step problem: weren't calculating nextAddr for BRA instr.
- Cleaned up serial plug-in: added XFCCriticalSection to protect map.
- Added a few options to the disassembling script such as verbose, flat and
  help. Also fixed an issue where multiple packets received in a row were
  not being disassembled correctly.
- Added additional traps to script to handle code warrior usb sequences.
- Modified the dump script to be able to handle USB dumps from USBMon as well.

Version 1.7.6				06/24/2003
- Bumped POD version to 1.7.6 and updated ReleaseNotes.
- Re-worded "Failed to connect" error message to provide more
  hints as to what the problem might be.
- Fixed the "target connect" notification coming from the 68K plugin
  to have the correct connection ID which got rid of a harmless
  assert on connect.
- BUG22718 - Fixed a stepping issue where some instructions would
  have been skipped in a switch statement.
- Renamed some stuff to make it more clear what things are.
- Fixed ASCII Integers so they get properly swapped when being
  edited in the UI.

Version 1.7.5				06/23/2003
- Bumped POD version to 1.7.5 and updated ReleaseNotes.
- Revamped the way the (loaded) module info is dumped from the nub.
- Instead of sending a bunch of ModuleLoads from within the
  DumpModuleTable command (prior to the DumpModuleTable reply),
  we now ask for module information for module n.  We first ask
  for n=0, and each reply brings with it the next valid module ID,
  until there aren't any more at which point it returns zero.
- Why bother with this?  Because telling POD internally about
  loaded modules can cause the symbolics code to attempt to
  resolve previously-unresolved breakpoints and in order for
  that to happen, the nub HAD to be ready to accept a SetBreakpoints
  command.  That couldn't work before, but now it can.
- Cleaned up several related TODO comments.
- Added new RegisterNative command to PoserARM protocol.
  Command format is identical to PostLoad command, but
  has a separate command ID in order to distinguish
  native ARM module loads from PNO loads.  Previously
  we were only checking to see if the resource type was
  ARMC.  Now we support RegisterNative calls for ANY
  resource type, meaning PNOs don't have to be of
  type ARMC.  Since the nub knows what it's trying to
  do, we may as well pass that info along rather than
  trying to infer it by looking in the PostLoad packet.
- This requires a new ArmDebugNub with the corresponding change.
- The ADS linker build 844 creates slightly different ELF files which
  had some side affects with the CPU mapping (the $a/$t/$d symbolics
  in the ELF symbol table that told us what was ARM/Thumb/Data). The
  new ELF files have more program header and sections that had CPU map
  information for them -- previous AXF files only had CPU map data for
  the .text section (code), but the new ones have CPU map information
  for the extra data sections (.bss sections). What was happening was
  we were merging all the CPU map information incorrectly into a single
  map and this caused the CPU map to contain many more areas that it
  thought was data and would result in impropper display of disassembly
  code in mixed and disassembly views, as well as setting breakpoints
  incorrectly (since we must know if code is ARM or Thumb to set
  breakpoints correctly).
- Added an abstracted critical section class to XFC.
- Fixed version resource to use the #defines from DbgVersion.h.
- adding file for usb- adding file
- Implemented a needed STL cache for excess bytes read when using the
  USB port DLL since there is a limitation that is requires you to
  read using multiples of 64 for some reason.
- fixes to use xfcdll more efficiently
- intermediate USB checkin
- Several partial fixes for LDB bug 22718.
  Source level step over switch statement in 68K now works,
  except if there's a breakpoint set ON the switch statement.
  Fixed disassembly bug with MOVE and stepping calculations
  with JMP, both for (d8,PC,Xn) source addressing mode.
- BUG22703 - Re-organize a few things in the framer plug-in and more
  importantly placed a critical section around any code that accesses
  the m_connMap (which was std::map of UInt32 (ID) to frame shared pointer).
  Without this anyone accessing iterators or adding/removing connections
  could really hose up any code from other threads that was accessing the map.
- Modified the name of a class member variable from "cs" to "m_cs"
- Fix LDB bugs 22716 & LDB bugs 22716.
- Stop 68K, Stop ARM, Resume 68K now asks if you wish to resume the ARM.
  If so, then ARM is resumed prior to resuming 68K (PACE).
- Stop ARM, Stop 68K, Resume ARM now automatically restarts 68K (since it
  wasn't *really* stopped as far as PACE was concerned).
- Disabled stack crawl logging in 68K that was left enabled.
- Fixed the GetRoutineName call to return an error when there is not function info.
- Cleaned up the DLLMain functions that had been left is very bad states.
- Made the sockets plugin use the correct global for initializing the sockets
  environment on windows when connection fails.
- Cleaned up some code and fixed GetRoutineName to return an error when no
  routine name is found. An error is indicated by the routine name coming
  back in the response packet as an empty string.
- Updated pref files for with default values for new way to locate shared
  library globals. To use these default prefs users should have the 844 linker
  patch installed and be building a Cobalt that is newer than change #157276.
- BUG22698 - Fixed an issue where when variables or registers were manually
  modified, other views did not immediately update to reflect the change
  until the next step or stop. Now notifications are sent out when memory or
  registers are modified by the user which allows all views to update themselves.
- Stopped the 68K protocol from popping up an extra dialog when connecting to a 68K device on connect.
- Attempted fix for 68K stepping issues where PACE will step twice if we use the
  trace bit. I removed the singlestep that used the trace bit and just do
  software breakpoints and run. This should only affect single stepping when
  sitting at a breakpoint for 68K, and stepping in assembly code.
- Fixed relative path code to be able to handle relative paths such as "AXF\Thumb\foo.axf"
  (no .\ or ..\ prepeneded to it). Also centralized the Win32 code for detecting the
  end of the volume information in the path string.

Version 1.7.4				06/12/2003
- Bump version to 1.7.4 in preparation for official build.
- Fixed several LDB bugs pertaining to losing control of the
  target when stepping:
- Added new PoserARMConnection::Resume() method which ONLY
  resumes.
- Changed PoserARMConnection::Run() to now call Resume and
  then wait 100ms or so for a subsequent EnterDebugger from
  the target device. This was needed because some of the
  debugger's stepping code is unable to proceed unless it
  gets an DbgErrRunTargetAlreadyStopped result from Run().
  We still can't guarantee we'll return one (if it doesn't
  arrive in time) but we can't wait forever for it to arrive.
- Re-wrote PoserARMConnection::HaveNotification()'s "bad cookie"
  handling code (removed obsolete comments and hacks).
- Updated DbgIntImpProtocolPoserARM::SingleStep to recognize
  that PoserARMConnection::Run() can now return alreadyStopped.
- Added cppoptions.txt to USB plug-in
- Fixed LDB bug #26748: Save As dialogs now present correct filter.
- Added file type selector to DbgIntImpUIWin32::SelectSaveFile(),
  with values defined for binary, text, and xml files.
- Default setting (if not specified) is "All" (*.*).
- Updated Prefs Export, Export All, and Save Memory functions.
- Add comments regarding bug #24815 for later review  so we
  can figure out just how to go about fixing this...
- Fixed change made in 151443 to unbreak ArmDebugNub "run".
- Changed XFCAssert to an "if" and added an else clause that looks
  for "couldn't read the PC" error and clears it rather  than
  propagating it back on up the chain. ArmDebugNub doesn't
  need to show a valid PC during connect/run if there's no
  device present to talk to yet.  In this case, run just means
  "get ready to accept an incoming connection later."
- Add support for PoserARM "can't set breakpoint" error.
  POD previously thought any error meant "can't set it now,
  but we'll set it the next time we're stopped", whereas
  PoserARM means "can't set it ever" (most probably because
  the BP is in ROM).  Now we display a dialog that says we
  can't set the breakpoint.  Unfortunately that means two
  dialogs in some cases.  Still need to resolve that, but
  this is better than displaying an incorrect error msg.
- Fixed bug with disassembly of other functions in stack crawl.
- In cases where there were no symbolics for a function in the
  stack crawl, clicking on that function would not show the
  correct disassembly but would instead likely show the disasm
  at the previous location (current PC, for example).  It appears
  that this was caused by code setting foundSymbol to true in
  more cases than it should have (like in cases where it did
  NOT actually find a symbol).  Moving the setting of foundSymbol
  a few lines up (into an "if" block which checked for a valid
  address range) seems to have cured the problem.
- Hopefully this won't cause any other problems with disassembly
  or stack crawls...  If it does, it's an easy change to revert.	
- The original problem which this change has now fixed is easy to
  reproduce with LDB in an PNO (with source) by clicking on the
  caller (Palm OS 5.x ROM code for PceNativeCall, for which one
  typically has no source or symbolics available).
- Couple of small fixes for PoserARM/ArmDebugNub.
- Changed "Closing window WILL cause target to be killed" message
  to "Closing window MAY cause target to be killed" since we can't
  really guarantee that the target will do anything at all when we
  try to kill it (specifically with ArmDebugNub over serial, when
  device is running but 68K debug console is not and thus we have
  no way to ask the target to halt).
- Updated comments at end of PoserARMConnection::Halt to indicate that
  the "What's left?" case is really the case just described above.
- Removed assert in 68K halt code and updated comment which suggested
  we might some day implement a fix which has in fact already been
  implemented (having the ARM nub return the desired 68K status packet).
- DbgIntImpProtocolPoserARM::PreLoad no longer returns connection error.
  This was a suggested fix to another problem but it broke debugging of
  native ARM code (as there was no way to launch/run since this error
  was always reported.  We MAY still want to return this error if we
  know we're an owned child target... TBD.

Version 1.7.3				05/30/2003
- Added live preferences to the RDI protocol plug-in to allow users
  to modify any possible preferences (such as semihosting prefs)
- TFTP plug-in now backs up all registers prior to running and 
  restores registers after download. 
- TFTP plug-in can now run without enabling semihosting. Users can
  click on the cancel button of the progress dialog when downloading
  is complete to finish the TFTP download with no semihosting.
- Faulting threads in Palm OS 6.0 now will correctly show the current
  PC location in the source view when double clicked in the "Processes"
  view, previously there were some register caching issues with
  faulting threads.
- Fixed 68K stepping bug that could cause a stack overflow and crash
  POD.
- Added alpha live symbolic support for better stack backtracing of
  generated code
- C++ class names are now prepended to DWARF2 C++ class methods.
- Default tree/list view  sorting mechanism can now be reverted 
  to if no sorting is selected

Version 1.7.2				05/27/2003
- Updated release notes for 1.7.2
- Call new ui->CloseTarget from 68K.
- 68K target now closes the ARM window if it created one! Cool! :-)
- Bump version to 1.7.2
- Added "CloseTarget()" to the UI interface for LDB so the 68K window
  can close down the ARM/PNO window.
- implemented pop-up address windows.  Currently added support to
  sourceviewframe's context menu, but the function can be called
  from anywhere in the UI.
- Added live symbolics to ARM semihosting calls and modified the
  internal symbolics engine to deal with symbolic files that can be
  removed. Live symbolics allows semihosting calls to install new
  symbolic information into the debug engine at run time. This was
  primarily added for MGL code.
- Make POD work better (68K and ARM) with the ARM debug nub.
- You can now, for example, close the 68K window and have both the
  68K and ARM debug sessions completely unwind themselves (including
  clearing breakpoints as we close everything down).  One exception
  that I can think of is that if we're crashed or stopped in the ARM
  debug nub, we don't handle 68K WriteMem commands, so although we
  acknowledge them (with an error), we don't actually undo breakpoints.
  I'm somewhat undecided if we should handle these (on the assumption
  that whatever the desktop is trying to do is ok) or continue to
  ignore them (on the assumption that in general any leftover 68K
  breakpoints shouldn't prevent us from being able to reset the device,
  and if the first thing we do the next time around is delete this
  database and upload a fresh copy then it shouldn't matter).
- Anyway, you can also now shut down the 68K target window (and thus
  also the owned ARM target window), whether the device (and app) is
  running, or if you're crashed (or otherwise stopped) in either the
  68K or the ARM nub.
- You can now also "stop" the 68K nub, even if you're already stopped
  in the ARM nub.  This one is a little interesting, but it goes back
  to the "Where the hell am I?" question.  The only catch is that if
  you aren't really crashed but, say, hit an ARM breakpoint and then
  wanted to see where the 68K is.  In this case, you're stopping the
  68K and the ARM was already stopped.  You can certainly poke around,
  but if you want to "resume" everything you must "resume" the 68K
  first (the ARM nub basically says "sure, whatever") and THEN resume
  the ARM (which really gets the device running again).  If you don't
  resume the 68K first, then POD is out of sync with the device, thinking
  that the 68K is stopped.  I'm not really sure what else we could do in
  this case.  Perhaps it's just a documentation issue.
- Added new target flag "kTargetIsGoingAway", set when the document
  is going away.  Protocols/plug-ins can use this to know that they
  cannot fail.  I added this but then didn't actually use it.  Still,
  I left it in because we may still find a case where we need it.
- Changed "Can't close while running" error to instead prompt user
  with "Closing window will cause target to be killed. OK?" dialog.
- 68K now keeps track of owned ARM DbgContext and DbgTargetContext.
- GDbgWasEntered (0x00000101) is now only set (and cleared) if OS
  version is less than 5.0 since this is meaningless on ARM devices.
- 68K Connect now fails if FtrGet(systemVersion) fails (which we test
  by making sure we got something >= 1.0 as a result, rather than 0).
- 68K Disconnect now disconnects ARM target if we created one, though
  it doesn't (yet) blow away the ARM window.  Waiting for new
  ui->DestroyTarget method so we can call it.
- 68K Halt now calls HaveNotification to attempt to retrieve the
  status packet that should be returned when we send a "stop" command
  to the device, rather than waiting for HaveNotification or PostRun
  to catch it (since they don't get called when we're Disconnecting).
- Removed a couple of unneeded enums in PoserARMConnection.h.
- Replaced private m_targetStopped member in PoserARM with common
  kTargetIsStopped target flag.
- PoserARM Halt now calls HaveNotification to attempt to retrieve the
  status packet that should be returned when we send a "stop" command
  to the device, rather than waiting for HaveNotification to catch it
  (since that doesn't get called when we're Disconnecting).
- Checked in a change to check if the target has been loaded in order to be
  able to set breakpoints instead of checking the thread state.
- Fixed BUG26562 where there was a conflict with the menu ALT key shortcuts
  and ALT+C which was a built in shortcut for Target->Connect. Users that
  still have this problem after POD 1.7.2 need to click on "Reset All" button
  in the keyboard shortcuts dialog.
- Fix BUG26975 where some prefs that were previously not set, are now set
  to be able to switch from LDB preset prefs, and back to ROM debugging.
- DbgPalmOSSerialLinkFramer::Write no longer even-pads payload data length.
- This fixes LDB bug 22700 (unable to change value of 1-byte variables).
- Fixed "Goto Function" pulldown in the context menu to work for inlined
  functions. Prior to this the source view would only scroll to the source
  line for the function, but if that source line was in a different file,
  POD was not loading that file first. This fixes BUG24245.
- Preset prefs for 68K debugging for all 4 serial ports, and for poser on a
  local machine. Fixes request REQ24411.
- Stopped POD from asking you if you would like to save your pref data if you
  didn't have a data file in the first place. This never used to happen, until
  people started checking POD into perforce and they didn't want to check in
  the "prefdat.xml" files since these files needed to be writeable. This also
  fixes BUG24170.

Version History
Version 1.7.1				05.19/2003
- Updated version to 1.7.1.
- Updated release notes for 1.7.1
- Fixed documentation BUG23223.
- Fixed the stack trace to back up the PC by 2 for addresses returning to Thumb
  functions, and by 4 for addresses returning to ARM function. This will help to
  attempt to show the exact location that called a new function. There is a new
  preference associated with this in the ARM plugin prefs titled: "Correct stack
  backtrace return address" which defaults to true.
- fix to crasher caused by  not checking scc->symFile first 
- Fixed bug BUG20119 where when no sorting is used, the initial order in which
  things were added to the tree list control is used. This is nice to be able to
  return the "Files" view to the order in which files are listed in the symbolics
  without having to switch to another tab and switch back, or in the "Variables"
  tab if you sorted by value then turned sorting off (by clicking on the column
  header until the sort arrows disappear) you can see the order in which the
  variables were defined in the symbolic file. Similar changes to the memory
  window, expressions window, breakpoint window, and register windows as well.
- Added a fix for BUG20066 where the function names for C++ described by DWARF2
  were not qualified with the class name.
- Added a fix when generating function pop up menus where if the function name
  contained an '&' (such as in C++ operator overloading for & && and &=), the
  menu item will show correctly. Prior to this fix any function containing such
  a character would think the character following it would be the quick key for
  the menu item.
- LDB: Fixed bug 26398: After stopping 68K, PC arrow is not correct.
- LDB: Added new preset prefs file for OS 5 68K/ARM serial debugging.
- LDB: More enhancements to SerMon script.
- LDB: Fixed obnoxious 10 second connect delay in 68K debugging.
- Add reconnect command. This currenly only works once (with multiice 2.1).
- Fixed BUG20027 where 1 source line at the end of a mixed file was omitted
  in certain cases.
- Finally figured out how to set the tab stops in rich edit controls. There
  is now a global preference that can be set to allows the setting of the tab
  stops to be in character increments. The old default was a fixed value in
  inches which could have been any number of characters depending on the font
  that was used.
- Made a fix to the status bar help text for the recent menu items to use
  the live array. If the live array was not used and new files were added
  or removed from the recent files menu, the help text could get out of date.
- Made the location of variables update every time we stop so they can
  not get out of sync with their current values.
- Fixed the DWARF2 parser to handle the DW_AT_frame_base attribute whose
  data is in a block form (as opposed to ADS that has it in ".debug_loc"
  offset form. This fixes issues we were having with codewarrior generated DWARF2.
- Fixed DbgSymbolics::GetSymClasses() to not return the last symFile when
  an address is not found in any symbolic files.
- Fixed the error dialogs that get posted when connection to a COM port
  fails. Part of the dialog text (the COM port name) got hosed up when I
  made a fix for Virtio.

Version History
Version 1.7.0				05.13/2003
- For ARM targets we now automatically search for a file named the same
  as the main executable with an "xml" extension to use as the autoload
  XML file. If that file does not exist, a file in the same directory
  as the main executable file named "axf_files.xml" will be searched for.
  If either file is found, is will be assumed to contain a list of symbolic
  files to use when auto-loading symbolics. A preference that asked for
  a path to the symbolic autoload file has now been removed as it is no
  longer needed.
- The recent files menu items now show the full path to the file in the
  main window status bar when the mouse is located above one of the
  recent file menu items in the "File" menu.
- Memory window now remembers which memory display plug-in, and disassembly
  type that was used when switching between tabs in the tab views.
- The ".pud" file that contains the debug session settings no longer
  removes the extension from the main executable when saving this file.
  This avoids potential problems where two executables could result in
  the same ".pud" file (such as if you accidentally load a .widebin file
  in the Palm OS Debugger.
- Fixed conditional breakpoint restoring between sessions of POD.
- Fixed point number displays routines have been corrected, and numbers
  that are displayed as fixed, and be edited as fixed point numbers.

Version 1.6.6				04/29/2003
- Renamed binaries and modified UI to reflect new name "Palm OS Debugger"
- Fixed an issue where breakpoints with conditions contained special XML
  characters ('&' '<' '>' or '"') which was causing the .pud file to be
  incorrect XML syntax.

Version 1.6.5				04/28/2003
- Fixed an issue where breakpoints with conditions contained special XML
  characters ('&' '<' '>' or '"') which was causing the .pud file to be
  incorrect XML syntax.
- Fixed a DWARF2 issue where DW_TAG_inheritance for C++ class definition
  were not being followed correctly.
- Fixed the PC from being modified to zero for the ARM debugger plug-in
  when "Do Nothing" is selected for the launch action
- Added improved support for PNO debugging into the 68K plug-in so that
  it determines if PNO resources exist and automatically creates an
  ARM target window with the existing DWARF2 files for them if they exis
  
Version 1.6.4				04/14/2003
- Fixed stack crawl window so it updates when double clicking on Cobalt
  threads which are suspended yet their state still shows they are running.
  This behavior was introduced with 1.6.2
- Fixed stepping for Macraigor when the steps require running to an opcode
  in order to compute the branch location (such as a source line which contains
  a "BX R3").
- Added a pref to ARM Macraigor which allows all memory writes to be
  verified for tricky board issues. This should be set to "false" by default
  since it slows down memory transactions.
- Hooked up live preferences for the TFTP plug-in and improved the progress
  bar UI when downloading ROMs using the TFTP plug-in. We now show the IP 
  address in the title bar along with the mode (static or DHCP).

Version 1.6.3				04/11/2003
- Fixed TFTP with DHCP for RDI targets (Multi-ICE)

Version 1.6.2				04/10/2003
- Moved the status bar into the debug target window in preparation for
  multiple debug windows being used simultaneously. Also added separate
  windows for each process/thread when using live debug services.
- Fixed default prefs issues where the default values from the prefdef.xml
  files were not being used correctly in all cases, and cleaned up the
  preference values a bit more.
- Improved performance of the RDI handling of Palm OS specific semihosting
  SWI calls and fixed all instances of Angel Debug Protocol messages so
  they display their correct dialogs.
- Fixed ARM RDI 1.5 plug-in to be able to halt when booting Cobalt bug.
- Cleaned up the UI notification code to use a more strict heirarchy for
  better performance and reliability
- Fixed the "setsym" command to be able to take full paths to symbolic files
  instead of just the filename and the command will also print out the 
  currently selected symbolic file after attempting to find the file
- Fixed issues where other target windows would listen to messages that
  were not for those targets which was an issue if multiple target windows
  were opened.

Version 1.6.1				04/02/2003
- Fixed stack crawling for ARM for functions with multiple returns
- Fixed stack crawl for frames that have multiple returns and add immediates
  to the stack
- 68K debugging with actual Palm devices over serial is working again
- Some framing with the Palm OS 68K were fixed
- Preset preferences updated and default values have been modified to
  favor Cobalt based debugging. Attempted to make the preset preferences
  as accurate as possible to attempt to provide the best "out of the box"
  debugging as possible.

Version 1.6.0				03/20/2003
- Completely re-wrote the stack crawl for both ARM and 68K debugger plug-ins
- Worked on 68K plug-in quite a bit so that it is now usable.
- Win32 serial plug-in has some serious data loss errors fixed and now 
  hardware flow control works as advertised.
- PalmOS framing plug-in had some data loss bugs which have been resolved

Version 1.5.4				02/28/2003
- Fixed many stack crawl issues and stack crawl should be much more reliable
- Added low level symbol support so stack crawl shows more information about
  code that has no symbolics yet is has information in the symbol table
- Had to rename some of the preference panels which which contained "Plugin"
  in their text to "Plug-in". I added code to update older prefs when importing
  so importing older pref files should work.
- Completed many bug fixes from the database which were mostly cosmetic and 
  usability based bugs.
  
Version 1.5.3				02/07/2003
- Added Memory Mapped Definition file support to POD to allow users to 
  define an XML file describing all memory mapped registers that are
  available for a target. These can also be used to describe statically
  located global variables that aren't described in symbolics. For more
  information and complete XML format documentation see the file at:
  PalmOSDebugger.exe/Memory Mapped Registers/ReadMe.txt
  And also see a simple sample XML file at:
  PalmOSDebugger.exe/Memory Mapped Registers/SampleDefs.xml
- Fixed all issues with the tree/list control where items were not 
  remembering when they were expanded. Refreshing and update issues were
  also addressed. These problems were introduced with 1.5.2 due to a code
  re-organization.
- The autoload information has moved for it's final time and is now located
  in 1 place for everything (PalmOS 5.x and PalmOS 6.x) under the debugger 
  plug-in prefs. There are now multiple autoload directories! No more huge 
  copying of files at the end of a build (for the Jam build engine). The 
  prefs allow for 3 autoload directories, but more can be added by simply 
  editing the XML prefdef.xml file with any text editor.
  So to migrate up to the newest version please set your autoload 
  directories up at:
	"Debugger Plug-ins->ARM->Autoload symbolic load directory 1"
	"Debugger Plug-ins->ARM->Autoload symbolic load directory 2"
	"Debugger Plug-ins->ARM->Autoload symbolic load directory 3"

  Leave any blank that you wish not to use, and remember these directories 
  can be relative to your .rom file if you would like them to be.
- There is also an additional way to specify your autoload list, a new XML 
  file that contains a list of files. This file is auto-generated by the most 
  recent Cobalt build and is right next to your ROM file and is named 
  "axf_files.xml". This contains a list of files that were generated with 
  the build that made your ROM file. This is the most accurate way to be 
  sure to get the correct AXF files for your ROM and the build generate the 
  EXACT list of the AXF files. The autoload directory method is still prone 
  to having some stray older AXF files that do not belong to the current ROM 
  build residing in these autoload directories and provides a remote chance 
  that you can load an older/outdated .AXF file. To use the new axf_files.xml 
  file specify the path to this file (yes it can be relative so most of you 
  should enter ".\axf_files.xml" as the path), and clear all of the "Debugger 
  Plug-ins->ARM->Autoload symbolic load directory n" prefs.

Version 1.5.2				01/23/2002
- Added sorted function popup for the context menu's in any source views.
  Holding down the CTRL or SHIFT keys when right clicking in source views
  will cause the function submenus for "Goto Function" and "Set Breakpoint
  at Function" to be sorted alphabetically.
- Docking windows now remember their columns widths after being hidden
  and shown again
- Added fix for recent kernel changes which required an updated to
  PalmOS 6.0 RTOS plug-in.
- Console window interface has been cleaned up and fixed bugs where if
  a stand alone console was created, items in the Window menu were not
  properly enabled and the window wasn't able to max/minimize.
- DWARF2 plug-in now omits any TAG_member tags that do not have locations
  for the members. This fixes an issue where compilers tell us about a
  member's type and name, but don't give us any information on it's value
  or location.
- Fixed the default pref value for "SB Expression" to be the correct one
  for PalmOS 6.0 devices.
- Profiler fixes for percentages not adding up correctly, and also new
  context menu options available for the Profiler views.
  
Version 1.5.1				01/21/2002
- Added alpha docking window support for opening new windows that can
  be docked to the main MDI frame.
- Profiling now supports Macraigor and has been improved. Previously
  Multi-ICE was only supported.
- Breakpoint condition not disappearing on reload bug was fixed.
- Renamed all distribution files and their contents to not contain
  project codenames.

Version 1.5.0				12/18/2002
- Conditional breakpoint support! Look in the breakpoints tab view for
  the new "Condition" column. Double click to edit this and add a 
  condition to your breakpoint. See expression parser details for 
  expression details. A dialog will pop-up when your conditional 
  breakpoint gets hit and you will have the option to cancel these
  dialogs if you wish.
- Alpha profiler support has been added.
- Improved Poser ARM support
- Pre-alpha TI XDS support.
- Added a complete C expression parser to the DebugEngine which can be
  used with conditional breakpoints, in the expressions window, and
  conditions can be evaluated in the Debug Console by typing "eval 1+2".
  All operations are supported for SInt32, UInt32, SInt64, UInt64, 
  and 4 byte floats. Constant numbers can be in expressions and are 
  entered as they would be in a C program. Integers are SInt32 by default.
  Integers can be unsigned by following them with a U or UL (3u for example).
  64 bit integers can be used in expressions by typing a hex number that is
  too large for a 32 bit value (0x000000001 for example). Floats can be 
  entered in any format and are assumed to be 4 byte floats by default.
  The expression parser has support for the following operators with full 
  C operator precedence (topmost is highest precedence) as:
    ()                                  left to right
    ! ~ ++ --                           right to left
    * / %                               left to right
    + -                                 left to right
    << >>                               left to right
    < <= > >=                           left to right
    == !=                               left to right
    &                                   left to right
    ^                                   left to right
    |                                   left to right
    &&                                  left to right
    ||                                  left to right
    ?:                                  right to left
    = += -= *= /= %= &= ^= |= <<= >>=   right to left

  Expressions can currently access debug variables by typing the variable
  name in the expression The expression parser can only use simple variables
  currently (no members of structs, unions or classes yet (this is coming 
  in 1.5.1)). Registers can be accessed as @<reg_name> (@R0 for example).
  The register name must match the EXACT name (case sensitive) that is 
  found in the register views for it to evaluate correctly, and that 
  register must be valid at the time of the expression being evaluated 
  (can't read registers prior to connecting!). The expression parser also 
  has built in expression variables that can be defined and are global to 
  all of POD. These variables are defined as C-tokens pre-pended with a $
  character ($x for example (just like perl variables)). 
  
  Expression examples:
  2 << 20                         // Simple constant expression
  x == 3                          // See if the debug variable x equals 0x00000003
  myFloat == 2.0                  // See if myFloat is 2.0 (0x40000000)
  $foo = 1024                     // Set expression glob var to 1024
  $bar = ++$foo                   // Set $bar to ++ of $foo
  $foo                            // print the value of $foo
  @R0                             // get the value of the register R0
  (@CPSR & 0x1FUL) == 0x10UL      // See if we are in user mode??
  (@CPSR & (1 << 5))              // See if we are in Thumb mode


Version 1.4.2				11/21/2002
- Changed the Cobalt RTOS plug-in for new process names.
- Added XScale trace capabilities for Macraigor protocol. Enabling this
  feature can be done by typing the following command in the Debug Console:
	prot trace <count>
  "count" is a UInt32 indicating how many times to parse the trace buffer
  after a stop. Execution will run slowly but you will be able to see a
  full trace history dump (instruction by instruction). To disable this
  feature type:
	prot trace 0
- New "Goto Function" context menu item in the source view to scroll
  to any function within the current source file.

Version 1.4.1.0				10/25/2002
- Re-implemented the ARM and Thumb stepping engine to address stepping
  over virtual function bugs.

Version 1.4.0.0				10/18/2002
- Fixed remaining TAB views to keep sorting prefs: Variables, Global 
  Variables, and Registers. The memory view can still be sorted but
  since it is a memory view it always defaults to ascending address
  order. Stack trace TAB view can no longer be sorted. 
- Included 68K pre-alpha to allow debugging a PRC file to a 68K device, 
  68K Poser, or the PACE layer on current ARM builds over sockets (poser)
  or Serial (device).
- Fixed the ARM semihosting "gets" call which was returning a '\r' at the
  end of the line instead of a '\n' which stemmed from the Win32 UI. 
  Returning a '\r' caused the "gets" call to continually ask for more
  data.

Version 1.3.0.5.2			10/11/2002
- Files and Processes view now remember their expansion state when the
  respective tab views are deselected and reselected!
- Files view now shows symbolic files address range of all the source files
  that it contains to help people manually track down which symbolic file
  and source file that an absolute address comes from.
- Files view sorting has been much improved and will not remember which
  column was being sorted and which direction (ascending or descending or
  no sort) when the Files view is switched away from then back in the tab
  view. 
- New "lookup" command available in the "Debug Console" to allow users
  to lookup an address in symbolics and see which symbolic file, source file
  and source line, function, and scope that the address pertains to. Usage:
	lookup <abs_addr>
- Improved Processes tab that now shows the thread name right next to the 
  thread ID (the four character code for the thread in the PalmOS Cobalt case)
- PalmOS Cobalt RTOS autoload directory path can now be relative to main 
  executable (the ROM file).
- Improved console performance by up to 30%


Version 1.3.0.4				10/04/2002

- Added application level prefs which allow users to:
  - Automatically load the last executable on program launch
  - Automatically run the last executable on program launch
  - Automatically load the .pud file (list of symbolic files and breakpoints)
  - Automatically load the .opt file (UI settings and window positions)
- Added fixes to allow users to be notified when a thread faults
  or has an uncaught exception. This fix requires recent additions
  to the Cobalt kernel which will post a semihosting SWI to notify
  POD when a fault occurs. This will keep the offending thread from
  being unloaded prior to someone being able to check out why it
  crashed. To view the faulted thread, double click on the thread
  in the "Processes" view.
- Added a progress dialog when loading .pud files that take a long
  time. This shows each symbolic file as it is loading, and also
  each breakpoint as it loads and also allows the user to cancel
  the loading process if it is taking too long or in case the 
  symbolic files are incorrect.
- Made Cobalt store it's sections as global sections instead of
  process specific sections as this was causing problems with 
  people being able to set breakpoints at all time and having
  code resolve out correctly. This solution ref counts sections
  and only unloads the section if the ref count goes down to
  zero.
- Fixed Cobalt RTOS plug-in to be updated for the current PCB
  structure.
- Added "Preset Prefs" folder with many common setups so users
  can import common preference sets.
- Added "config" folder for targets which require extra actions
  prior to running a new image. XScale targets must now select
  one of these config files to run the target for 1500 ms so the
  connection process is not hard coded into binary DLLs.


Version 1.3.0.2
- Added powerfull config file to both Macraigor and RDI targets
  which allows the sections of the config files to execute at 
  various times including: connect, disconndect, pre_run, post_run,
  pre_load, post_load, pre_launch, post_launch, pre_mem_modify.
  NOTE: Config files are now used to intialize the boards!!!
  XScale users must select the appropriate config files to config
  the XScale boards, see the inlcluded "xscale_xxx.cfg" scripts
  that are in the config directory of this release. Also see
  the "commands.cfg" file for a list of all available commands.
- Removed and renamed many prefs to reduce the number of prefs
  in the pref dialogs.
- Added support for RDI SDM (Self Describing Modules) to better support
  ARM coprocessor registers. Multi-ICE 2.2 is recommended for XScale
  users since all co-processor registers are supported by this
  release (which give the exact coprocessor register names and
  cache flushing abilities. Any of the SDM registers are available
  to modify using the config file additions that were made.
- Preferences are now alphabetically sorted in the prefs view
- New Application level preferences for automatically loading
  the last executable that was loaded, and it's settings are
  available in the "Debugger UI->Session" prefs to allow users
  to more quickly launch POD with their previous settings.

Version 1.3.0.1
- Fixed an issue with Macraigor and XScale targets that was
  causing the JTAG to lose connection and also some semihosting 
  calls to be missed due to the way Macraigor implemented single
  step: by using the hardware instruction breakpoints and running
  to those breakpoints. This would cause problems if an IRQ or 
  FIQ happened right at the time of the single step. Instead of
  making sure a MOVS PC, LR is at the semihosting vector and
  single stepping over it after disabling the semihosting hardware
  breakpoint, we now modify the PC with the LR , and also restore
  the CPSR with the SPSR which is faster and should be a more
  reliable way to recover from semihosting interrupts. It also 
  doesn't require read or write access to the memory at the 
  semihost vector.
- Fixed the "wmem" command for the RDI protocol config files.

Version 1.3.0.0
- Improved support for C++ and inline code. There are no longer 
  hundreds of entries for the same source file, and inline display
  of code and stepping has been imroved
- Found a Macraigor bug in the OCD drivers that was causing single
  stepping to fail when and IRQ would happen during a step and 
  implemented a work around fix until Macraigor sends us fixed
  drivers
- Added line number display to the source view. Right click and
  select "Show source lines" in the source view to display the
  source lines in source and mixed modes.
- Modified the breakpoint UI to comply with system colors

Version 1.2.1.1
- Added the TFTP download plug-in interface which allows debugger
  plug-ins to select a download plug-in to download the ROM image
  to the target.
- Fixed the "Find" dialog problems when doing a getchar where the
  dialog would not receive events and would sometimes prevent any
  other actions within the user interface
- Register display now remembers which register sets were expanded
- CPU no longer pegged at 100% when doing getchar() 

Version 1.2.1.0
- Fixed stepping when doing a getchar() with Macraigor. Now the
  debugger will notify the user they must complete the getchar and the
  target will now stop immediately following the getchar.
- Added code to notify users about AXF files with conflicting type
  creator resource and resID in the Debug Console.

Version 1.2.0.9
- Fixed some stepping issue for arithmetic opcodes that modify the PC
- Added some code to modify the CPSR to non-USR mode value for Macraigor
  protocols using the 72xx and 73xx boards and restore the original 
  CPSR value afterward to avoid stopping in user mode and not being
  able to read protected memory.
- Changed breakpoints to unresolve correctly if a process is killed
  before it is unloaded by the operating system

Version 1.2.0.8
- Fixed a crasher where POD would crash right after launching. The UI
  settings file that contains the saved positions of the open UI windows
  had some incorrect logic that was corrected and fixes the issue.

Version 1.2.0.7
- Fixed stopping when doing a getchar() when using RDI targets. Now the
  debugger will notify the user they must complete the getchar and the
  target will now stop immediately following the getchar.

Version 1.2.0.6
- Fixed files view to properly update for the process and thread at which
  the OS is currently stopped at.
- Changed the register context of a thread to display the current thread's
  registers only and always display the bare board thread registers.
- Implemented double clicking on a thread tree item entry to show that 
  thread's context in the source view window and to update all views

Version 1.2.0.5
- Fixed Cobalt RTOS plug-in to verify that when stopped a thread exists
  before it is reported as the thread that is the current thread. If the
  thread doesn't exist, the bare board process/thread will be reported
  as the thread for the stop.
- Changed the bare board process and thread to be created on connect
  which allows users to see registers after connecting. This bare board
  process and thread gets destroyed on disconnect.

Version 1.2.0.4
- Fixed a process view bug that caused the view to get out of sync with the
  current process and thread list

Version 1.2.0.3
- Fixed all processes and thread being destroyed in all cases if a bare 
  board thread is present and any thread is killed.
- Fixed DWARF 2.0 plug-in to be more C++ friendly. DWARF 2 plug-in now 
  understands the abstract origin attributes that many C++ classes, 
  variables, and inline functions contain.

Version 1.2.0.2
- Fixed thread tracking issue where commands being sent had incorrect process 
  and thread information
- Fixed issue where when no process/thread is current within Cobalt, we 
  indicate correctly that the bare board thread is the current thread

Version 1.2.0.1
- Initial pre-alpha release of Cobalt RTOS aware POD with support for new 
  method of getting process/thread/library notifications without using a 
  "DebuggerHook.axf" file. Notifications now use semihosting calls for the 
  notifications and do not require any additional breakpoints be set 
  (besides the one automatically set for semihosting). Fully compatible 
  with the old method which uses a "DebuggerHook.axf" file as well.
- Added the ability to open an instance any of the tabbed views in separate 
  windows via the "Window" menu
- Added the "Export All..." feature to the preferences to allow easy export 
  of all preference panel settings for posting to web pages, or emailing to 
  other to aid in setting up POD. The output file generated by this feature 
  can be imported using the "Import..." button in the pref panel dialog.
- Added bitwise text mnemonics for registers such as the CPSR and SPSR to 
  mimic the ARM debugger and provide more meaningful register displays.
- Included the latest Macraigor "template.dll" which will need to replace 
  your current version on IF the modification date is newer that your existing 
  "template.dll"


/*
 * The Apache Software License, Version 1.1
 *
 *
 * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights 
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer. 
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:  
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Xerces" and "Apache Software Foundation" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written 
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    nor may "Apache" appear in their name, without prior written
 *    permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation and was
 * originally based on software copyright (c) 1999, International
 * Business Machines, Inc., http://www.ibm.com.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 */
