UPS 3.33 released. (Should fix Disappearing breakpoints)

From: Rod Armstrong (
Date: Wed Oct 07 1998 - 18:48:26 BST

I have relesed the 3.33 version of UPS. This should fix the disappearing 
breakpoints problem reported by Callum Gibson. It has some neat C++
support as contributed by Russ Browne, as well as the fixes included in
the 3.32.1 patch. Mark Russell rightly pointed out the correct form of
the errf() call. I'll fix on the next release.

A caveat from Ian Edwards:

 There may have to be a 3.34 in a few weeks/months though - UPS will build
 on FreeBSD 3.0 but does not work because the registers cannot be accessed
 through the 'u area' any longer, there being new 'ptrace()' calls to
 get and set registers : PTRACE_GETREGS and PTRACE_SETREGS. 

Updated releases of UPS
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:


It is maintained by Ian Edwards (
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.

Getting the release
The README and tar file are available from:

The same site has precompiled binaries for Solaris, SunOS and Linux 2.0.31.
Note that these are NOT tar files, just compressed binaries - so simply unzip
them with "gzip -d" and rename to "ups".

All the files are available at other mirror sites such as:

(It's not yet available at, but should be later.)

Unpacking the distribution
You should have a compressed tar file called ups-3.33.tar.gz Change 
directory to a disk with a six or more megabytes of free space and say:
        gzip -dc ups-3.33.tar | tar xfp -
This will create a directory tree called ups-3.33. Change directory into it.

See the file README for build instructions.

Changes between 3.33 and 3.32-RGA 
   Russ Browne <> added handling of symbol table information 
   concerning base classes, vector tables, and static class members in 
   SC4 and g++ object files.  This results in the following family  of 
   features, most of which work only for the above two compilers:

o  Base classes are displayed as structs within the structure,
   similar to ddd or Visual C++.

o  Static members of a class may be examined in a way consistent
   with the UPS methods for  examining of global data ( e.g. click
   on "myClass::statMem", or for examining members of a struct
   (e.g. select an object of type myClass* then enter ".statMem"
   in the typing line, or click on "statMem" inside a NON-static
   method for myClass to get this->statMem).
o  Added a popup menu option to expand all static members of a
   selected object.

   He also:

o  Moved the determination of the compiler to the initial load of the symbol
   table instead of the parsing of type information.  This should remove the
   need for the UPS_COMPILER environment variable as a workaround for when
   the previous algorithm failed.  Also, the compiler is correctly identified
   before it is needed during demangling.

o  Fixed some ommisions in the demangling. ( Gnu distructors demangled
   as A::_ instead of  A::~A; for SC4, operator*= and operator%= demangled
   as operator-=; for SC4 and clcc, cast operators demangled incorrectly.)

o  Added handling of template type names in g++ symbol tables.

o  Put up a blocking cursor (hourglass) during symbol table parsing as
   version 2.XX did.

o  Corrected "Unknown PT_NOTE type " message that
   came up when loading an ELF core file.

o  Various fixes to better read static variables, both local and global,
   for SC4 code.

o  Improvements to handle optimized code. This should result in being able
   to set breakpoints on the open brace of functions in optimized code,
   and result in the stack trace when you break in optimized code (or
   get a core file for one), showing all optimized functions as being
   at their opening brace.  Better than not shown at all.

o  Corrected the following in 3.32:

       Default colors for "HighlightColor" and "VariableColor" failed
       if these X resources were not set.

       Using the typing line shortcut to do a search then shifting
       to the search button in the menus to continue the search
       dumped core.

       With g++ version 2.6 and earlier, variables of type bool
       could incorrectly display as true.

o  Jody Goldberg <jodygold_at_sanwafp.COM> contributed a small fix for
   the hashtable growing algorithm. This addresses a failure on large 
   C++ programs under Solaris-2.5.1

   Rod Armstrong added:

o  Fix to allow debug of a target that is completely statically linked.

o  Fix for cleaning up the temporary breakpoint file that UPS creates
   when re-attaching to a different instance of a process.

o  Fix so that that when multiple instances of local or global variables
   are displayed (by using the duplicate option for instance), all
   such instances are restored when the function is re-enetered.
   Previously only one instance was restored.

o  Updated the man pages and online help text.

o  Added the source for the med3 menu editor. The old sources were made
   ansi compliant, and the editor now reads and writes the expanded menu
   structures that include the foreground and background colors that
   were introduced in UPS version 3.32. The med3 sources are in the 
   ups-3.33/med3 directory. There is documentation in ups-3.33/med3/doc.
   Med3 was written by John Bovey, UKC, 26-4-93, who also did most of
   the development of the wn library. Med3 links with the wn library in
   the UPS distribution. I restored the autonomy of the this library by 
   replacing all hardcorded calls to other ups functions with callbacks.

   The following were in the 3.32.1 patch and are included in 3.33

o  Fixed the problem of finding source files for targets that are relatively
   linked. This bug was introduced in the 3.32 version, and only appeared
   for certain combinations of compilers and source.

o  Fixed the menu colors for the "*" menu item for variables. There is
   now a special Asterisk resource for this. See the man pages for details.

o  Fix for finding symbol table information in library object files produced by
   the SC4 compiler, that are statically linked into the target.

o  The temporary file that ups uses to re-establish breakpoints on
   reattaching to a target is now named with a PID number, and removed
   after use. This fixes possible file conflicts between different users
   on the same machine.

o  Fixed a crash reported by Bob Carragher <> caused by
   an old state file that referred to a data structure that had since changed.

o  A left click on a block in the stack (the line that shows the line
   ranges for the block) now displays the source, instead of expanding the

o  Fixed inefficient repaints for target menu, and made the stop button
   active during all symbol table reading.

      Incorporated patches from Ian Edwards <> for:

o  Fixing build problems with FreeBSD 2.2.6-STABLE (also thanks to 
   Terry R. Friedrichsen <>). 

o  This also restores the ability to call target functions from breakpoint
   code. Should work for Linux as well.

o  Fix for FreeBSD in which doing 'Stop', 'Kill', 'Start' caused 
   "Fatal internal error: shared lib botch (aborting) ...".

o  FreeBSD - when debugging a core file UPS now reports the signal that
   caused the core dump, and the stack trace includes symbols that are
   in shared libraries.

o  General - can now edit long long integers.  Tested on FreeBSD 2.2.6-STABLE
   and Solaris 2.

Rod Armstrong
7 Oct 1998

This archive was generated by hypermail 2.1.4 : Wed Feb 13 2002 - 21:51:32 GMT