@(#)CHANGES	3.32 Jun 18 1998

Introduction
------------

This version has only been compiled and tested on Solaris 2.5, 
Solaris 2.6 and SunOS 4.1.3, with the Sparc Compilers SC4 and 
SC4.2, gcc/g++ 2.7.2, and the Centerline c and cfront/C++
compilers. Also built for Linux ELF 2.0.31 (Red Hat 5.0).

See the file README for build instructions.

The URL for the ups web site is:

           http://www.concerto.demon.co.uk/UPS/

It is maintained by Ian Edwards (ian@concerto.demon.co.uk).
It includes a FAQ, html man pages, site listings where ups
can be found, supported architectures, a history of changes
between versions, and other information.

Mark Russell has decided to let this contrib release become the "official"
release, as he is unlikely to be able to work on ups in future. Consequently,
I've dropped the `RGA' suffix in this version.

A "ups -v" now produces:

	ups version 3.32 (build date: Thu Jun 18 12:00:27 PDT 1998)

Rod Armstrong
rod@san-jose.ate.slb.com
18 June 1998


Changes between 3.32 and 3.31-RGA 
-------------------------------------
   I've updated UPS with some nice enhancements contributed by Russ Browne
   (russ@amc.com) as listed below. I added a useful "Jump to here" feature,
   and fixes for true color visuals, and additional colors for menus and text.

o  Double-click and left-shift-click do the same thing whereever possible,
   except where indicated below where this was not possible.

o  Added X Resources to control the multi-click timeout value.

o  In the upper (display) window, arranged that a double click or 
   left-shift-click selects the same accelerator for each object type.

o  Enhanced the above accelerators as follows:

      For a variable or expression:
        If the variable is a struct or struct*, expand or collapse it
        as before,

        If the variable is a pointer to some other type, and not fully
        dereferenced, increase the level of dereferencing.

        If the variable is of integer type, or a fully dereferenced pointer
        to an integer type, toggle the format between unsigned hex and
        signed decimal.

        This results in shift-clicking on an expression doing something
        useful most of the time.

      For a breakpoint object:
        Added an X resource to control the preferred accelerator.  Choices
        are to remove the breakpoint, as ups currently does, or to 
        toggle the active/inative state of the breakpoint. The default 
        action is to toggle the breakpoint state, rather than to delete 
        the breakpoint.
  
      For the breakpoint header object
        Added an X resource to control the preferred accelerator.  Choices
        are to add a new breakpoint as ups currently does, or to toggle
        the global enable/disable state. The default is to toggle
        the global state.

o  A disabled breakpoint is displayed grayed out in the source window.

o  When breakpoints are globally disabled, the active/inactive
   states of breakpoints are grayed out in the objects window to give
   visual indication of the global state, and all breakpoints are
   displayed grayed out in the source window.

o  Double clicking on a breakpoint in the source window
   selects the same accelerator as double clicking or shift-clicking on
   the breakpoint object in the display window.
   Shift clicking in the source window adds an expression, as before, and
   does NOT select an accelerator.

o  Added X resources to control the default behavior of the source window
   pop-up menu.  The options are:
  
       Remember the last selected option as the default, as ups currently
       does.
  
       Make any of "add breakpoint", "execute to here", or "edit file" the
       default.

       In addition, make any of the above an alternate default selected by a
       shift-right-mouse-button click.
  
       Cause a selection with shift-right-mouse-button to change the default
       option in addition to selecting an option, as ups currently does
       with with a plain right-mouse-button selection.
  
o  When the call editor option is used, and the editor is vi, display the
   file name in the xterm title bar.
  
o  Added the following typing line "shortcuts":

   %g name

           Displays the global variable or function name, skipping the
           sometimes expensive attempt to display name as a local variable.

   %b function

           Adds a breakpoint at function, same as clicking on the
           breakpoints header, selecting "add breakpoint", and typing
           the name.
  
   %l file
           Lists file, if file is one of the files in the source file list,
           the same as expanding the list and clicking on the file name.
           One types only the final component of the file name.

   /pattern or ?pattern

           Begins a forward or backward search for pattern in the source
           window, as in vi.  The search may be continued in the same
           direction by hitting return, or in either direction by using
           the search pulldown menu.

o  Corrected a bug where attempting to edit the value of a byte or short
   sized parameter fails.

o  Added a command line option to force ups to pass the full name of the
   target executable as argv[0] for the process, rather than truncating
   it to the final component only.  This is useful for debugging programs
   that use the path to themselves to locate resource files, or when
   the program is purified and wants to process itself on startup.

o  Updates and corrections to the man pages and on-line help.


   The following contributed by Rod Armstrong:

o  Fixed a makefile problem on Linux that caused "make" to try and
   build a bogus target after having made the ups binary.

o  Custom menus now support meta keys using `@' to denote a meta
   key. This allows editing of text using entities of words.

o  Added a "Jump to here" option in the source window menu.
   This causes the target execution to jump to the current line
   without executing any intervening code. Use this with caution as it
   is possible to jump to a bad context where the data is bad or where there
   is no valid call stack. The safest usage is to jump over lines
   within a function. It can also be used to jump back within a function.

o  Fixed color problems with true color displays. Ups should no longer 
   emit warnings about bad parameters for X protocols. As a corollary of
   this, I added the ability to use extra colors for all menus, and text
   in the display window. 

o  The old problem that caused ups to switch to monochrome when other color 
   intensive applications such as netscape were present is gone. If ups 
   cannot allocate private color cells with adjacent planes, it switches to
   using publically allocated colors. Ups required cells with adjacent planes 
   in order to do logic operations such a reversing colors and shading. It
   now uses colors for the same effect if it can't obtain such cells.

o  New X resources allow you to color menus and text. (If you don't 
   want the new colors, set WantMenuColors and WantExtendedTextColors to "no".)

      WantMenuColors
	   If set to `yes', ups will use foreground and background
	   menu colors as listed below. If not set to `yes', such
	   settings are ignored, and the Foreground and Background
	   resources are used.

      MenuForeground, MenuBackground
	   The default colors for text and background in all
	   buttons and menus. Sub menus inherit the colors of their
	   parents unless specifically overwritten.

      DisabledTextColor
	   The color for text that is disabled, such as the
	   `start' caption after starting the target, or globally
	   disabled breakpoints.

      LastButtonTextColor
	   The text color of a busy button pressed (such as `cont'
	   while the target is executing) or the parent menu item
	   of a sub menu.

      SourceMenuForeground, SourceMenuBackground
	   The text and background colors of the pop up menu for
	   the source window.

      CustomMenuForeground, CustomMenuBackground
	   The text and background colors of the custom pop up
	   menu for editing text strings.

      FileBoxMenuForeground, FileBoxMenuBackground
	   The text and background colors of the pop up menu for
	   the file name and line number box that is directly
	   above the source window.

      <text caption>Foreground, <text caption>Background
	   The text and background colors for a menu item with a
	   specific text caption: for example "Add breakpointForeground". 
	   Note that imbedded spaces are allowed.

      WantExtendedTextColors
	   If set to `yes', ups will use the colors for the text
	   items in the display window as listed below. If not set
	   to `yes', such settings are ignored.

      SignalTextColor
	   The text color of the signals listed under the `Signal'
	   header.

      EnvironmentTextColor
	   The text color of environment strings listed under the
          `Environment' header.
 
     SourceFileTextColor
          The text color of the file names listed under the
          `Source files' header.
 
     FunctionTextColor
          The text color of the function names in the stack under
          the `Functions' header.
 
     BreakpointTextColor
          The text color of active breakpoints listed under the
          `Breakpoints' header. Inactive breakpoints are in the
          main foreground color, as is the text of breakpoint
          code in the source window.

o  The distribution includes a sample apps-defaults file (Ups) that 
   illustrates the use of such resources. It could be installed as
   /usr/lib/X11/app-defaults/Ups. 

o  Fixed a bug that broke the "Rescan Init File" option and automatic
   rescan of the init file on a reattach. Also fixed unnecessary reloading
   of shared libraries on a reattach.

o  Added a workaround for a symbol table bug seen with the patched
   Centerline compiler on Solaris. Ups now emits a message of the form
   "unmatched N_BINCL symbol in <library> (<file>)" and continues rather 
   than exiting as before.


Changes between 3.31-RGA and 3.29-RGA 
-------------------------------------
   This is mostly a bug fix release. Support for gcc/g++ (including version
   2.8.0) is much improved, and crashes when loading Sun SC4.2 compiled
   code have been fixed.

o  Fixes for reading SC4.2 code, mainly C++. 

o  Many fixes for g++ to fix crashes on reading the symbol tables.
   All data members of structs and classes should be displayed now -
   previously these were often truncated. For g++, C++ name demangling 
   conforms to the gnu style - for example a template method might be shown
   as "array<array<int> *>::operator[]". 

o  UPS allows spaces in function names as shown in the above example. 
   State files and breakpoint files now enclose function names in
   double quotes for this reason. However UPS will happily read old
   style control files without quotes.

o  There is no longer shell style globbing for breakpoint names. This
   makes it easier to enter special characters such as brackets in operator 
   methods. One could enter "ostream::operator<<" to break on cout
   statements, for instance, without having to escape the "<" characters
   as previously. Name completion works as before. 

o  Provided a workaround for a problem in debugging shared libraries
   with the Rational Clearcase source control file system. There is a
   mismatch between the Clearcase virtual file system and the Solaris
   /proc virtual file system such that UPS could not debug shared
   libaries that were in a versioned object base or vob. UPS now figures 
   out the mapping between the file systems and debugging can proceed.

o  UPS understands the data type "bool" that gcc supports. Data of 
   type bool is shown as "true" of "false" in the display window. It 
   can be edited to be either such string, or an integer - 0 being displayed
   as "false" and all other values as "true". In breakpoint code, it 
   should be assigned to an integer.

o  UPS will load a dymanically loaded library that occurs during a "next"
   or "step" operation as well as during a "cont". Previously it worked
   only for "cont".

o  Fixed a bug when reattaching to a process that is stopped at a pause().
   Previously the first attach left the target at the pause, but the
   second attach broke it out of the pause.

o  UPS should digest the occasional bad section of symbol tables without
   croaking. A few bad stabs entries have been seen on some Solaris Centerline
   compiled code. UPS will emit "Bad syntax in symbol table" and continue.

o  Added a new help section under Help -> Breakpoints -> conditional.

o  Minor updates and corrections to the man pages.


Changes between 3.29-RGA and 3.28-RGA 
-------------------------------------

o  Incorporates a native port for Linux ELF. Testing done on 
   Linux 2.0.27 from RedHat. One cannot debug core files at present.
   Attaching to a running process works, though the stack trace
   is truncated and one cannot do a "next" directly. Instead,
   set a breakpoint in the source after the attach point and "cont" -
   the the stack will right itself.

o  Includes support for"long long" and "long double" data types from 
   Ian Edwards <ian@concerto.demon.co.uk>

o  More fixes for SC4.2 code, mainly C++, and minor fixes for g++.
   This includes all patches previously posted to the UPS mailing list.
   Fixed problems with endless complaints and beeping about "can't open file"
   and "too many open files" for some targets. Source file listing now
   includes all files that UPS knows about. Can now read classes defined
   within classes for SC4.2.

o  An "execute breakpoint" no longer deselects the breakpoint. One can
   now repeatedly execute some breakpoint code by re-pressing the
   execute caption. A useful application is to indirectly bump a
   symbolic subscript in an `add expr' by incrementing the symbol
   in breakpoint code.

o  Static destructors are labelled "__STATIC_DESTRUCTOR" in the stack.


Changes between 3.14-beta and 3.28-RGA
--------------------------------------

o  UPS now supports C and C++ code for SC4, SC4.2, gcc, and
   cfront. There are some limitation: template classes cannot be debugged
   and the symbol table reading for g++ is not complete. 

o  Incorporated patch from Ian Edwards <ian@panorama.com> for FreeBSD 2.1.6.
   The changes may have broken support for BSDI/386 (if it was working).

o  You can now debug static constructors in C++ code that get called
   before the start of main(). Simply put a breakpoint on the constructor
   and run the target. The routine above the constructor in the stack
   (labelled "__STATIC_CONSTRUCTOR" for SC4 and cfront) locates the
   object instance in the source.

o  Fixed problem about breaking out of a pause on Solaris. Note that due to 
   an apparent Solaris bug, the debugged code needs to setup a dummy 
   signal handler for SIGCONT for a pause to work. That is:

	static void dummy_cont(int sig) {}
 	main()
	{
	   signal(SIGCONT,dummy_cont);
	   pause();
	}

o  For Solaris only, UPS will now detect the dynamic linking that takes place 
   when the target calls the dynamic linker routines such as dlsym(). The new 
   library will be loaded at that time, and breakpoints re-established in the 
   new library. There shouldn't be any problems about reverse video, and
   mismatched source and libraries. This works even when the breakpoint is in a 
   library that changes name after calling dlsym().

o  Eliminated spurious messages about unknown type in stab.index 
   when debugging binaries linked with Purelink.

o  You can now re-read your `~/.upsinit' on demand during a debug session 
   by selecting the `Target' object and selecting the `Rescan init file' 
   caption. This is convenient for adding new source paths or loading
   additional libraries on the fly. A missing library is indicated by the 
   stack displaying a `<bad text address ...>' symbol, as well as the files 
   of such libraries not being shown in the source files listing. After 
   the rescan, the source files and stack are redisplayed to reflect the new
   libraries and source paths. As before, the file is always read during an 
   attach. However, the new method allows you to update the debugger without
   losing control of the target by detaching.

o  The "Step" button behavior is much improved. In the previous patch, the 
   step action used heuristics, based on function names, for stepping into
   and within shared libraries. A similar scheme was used for stepping
   into C++ method calls. The step action is now much more reliable,
   and the improvement is most apparent on Solaris and for C++ code.
   It handles macro calls properly. The older step action worked by 
   disassembling the object code to determine where to place a 
   temporary breakpoint, and then ran the target to that point. The 
   new method single steps the target at a low level, and at each point
   checks to see if the target is in a known source file, and uses this to
   determine whether to stop or not.

   Because this technique is based on where the target actually 
   jumps, rather than where it is expected to jump, the new step behavior 
   may get occasionally get interrupted by a signal, such as a
   an authorization check that runs at intervals. If this happens, 
   click on the routine above the signal and press step
   again to resume the step action.

   Occasionally the step action may take some time - however the "Stop" 
   button can be used to break out of such a situation. If you don't 
   want to step through the code of called functions in this way, use 
   the "Next" command. This behaves like Step, except that it never steps 
   into called functions.

   The improved step behavior has eliminated the need for the step
   menu that appeared over the step button when debugging C++ code. 
   The man pages and on line help have been updated to reflect this.

o  UPS automatically changes to process frameless functions 
   if it detects the presence of Purify, Purecov or Quantify.
   This will fix the stack display, and the step action reverts to the
   older heuristics scheme. A value of `off' for the NonFrameFunctions
   X resource explicitly overrides such automatic setting.

o  The activation state (active or inactive) of breakpoints is
   now maintained when saving and restoring breakpoints.

o  When loading breakpoints from a file, a submenu now offers the
   choice between saving such breakpoints in the statefile or not.
   Previously, breakpoints loaded via a file were not saved in the
   statefile.

o  Fixed a bug whereby a breakpoint entry was cleared if the text included
   embedded wildcards.

o  Fixed bug on Solaris whereby the debugger would not appear to stop
   on a breakpoint unless the mouse cursor was over the debugger window.

o  Ability to make a X selection (cut & paste) in the display window.
   Left button selects objects for operations as before, and one can pan 
   vertically to select groups of objects. If the horizontal
   distance from the original click exceeds a certain value, the window
   shifts from selecting objects to making an X selection. the value is
   30 pixels by defaults, but can be set with the SelectionThreshold X
   resource. One can easily just pan right to select a string for instance. 

   If the selection in the display window begins outside of an object, 
   text will be selected immediately. This makes it easy to select a 
   stack trace for example, by simply panning vertically down the
   leftmost column.

o  A new button above the display window allows a search on text in the 
   display window, in a similar manner to seaches in the source and output
   window.

o  Restored ability to make a text selection within breakpoint code. Click
   on the line, but outside the text to select the breakpoint with
   highlighting in the display window.

o  Eliminated second appearance of custom menu when used in the display
   window to insert text.

o  Fixed compile problems in o.def.c and ui_layout.c.

o  Fixed bug for displaying globals using the "file-name:global-sybol"
   syntax in the typing line. This was broken for files that contained
   global data, but no functions. In general: if the global-sybol
   is a variable, the variable is added to the display; if it is
   a function, the source window will display the code. 

o  Previously, when you clicked on a global, UPS sometimes displayed
   a bogus entry rather than the real instance of the variable. The bogus
   entry had an invalid address; hence its value did not change at the
   code was executed. With this version of UPS, such cases will
   cause two entries to be displayed - of which one may be bogus.

o  Symbol table fixes for SC3/4, g++ and cfront/clcc. There are still 
   problems with SC4 in reading classes that refer to forward declarations 
   of other classes - such classes cannot be expanded. 

o  C++ demangling for SC3/4 and g++.

o  Fixed fatal problems for large cfront C++ targets stemming from source 
   file renaming.

o  Save and load of UPS state on demand. This is accessible by selecting the 
   target name at the top of the display region.

o  Fixed next and step for SunOS shared libraries.

o  Fixed editing of long fields in the display window. Affects target
   name and arguments, environment strings, and global and local
   variables. Editing fields now correctly resize when the tool is
   resized.

o  It is safe to make references to shared library code before attaching.
   If UPS is invoked on a target without specifying a PID in the
   command line, it is now safe to set breakpoints in shared libaries,
   or otherwise view shared library files. It the debugger is then
   attached to a target, the shared library symbol tables will be 
   rescanned and any breakpoints in the shared libaries will be
   reinstalled.

o  The reload file function now works correctly, and breakpoints in reloaded
   files are maintained.

o  Fixed function block line numbers for shared libraries for SunOS. 
   This also fixes a bug that breakpoint code couldn't see variables in
   function sub-blocks in shared libraries.

o  Added step sub menu for cfront compiled C++ code.

o  Added a help button. This is to the left of the Snapshot button.

o  Can now select "a -> b" with a left click. Previously, such
   selections did not work when spaces were present.

o  Restored ability to toggle selection of breakpoints in the display
   window with right button.

o  Fixed fatal "attempt to reference nonexistent object" condition
   when removing a selected list of breakpoints that that contain
   automatic duplicates due to multiple linking.

o  Any "add expr" code in functions can now use file types. Previously,
   file types were available only if a local variable referred to them.

o  Long variable names are no longer truncated in the stack display.

o  Restored behavior so that shared libraries are pre-scanned before running 
   the target.

o  Restored blocking for C++ code.

o  Only file names are shown in the source file list, stack, and source
   window label - sometimes path was also included. Eliminated files with
   the same name and path from the list, other than multiple linked files.

o  Tilde notation allowed on file reads and writes. Applies to breakpoint
   files, state files. output window loads and saves and writing target cores.

o  Fixed blobs left on screen when moving cursor in breakpoint code. This
   only affected some fonts, such as 16pt fonts.

o  Globals are automatically restored when using a state file.

o  Cannot detach if already detached (this caused a crash).

o  Fix for some SunOS shared libraries functions in which UPS could not 
   read any variables.

o  Fix so that tracking breakpoints in multiple linked files change together
   when breakpoint code is used.

o  Restoring breakpoints in multiple linked files from a breakpoint file,
   or from a state file, or by a "break name" statement in a ~/.upsinit
   file installs the tracking breakpoint as well.

o  Restored the prescan of dynamic libraries, before the target is run.
   This allows you to set breakpoints and see files of dynamic libraries
   before the target loads them.

o  Search for globals stops on the first exact match. For targets that have
   many globals scattered in hundereds of files, this reduces the search
   time from many minutes to a tens of seconds.

o  When UPS is reading symbols, the `Stop' button becomes active while
   the adjacent buttons become inactive. Pressing the button will stop
   the symbol reading at the end of the current file or function. 

o  If the UPS window is exposed of resized while it is reading symbols,
   it will be promply repainted as required.

o  Automatic duplication of breakpoints for C++ to catch overloaded methods.

o  Automatic deference of the "this" pointer when clicking on names in C++ code

o  Messages when symbols for functions are read in.

o  Motif type scrolling direction if desired.

o  Will quit when a window manager sends a WM_DELETE atom, whether
   running or stopped.

o  Autoscrolling on selecting text in the display window.

o  Varible names are colored.

o  Breakpoint code is colored.

o  Different default color for breakpoint code and changed values.

o  Added attach and detach buttons.

o  Added Activate, Inactive and Execute buttons for breakpoints.

o  Acclerators for the display window (SHIFT-left mouse button):

o  Added a menu item in the source window to spawn an editor.

o  Custom menus, including control character support, are available for 
   the typing line, display, source and output windows. See the section
   on "ENVIRONMENT VARIABLES AFFECTING UPS" in the man pages for details.

o  Left click on breakpoint code in soure window highlights breakpoint
   line in display window, (as did previous versions of UPS).

o  ESC/RET do partial name completion when setting breakpoints.

o  Shift-ESC, or Shift-RET, list options in output window. When multiple matches
   are found, the message indicates that Shift-ESC can be used to list
   the matches, without terminating the edit.

o  Includes enhancements from Russ Browne, Applied MicroSystems (russ@amc.com) 
   for the UPS_FORMATS environment variable, and bumping of array indicies 
   on duplication, and elastic formating of file names in the stack and 
   breakpoint list. The formating feature allows the file names to be 
   visible for large fonts, and when the debugger window is made quite narrow.

o  Incorporates fixes from Daniel M. Quinlan (danq@lemond.colorado.edu) for
   displaying structures and unions, some fortran variables and a fix for 
   "unknown type" in scanning SC4 symbol tables.

o  Includes enhancements from Callum Gibson (callum@bain.oz.au) for
   the save state code for signals.

o  A fix for 16bpp visuals was contributed by Craig Amey <craiga@MetaSW.COM>.

o  Added global enabling and disabling of breakpoints.

o  Breakpoints which are inactive or globally disabled run at full speed.

o  Added NonFrameFunctions X resource for fixing stacks for Purify/Quantify.

o  Fix so targets using shared libraries can be debugged from other
   directories.

o  Added `Add source path' to source file header.

o  Added a menu for files, functions and the file name box to show
   file paths and reload and rematch files.

o  Added control of logging of messages to the Snapshot menu.

o  Added `Collapse -> First level/Completely' sumbmenu to 
   source file header.

o  Added VERBOSE environment variable. Can be 1, 2, or NOLOAD.

o  Added init file support: use, load, noload and break. Also record file syntax.

o  Added rescan of initization file on reattach, so libaries can be loaded, if
   initially NOLOAD.

o  Added -nosavesigs to command line.

o  Added RWCString under Formats -> other

o  Signals setup control if target is killed on getting SIGSEGV or SIGBUS, and
   if such signals can be passed to the target and allow debugging to continue
   (for ObjectStore typically).

o  Support for multiple linked files.

o  Default outwin is about 10% instead of 30% height.

o  Fix so breakpoint code at first breakpoint works.

o  Updated man pages and CHANGES to included features of this patch.

o  Included the Linux port done by Rick Sladkey (jrs@world.std.com)
   for version 2 of UPS some time ago. Version 2 only supports the 
   older "a.out" binaries, not the newer "ELF" binaries that Solaris and 
   Linux now use.

   It is included in this version as a starting point for someone to port
   UPS to Linux with ELF. It should be simple to get it working for a.out
   targets; elf targets will require more work, but as this version has
   elf support for Solaris, it should not be too onerous. If anyone
   does a port, I'll be happy to include it in my next patch with appropriate
   acknowledgment.


Changes between 2.45.3 and 3.14-beta
------------------------------------

 - Solaris 2 support

	Ups now works under Solaris 2, with either gcc or the Sun
        SPARCompiler version 3.  It can read symbol from .o files, so
	you do not need to compile with cc -xs.


 - Gdb based support

	Ups can now be build using a automatically modified version of
	the GNU gdb debugger.  See the README file for the precise
	instructions.  Basically the process is:

		- unpack, configure and build gdb

		- run a shell script which builds a symlinks copy of
		  the source tree, munges the gdb source file there,
		  then builds libgdb.a from the munged source files

		- run make in the top-level directory to build ups
		  using libgdb.a for the debugger functionality.

	I have built ups under HPUX and IRIX using the gdb
	support.  Canned support for these and other architectures
	will be included in a future release.

	You can build ups on Solaris 2.3 and SunOS 4.1.3 using the native
	support (again, see the README file for details).  It is also
	possible to build the gdb based version on these systems but
	there is not much point doing this.
	
 - Emacs-like key mappings

   	You can use most of the common emacs key mappings when editing
	text (e.g. in the typing line, when adding breakpoints etc).
	See EDITABLE FIELDS in the manual page for details.

		  
 - Cut and paste

	You can select text with highlighting in the source window,
	the output window and in fields you are editing.  To select
	text, press the left mouse button and drag.  Releasing the
	left mouse button sets the X selection and clears the
	highlighting.

	You can paste text into an edit with control-Y (currently you
	can't paste with the mouse - this will be done soon).  In the
	source window there are some extra shortcuts:

	       - pressing and releasing the left mouse button (without
	         dragging) adds a variable name to the display as in
		 previous versions of ups.  Only if you move the mouse
		 to a different character with the left button down do
		 you get a plain X selection.

	       - doing a press-left-and-drag selection with the SHIFT
	         key pressed automatically pastes the selected text as
		 an expression into the appropriate place in the stack
		 trace.  It is equivalent to selecting some text,
		 selecting `add expr' for the appropriate entry in the
		 stack trace, pressing ^Y to paste the text and
		 hitting RETURN.

	      -  If you hold the shift key down, the press and release
		 the left mouse button without moving the mouse, ups
		 adds the expression under the mouse to the display
		 area.  It makes a reasonable attempt to select what
		 to display.  Try it out to see what I mean.

	See PASTING EXPRESSIONS FROM THE SOURCE WINDOW in the manual
	page for more information.
	
	
 - State save and restore

	 If the file ups-state exists in the current directory, ups
	 will write state information to it when you exit, and reload
	 state when you start.  This includes breakpoint locations
	 (and the interpreted code, if any), and the state of the
	 variables display.  See SAVING STATE in the manual page.


 - Loading and saving breakpoints

	You can explicitly load and save breakpoints to files.  To save
	breakpoints, select one or more in the display area, then
	select `save' from the menu.  You will be prompted for a file
	name.  If the file already exists you will be asked whether
	you want to cancel the save, overwrite the file or append to
	it.

	Saved breakpoints can be reloaded by selecting `Load' from the
	`Breakpoints' header menu.


 - Editing in the output window

	You can now edit in the output window (the window where
	$printf output goes.  Click with the middle mouse button to
	display a cursor.  You can then append or delete text.  This
	is useful for tidying up output to make it clearer, or for
	deleting uninteresting stuff.

	You can also dump objects (like the stack trace) to the
	output window (the `Snapshot' menu item to the left of `Quit'),
	and save or restore the output window contents from/to files
	(`Load' and `Save' in the output window menu).

  - Code in header files

	Ups now handles code #included from header files.

  - Plus various other things, which will be described in the full
    release.


Mark Russell
25th May 1995


