-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCHANGES
1532 lines (1133 loc) · 64.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# $Id$
See the file README for build instructions.
The URL for the ups web site is:
http://ups.sourceforge.net/
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.
Changes after 3.38beta2
-----------------------
Changes between 3.38beta1 and 3.38beta2
---------------------------------------
Fixes from Flemming Madsen <fma@ccieurope.com>:
o With SUN Forte 6.0 C++ structure member names had spurious characters
at the start as the STABS emitted for them had changed.
o Automatic variables in files with '.c' extension put through a C++
compiler not displayed properly.
Enhancements from Tom Hughes <thh@cyberscience.com>:
o Support for wheel-mice and mice with more than 3 buttons.
o Improve support for bitfields, including 64 bits wide.
o Various fixes for DWARF 2 support.
o Import latest 'libdwarf' (libdwarf2003Apr06.tar.gz).
o Updated the GNU name demangler to the version from the gcc 3.3 release.
o Fix memory leaks.
Changes from Ian Edwards <ian@concerto.demon.co.uk>:
o Initial support for C++ with DWARF 2.
o Command line option -[no]findtypes controls whether UPS tries to find
class definitions using their names if the debugging information is
not sufficient. DWARF only. Default is enabled.
o -e <entryfunc> option to 'cg' fixed.
From Tom Hughes <thh@cyberscience.com>:
I noticed that you had put in a stub for macro support, with a comment
that gcc doesn't generate macro data. The latest versions do generate
it actually, or at least the gcc 3.2 with RH 8 does. You have to use
-g3 to ask for level 3 debugging information though.
I did do some work last weekend to get macros working - it's based on
code we already had that added macro support with stabs using a little
program we wrote to insert an extra stab for each macro. I've removed
the stabs specific bit (which is a horrible hack) and added code to
read the DWARF2 .macinfo section instead. I had to fix a few bugs in
the macro code in libdwarf first though, which is included along with
code for dwarfdump to dump macros.
Macro support isn't perfect - the main problem is the fact that macros
aren't scoped, so you need to evaluate an expression containing macros
at a specific line in order to decide what value each macro has.
Currently it uses the first line of the function if you evaluate an
expression that includes a macro in a function context. It also doesn't
support function type macros at all.
Changes between 3.38beta1 and 3.37
----------------------------------
Changes from Ian Edwards <ian@concerto.demon.co.uk>:
o Support DWARF 2 debugging format as used by GCC 3.1 and later.
Only works for C programs, limited Fortran support, no C++ support.
Enhancements from Tom Hughes <thh@cyberscience.com>:
o Fix a crash if it fails to find a function definition for the target
address when you step into a new function.
o Fix some more problems when an target file is reloaded by ensuring that
everything is changed to point at the new symbol information.
o Bound issues in some loops that I found by running ups under valgrind.
o Prevent confusion when you have both a function and a global variable
with the same name.
o Get the file descriptor limit right.
o Allow config loading to occur even if there is no state directory. This
is reasonable because there may be a ~/.upsrc or something that we want
to read even if there is no saved state.
Changes between 3.37 and 3.36
-----------------------------
Enhancements from Tom Hughes <thh@cyberscience.com>:
o The stack and breakpoint listings show object names if source
file names aren't available.
o Added watchpoints for x86 machines. They support both real x86
hardware watchpoints (where possible) and use of mprotect() to
implement watchpoints when that fails. They can be made visible
on other architectures by using the WantWatchpoints X resource.
Watchpoints work in some cases on Solaris, but not reliably.
If ups moves to the new procfs interface, we could use
better method provided by the Sun kernel watchpoints.
o On machines using ptrace, ups blocks correctly now. It uses
sigsetjmp() and siglongjmp(). Also added code to fix a problem with
some X servers that was revealed once it was blocking properly -
some X server and/or window managers send us synthetic events that
looked like the special end of events event we send ourselves.
o Fixed some problems with preamble decoding on x86 machines - some
tail call optimised routines would confuse it completely and it got
the minimum breakpoint address wrong most of the time.
o Reloading of shared objects which change work properly now. It
ensures that only objects which change are reloaded and that we only
load each object once at startup instead of twice. It also migrates
everything to the new symbol table and discards the old one which
fixes all sorts of prolems including memory and file descriptor
leaks and the tendency of breakspoints to not appear in the source
display after a reload.
o Vastly improved handling of long long types in expressions. It
should also improve long double a bit.
o A bug fix for my previous patch to add frameless stack tracing on x86.
o If the ReverseArrows X resource is set, ups reverses the sense of
the up and down arrows which are used in an expression or variable index.
o The address-of and dereference buttons work for expressions as well
as variables. This allows one to pick out components of an expression
from the command line, just as one does with variables.
o The start button morphs into a restart button if the target is running
so that you don't need to kill it and then start it - this has the same
confirmation protection as the kill button.
o File descriptors open on startup now remain open in the target process.
o Double clicking on a variable in the source window expands or compresses
the structure as it does in the display window. So you can select and
dereference a pointer or struct without having to move up to the stack
display.
o Functions in the target process can be called from expressions in the
stack display.
o Extends the canonicalisation of integer type names to cover long long
as well as the other integer types.
o Fix for parameters which have to be widened when passed from
appearing twice in the stack frame - gcc on linux adds
two stabs for these, one for the actual type in the parameter and one
for the widened form used when it is passed.
o Ups saves the terminal state on startup and restore it on
exit and when restarting the target process. This ensures that if the
application being debugged changes the terminal state and then exits
or is killed before restoring it the terminal is put back in a sane state.
o Fix for a crash when dealing with void types with gcc on linux.
o Optimized the redraw routines by using clipping so that ups doesn't flicker
like mad when you drag a window across it.
o Fix for single stepping across shared library boundaries on x86 machines.
o Ups checks the dynamic linker cache when it is trying to work out which
shared library will be used. Without this it was getting confused about
which C library was being used because it wasn't implementing the same
search rules as the dynamic linker. The patch also implements DT_RUNPATH
(for those systems that support it) from the dynamic section in addition
to DT_RPATH so that the search rules should now exactly match those given
in the linux manual page for the dynamic linker.
o Allows main() to be in a shared library.
o Fix for x86 machines to allow backtraces to be generated even when
functions do not have frame pointers by searching back through the
stack for plausible return addresses that appear to point after
call instructions.
o Fix to deal with the fact that linux does not provide signal handler
information in the ptrace user area by looking in /proc for it instead.
This means that ups will correctly stop when it encounters a segv and
the target process has not got a handler installed for it. This also
allows ups to stop on any signal which we have asked to stop on, even
if we were single stepping when it was caught.
Changes from Rod Armstrong <rod@san-jose.tt.slb.com>:
o One can direct ups to use its own colormap rather than use
the default colormap. Use this if ups complains that it failed to
allocate some colors. This is a particular problem if one uses
netscape 6 on an 8 bit frame buffer machine, as netscape assumes 24 bit
color and corrupts the default colormap. Set the WantInstalledColormap
X resource to "yes" if you want ups to use its own colormap. The
command line options of -install or -noinstall can also be used.
o Fixes for editing of long breakpoint names: names are left justified
rather than right, so the edit point matches the text. Overflow
dots are shown at the right. Both breakpoint and object names
resize as the window width changes.
o Allowed a double click on a variable in the source window to
alternately expand or compress the variable, just as it does in
the display window.
o Fixed the address calculation for pointers to Fortan arrays.
o Extended the use of the repltab file for all expressions, not just
those automatically pasted from the source window. In addition, if
a ./ups-state/repltab files does not exist, ups looks for
$HOME/repltab as well. If a repltab file is found ups does
replacements as specified in the file for text of expressions.
See the man pages for details. A simple repltab file is:
NULL 0
FALSE 0
TRUE 1
o Eliminated the messages at invocation for loading stripped libraries
("Warning: no .symtab section ... using .dynsym instead"). The
messages still appear when loading libraries interactively.
o Various fixes to allow ups to survive bad code in expressions,
particularly when calling functions.
o Fix for using state and breakpoint files with overloaded
methods. The files now contain the mangled function name followed by the
demangled name in double quotes. The latter is for readibility only.
o Defaulted the ScrollDelay to 25 instead of 0.
o Fixed the "unknown type 200" messages when reading the symbols of a
target buit with Forte 6.1 under Solaris 8. There may be other problems
with Solaris 8 however.
o Fix to enable ups to compile for 64 bits under Solaris 8. This is
just a start so others can try and get it working for 64 bits. Use
CC="cc -xarch=v9 -DOS_SUNOS_V9 -I/usr/include/v9", run ./configure,
then manually change the HAVE_GETC_HELPER and HAVE_PUTC_HELPER defines
in ./ifdefs.h to 0 before the make.
o Added a "Drop state" item to the target menu.
This simply deletes the temporary state file that ups
uses to save information about breakpoints and what data have
been displayed during a previous debug session. If you have previously
attached to a process, and have been looking at global variables
that take some time for ups to find, you can stop the debugger scanning
again for the variables on reattaching to a rebuilt target by using
the drop state button when unattached. You may also want to use it when
attaching to a different process.
o You can now recover from a bad "jump to here" selection. If you try
to jump to an invalid context, such as trying to jump up the stack,
the "Stop" button will be active. When stop is pressed, the process
will be restored to the state before the jump.
o Fixed a crash that happened when bad breakpoint code was loaded from
a breakpoint file, and then ups attached to a process.
Changes from Ian Edwards <ian@concerto.demon.co.uk> :
o Fixed demangling of Fortran names to cope with the single and double
underscores added by GNU f77.
o Fixes for watchpoints on FreeBSD.
o Changes to the Fortran stuff in the 'tests' directory.
o Fix for the testwn.c wn library testing file.
o Moved the GNU C++ demangler out of ups/ao_symscan.c into a new
directory lib/libgnu and added the demangler for GCC 3.x.
Changes from Russ Browne <rbrowne@ncplus.net> :
o Fix for the <Bad format hint> problem seen with g++ on
Solaris 5.6 as reported by Will Dowling.
o Fix for the "sizeof(bool) inconsistent across compile modules"
warning as reported by John Utz and Zhidian Du.
o Changes from Terry R. Friedrichsen <terry@venus.sunquest.com>
- look for '.upsinit' file in current directory before $HOME
o Changes from Giuseppe Borzì <gborzi@ieee.org>
- more idiomatic RPM specification file and other RPM stuff
Changes between 3.36 and 3.35
-----------------------------
o 3.36 has been used on Solaris 2.x, SunOS 4.3.1 and Linux Debian 2.0.34
only. Built and minimal testing on FreeBSD 3.2, 4.3 and 5.0-CURRENT.
Being based on 3.35, it should be possible to build it on Solaris 8,
FreeBSD 3.x, FreeBSD 4.x and RedHat Linux 6.2.
o The changes to ups make it more versatile and faster to use. It will
continue to work as before, but for large targets, it is more efficient
to load just a few standard libraries and load others on the fly as
needed. This can be done with a ".upsinit" file in your home directory.
An example is:
load *libc.so*
load *libC.so*
load /usr/lib/lib*
load /usr/openwin/*
load /usr/platform/*
load /usr/dt/lib/*
# for target specific libraries:
load ./*
load ../*
You might want to edit this to always load certain libraries, and add
source paths with the "use" command, but now there should be little need
to deal with this file as libraries can be easliy loaded interactively.
By using "load" rather than "noload", ups won't be affected by different
sets of libraries that each target may have.
Note that "./" now has the meaning of the directory of the target, not of
where ups was started.
o By only loading the minimum standard libraries, ups will start a
lot faster. Other libraries can be loaded on the fly by selecting
"Target", then "Load library", which will display a menu of unloaded
libraries - simply choose one to load it. Similarly, the stack trace will
display <full library name> for an unloaded library. To load it, select
the line and press "Load library". As always for objects in the display
window, multiple objects in the stack can be selected at once, and
loaded as a group.
The full set of libraries that the target uses is determined
after the target has been started or attached to, so the "Load library"
list will change at that point.
o Ups is now persistent - that is, it can be kept running for weeks
like an editor, with no need to exit at the end of each debug
session. The top line of the "Target" line can be edited to a
different name, and ups will read new symbols as necessary and
reinstate breakpoints and variables as possible. So if you are
working on a shared library, and you need to test it with
different targets, simply enter the new target name and
attach, and the debug state information will be preserved.
(The unimplemented "Write target core" was changed to "Load library").
The target name accepts csh style tilde notation.
Similarly, one can continue to debug code that gets built each
night by a nightly build: detach before the rebuild, then
reattach afterwards and ups will read any newly built libraries and
restore the debug state. There should no longer be problems with
reverse video caused by the debugger not updating its symbol information.
o It is now easier to use ups to examine code. Left clicking
on a function name in an active function causes ups to read the
function symbols before navigating to the function. You can bypass
the symbol reading by using the middle mouse button. So an
unmodified left click looks up local symbols, then globals, a
shift-left click does an automatic "add expr", and a middle click,
if not over breakpoint code, looks up global symbol lookup only.
o Fixed a refresh bug when using CDE with "click to focus" and "raise on
focus" - ups now repaints properly when it receives focus.
o Changed the submenu order when loading breakpoint files so that the
default is to save the breakpoints to the statefile.
o Changes from Terry R. Friedrichsen <terry@venus.sunquest.com>
- Fixes for building on Red Hat Linux 7.0
o Changes from Russ Browne <russ@amc.com>
- Changes to the menu editor (med3) to produce readable output.
o There are new X resources for the "Load library" menu invoked from the
target line: UnloadedLibMenuForeground and UnloadedLibMenuBackground.
Changes between 3.35 and 3.34
-----------------------------
o Changes from Russ Browne <russ@amc.com>
- Support for SC5 compiler:
Use the compiler supplied demangling library.
Recognize the bool type, now supported by this compiler.
Support for new implementation of virtual base classes used
by this compiler.
- Corrected look and feel for X clipboard operations:
Selected text does not vanish when the mouse button is released.
Instead, it stays selected until another clipboard selection
is made or the displayed text is changed by some user action.
Corrected paste from X clipboard to not allow pasting a new-line
in a text display that does not accept a new-line from the keyboard.
- Corrected display of source files with dos style line endings to not
display the \r at the end of each line.
- Added a keyboard history feature:
Most regions where UPS accepts data from the keyboard have
a history of recent entries. Recent entries can be accessed
either through the keyboard by typing Control-P or Control-N,
or through the mouse by pressing a button that brings up a menu
of recent entries for that item.
- Added a text-entry button.
This was primarily so that when entries are accessed through
the history menu one can complete the entry with the mouse
rather than shifting to the keyboard to type return or escape.
Clicking the middle mouse button on this region does a paste.
- Allow the user to remove the mousehole from the display through X resources.
If one uses a large font, the typing line area can get
rather small. By setting X resources one can retrieve the
space the mousehole takes up for the typing line instead.
- Fixed med3 keyboard routines to recognize the most useful control characters.
- display of 'long double' on SunOS 4.x
- implement raise/lower on "exec to here".
- fix to the symbol table problem reported by James Armstrong.
- stop 'Add Expresion' crash if no debugging info in the file
- fixes for lower/iconify on run
Notes from Russ Browne <russ@amc.com> :
Added X resource and command line option to split the output window
off as an independent top level X window.
Arrange that ups can raise itself to the foreground when the debugged
process breaks or dies. This behavior can be turned on by a
menu option under "Windows" (below) or by an X resource or a command
line option.
Renamed the old "Snapshot" button to "Windows" and added options to
raise sister ups windows to the foreground and to make ups raise itself
to the foreground when the debugged process breaks or dies.
Some more technical changes:
Added handling of N_ILDPAD stabs information in elf symbol tables.
Further tightening up of compiler identification while handling
the N_OPT stab.
Treatment of SC5 virtual base classes is working to my satisfaction.
I removed from the CHANGES file the sentence about this requiring
a lot more work.
In split window mode, the typing line '/' and '?' shortcuts always
search something on the screen where the command is typed.
Changes in symbol parsing to ensure the the va_type field in
a var_t object is never NULL. I reported earlier that I changed
TypeID to never return NULL; that proved to be a mistake. Instead,
I always check that the "rtype" being assigned to v->va_type is
not NULL.
Removed the broken mousehole from the source window when it is
split off a top level window.
Renamed the X resource to remove the mousehole completely to
"WantMousehole=no".
Added X resource and command line option to turn message logging
on by default.
Added wn_setdefault() and used it to set several X resources
from the command line. X resources so treated appear in the
command line as [-[no]option], so that an option turned on by an
X resource can be turned off by the command line, or vice-versa.
These options are:
-[no]split[:num] -[no]splitoutput[:num]
-[no]mousehole -[no]outwin -[no]logging -[no]raise_on_break
Added support for menu toggle items and used them to combine the
message logging on/off options into a single option and to add
the new raise-on-break option.
When the window containing the display area is iconified all UPS
windows are iconified. When that window is de-iconified all windows
iconfied with it are restored.
Gave UPS an icon. As I said earlier, I not a great artist.
If anyone wants to improve on my work, or replace the icon
completely, be my guest. The bitmap for the icon is in ups.c
Added X resources for the source and output window geometries.
These are Src.Geometry and Output.Geometry. Originally, these
were to be SrcGeometry and OutputGeometry, but the '.' fell out
of the existing get_xdef routine in wn_init.c and appears to be
consistent with X conventions for specifying a resource specific
to an individual window, button, or the like. In the manual page
I spelled this out as "Ups.Src.Geometry" because I felt readers
might not understand that the "Ups." still goes in front of the
resource name.
o Changes from Rod Armstrong <rod@san-jose.tt.slb.com>
- splitting the ups window into two.
- X resources to control vertical positioning of the items in the
display window.
- fix for static globals with Centerline and Purify on Solaris.
- fix for scroll delay code
- revived the code for debugging dynamically loaded libraries.
This was commented out in 3.35 beta6 because it caused a step
in C++ code to be very slow. The hit should happen now only
when the dynamic linker does a load, open or close of a
dynamic library, or when the user rescans the init file.
Ricardo Telichevesky <ricardo@teli.org> reports this works
on Linux Red Hat 6.2 as well as Solaris.
- related to the above, rescanning the init file now works again.
- for a display window search, optimized the coloring by turning
it on and off only when necessary. This reduced the setup time
for a search from minutes, for a display window of thousands of
lines, to millisecs.
- fixed a bug that caused most steps to behave like nexts in Sun
shared libraries, especially for C++ code.
- added support for displaying Static members of a class for
Centerline compiled code.
- added /usr/openwin/lib/app-defaults to the search path for X resources.
o Changes from Ian Edwards <ian@concerto.demon.co.uk>
- support of multiple X screens in libx11wn.
- various FreeBSD and Linux bugs.
- 'C' library calls in interpreted code at breakpoints on Linux
and FreeBSD 3.x,4.x.
- fixes for lower/iconify on run
- application defaults file may be in /usr/X11R6/lib/...
- stuff to allow a FreeBSD package/port of ups to be built
- libx11wn builds in its directory and not the X11 subdirectory
- stuff to allow a Linux RPM of ups to be built
o Changes from Panagiotis Tsirigotis <pgttso@best.com>
- fix for UPS crash when using a g++ that generates vtable thunks
for virtual function dispatch.
o Changes from Peter Collinson <pc@hillside.co.uk>
- control speed of scrolling of text in windows with Ups.ScrollDelay
o Bob Carragher <bob@fla.fujitsu.com> and
Rick Mallett <rmallett@ccs.carleton.ca> tested the 'split windows'
code on dual-monitor systems.
o Doug Hughes <Doug.Hughes@ENG.Auburn.EDU> provided fixes for
- Makefile errors.
o Dibyendu Majumdar <dibyendu@mazumdar.demon.co.uk> provided fixes for
- memory leaks in the interpreter code.
- make C interpreter understand class::method so can be used in
interpreted breakpoint code.
o Thanks to Laszlo Ladanyi <ladanyi@us.ibm.com> for pointing out
- UPS was using its own 'strstr()' when most C libraries now have one,
- 'gets()' should be avoided
- not necessary to remove "-O2" when building using 'gcc'
Changes between 3.34 and 3.33
-----------------------------
o Rod Armstrong <rod@san-jose.tt.slb.com> provided fixes for
- debugging core files under Solaris 2.6 and 2.7. For Solaris,
from limited testing, debugging target and cores is summarized below:
UPS Built Can debug targets from Can debug cores from
on Solaris 2.5 2.6 2.7 2.5 2.6 2.7
2.5 yes no no yes no no
2.6 yes yes no no yes no
2.7 yes yes yes no yes yes
- files created with a custom preprocessor inherit the
dereference semantics of the language of the output files:
e.g. if "file.c-custom" is processed to "file.c", then the
C semantics of "->" and "." will be used when clicking on
variables.
- Globals should show their correct type instead of sometimes
showing "int assumed". The bug was introduced in 3.33.
- The "Stop" button once again terminates a long symbol table search.
The bug was introduced in 3.33.1.
o Russ Browne <russ@amc.com> provided fixes for
- breakpoints in static constructors
- compiler identification
- changes to g++ 2.8.1 symbol table
- using UPS on purify'd executables
- locating X application resources file
- display of 'register' storage class variables
- latest version of GNU C++ name demangler
- A Dump Memory item which can be used to show the contents of a
section of memory in bytes, shorts, longs and ascii.
o Ian Edwards <ian@concerto.demon.co.uk> provided
- building UPS through a 'configure' script
- changes for FreeBSD 3.x (a.out and ELF)
- fixes for Fortran on FreeBSD and Linux
o Michele Ferlauto <ferlauto@athena.polito.it> provided sample
programs and did testing for the GNU Fortran fixes on Linux.
o Laszlo Ladanyi <ladanyi@watson.ibm.com> provided fixes for
- building under debian Linux 2.0 (kernel 2.0.35)
- building on Linux with glibc 2.1
- ELF symbol table processing on Linux
- compilation warnings
o Dibyendu Majumdar <dibyendu@mazumdar.demon.co.uk> provided
- lots of work on the standalone C interpreter included in the
UPS source code, documentation on it, tests etc. See the file
interpreter/docs/Interpreter.txt for full details.
o Will Renkel <rinky@lucky22.chi.il.us> provided the information
about building UPS on a Linux 'a.out' system (on the web site)
Changes between 3.33 and 3.32-RGA
-------------------------------------
Russ Browne <russ@amc.com> 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@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 <bob@fla.fujitsu.com> 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
block.
o Fixed inefficient repaints for target menu, and made the stop button
active during all symbol table reading.
Incorporated patches from Ian Edwards <ian@panorama.com> for:
o Fixing build problems with FreeBSD 2.2.6-STABLE (also thanks to
Terry R. Friedrichsen <terry@venus.sunquest.com>).
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.
Changes between 3.32 and 3.31-RGA
-------------------------------------
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 from this version forward.
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[]".