forked from ggcov/ggcov
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
804 lines (709 loc) · 37.2 KB
/
ChangeLog
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
Thu Mar 13 07:44:17 2014 Greg Banks <[email protected]>
* Release 0.9
* Handle gcc 4.7 (generic)
* Update RPM spec to distribute ggcov-run
* Work around bfd dynamic library linking issues on Ubuntu
* Support call scanning on x86-64.
* Work around a gcc/bfd filename bug with yacc files
* Find object files with a .os extension
* Find .gcda files buried in libtool .libs/ dirs
* Don't recurse into toplevel debian/ or .git/ directories
* Automatically suppress blocks which call abort() and blocks
which represent the failure case of assert() statements; now
your assert() statements don't drag down the coverage stats.
* Add the --suppress-call option to allow you to suppress
any block which calls a given function.
* Remember various user interface state between ggcov runs:
window size and position, checkboxes in menus, Source window
column state.
* Lists of files now trees with filename and directory icons.
* Update several windows to use the newer GtkComboBox widget.
* Tooltips on flow diagram show block info and suppressions
* Add a Save As button to the Report window.
* Don't show the Cobertura XML in the Report window
* Make the Summary text columns fixed width so the window
doesn't resize unexpectedly.
* Fix scroll preservation on the Source window
* Grey out menu items in the Source window
* Show abbreviated common path in Files window
* Improved error message for missing files, bogus tags.
* Minor performance improvements
* Improvements to data structures, code, build and unit tests.
Sun Jul 24 13:59:04 2011 Greg Banks <[email protected]>
* Release 0.8.4
* Add the ggcov-run program, which can be used to run a test program in
such a way that the runtime generated coverage data files are stored in
a chosen location rather than being written to the source directory.
Added corresponding --gcda-prefix option to ggcov, tggcov and
git-history-coverage. This feature is useful for those testing
scenarios where the source directory is not available or not writable.
* Reorganise compiler version handling to make it easier to add support
for new compiler versions, especially ones that are identical in
behaviour to gcc 4.0 except for the reported version string. Also some
code cleanliness improvements including const correctness and fixing
compile warnings with newer versions of gcc.
* Support for gcc 4.6, including:
- gcc 4.6.x in Ubuntu Oneiric -- thanks to Jim Huang.
- gcc 4.6(prelease) in Debian Wheezy.
* Usability improvements:
- tggcov will annotate yacc and lex input files
- don't complain about source filename "<stdout>"
- fuzzy function solving is always enabled
- disable "failed to reconcile calls" warning.
- turn off compiledir warnings entirely
- handle filename clashes with yacc-produced .c
- detect more recent compiler millicode functions
- handle un-normalised source filenames in .gcno
- useful errors when detecting that data files were produced by an
unrecognised compiler version.
* Improve .gitignore -- thanks to Jim Huang.
* Some improvements to utility classes
* Better errors when tggcov fails in tests
* Use --coverage option in testing.
* Fix racy loop in test015 make check due to UMR
Fri Apr 22 16:39:00 2011 Greg Banks <[email protected]>
* Release 0.8.3
* Handle gcc 4.5.
* Work around Ubuntu libbfd b0rkages
* Add a report which emits a Cobertura coverage.xml
* Add git-history-coverage which reports coverage by git commit
* Add -o option to tggcov
* Silently treat missing .gcda files as zero counts
* Automatically suppress some glibc inline functions
* Split ggcov RPM packages into three.
* Fix a really old bug with minimal_name()
* Add hashtable_iter_t to iterate a hashtable
* Provide a package: target in the top level
* Don't link (t)ggcov against Sleepycat DB
* Fix dist: target again
* Modernise RPC spec file.
* Use PKG_PROG_PKG_CONFIG in configure.in
* Converted .cvsignore files to .gitignore
* Use git to generate ChangeLog not CVS.
Sun May 9 15:55:03 2010 Greg Banks <[email protected]>
* Release 0.8.2
* Support for gcc 4.4.1 (Ubuntu 9.10), patch from Ken McDonell.
* Removed the ability to read files produced by gcc -db. This
feature was always too fragile as it depended too closely on
undocumented and volatile gcc internals. Removed test018
which exercised this feature and has been broken for some time.
* Char* constness fixes from Ken McDonell.
* Other minor compilation fixes.
* Fixed a number of complaints from automake 1.11 about gmake
specific features in Makefile.am files.
* Update CVS ignore files.
* Update my email address.
* Update the release procedure document.
* Fix wrong test name in test022 error message
* Improve the existing estring unit test and add test023 to
actually run it for "make check".
Fri Jan 8 19:29:58 2010 Greg Banks <[email protected]>
* Release 0.8.1
* Support gcc 4.3 file formats.
* Fix various compile warnings.
* Make test 018 failure message clearer.
Sun Jul 2 19:04:17 2006 Greg Banks <[email protected]>
* Release 0.8
* Significant improvements to the callgraph diagram layout algorithm,
which now generates more visually pleasing results for a wider range
of possible callgraphs.
* When mousing over callgraph nodes in the gtk gui, show a popup
containing the same information as the node box but actually large
enough to be visible on nontrivial diagrams.
* Add to the gtk gui a -w option to specify window(s) to open initially.
* Support file format from gcc 3.4 on Mandrake 10.2.
* Handle gcc 4.1.1 data file formats.
* Handle file format from the gcc 4.0.3 in Ubuntu Dapper.
* Patch by Jim Huang to support gcc 3.4 and gcc 4.1 on Ubuntu.
* Automatically detect when ggcov is being run from it's source
directory and adjust the libglade search path to find the
uninstalled glade file first. This avoids the need to build
with UI_DEBUG=1 in order to run ggcov before install.
* Reduce memory usage in various ways, including keeping some
strings uniquely in a hashtable, and using u64 instead of string
for gcc4.0 function id.
* Don't rely on the build system providing -Wl,--export-dynamic for
libglade to work after the ggcov executable is stripped, instead
use a Perl script to generate a C array which maps names to function
pointers. This is needed for Ubuntu, and also makes the exe smaller.
* Centralise the common parts of commandline option processing and
interpretation in cov.C. Instead of one `recursive' flag in each
source file containing a main(), there's now exactly one.
* Combine "graph2win" and "legowin" into "diagwin"
* Rationalise debug tokens.
* Reorganise covio_t code.
* Centralise the dbounds_t structure and some defines in a new header.
Move various code from the callgraph diagram to methods of dbounds_t.
* Add a scene generator which generates no output but performs various
geometrical checks for poor diagram layout; particularly useful for
objective testing of the callgraph diagram layout code.
* Add a --dump-callgraph option to tggcov to dump the callgraph in an
ASCII form suitable for checking in tests.
* Add test 15, which exercises the callgraph diagram layout algorithm
using a Perl script to generate C code from simple graph descriptions.
* Running a runtest script with ENABLE_DB_FLAG in the enviroment will
enable the -db gcc flag, generating a foo.c.12.bp file.
* Add test018 which exercises the 12bp callgraph reading code.
* Fix logic bug: when accounting coverage status of branches,
branches cannot ever be partially covered.
* Fixed compile warnings from gcc 4.1.1.
* Don't complain about R_386_GOT32 relocs in i386 code.
* Fix an invalid free in test018 (thanks to Jim Huang for the report)
* Callgraph handles calls to functions with attribute(pure)
* Improve filtering of line coverage results in test cases, to avoid
spurious test failures due to differing algorithms for counting
multi-block lines (the for(;;) problem) and for lone "catch" statements.
Mon Sep 12 00:21:42 2005 Greg Banks <[email protected]>
* Release 0.7
* Handle the gcc 4.0.0 and Fedora Core 4 compiler file formats.
* Add suppress by comment. New -Y commandline option allows
suppressing source lines with a single-line comment containing
the specified word. New -Z option suppresses a range of lines
starting and ending with the given words.
* Rejig block graph solving algorithm to handle calls to functions
which return a different number of times than they're called, such
as exit() or fork() or any function which might eventually call
longjmp().
* Source files in /usr/include and /usr/lib are not counted towards
the common path for source files.
* Handle relative paths to source files in .gcno and .o files.
* Handle compiling with version 3 of DB, found on some distros.
* Handle calls to functions marked with attribute((pure)) gracefully.
* Remove the unhelpful Arc column from the Calls window
* Remove the long-redundant HAVE_BBG_FAKE_FLAG define and all the code
that depended on it.
* Fix compile warnings from gcc 4.0.0.
* Fix memory buffer addressing bugs in the code to scan i386 object
files for call graph information.
* Fix assert failure when built against GTK2 library and the
^W accelerator to close a window is used before the File menu
is manually shown.
* Don't complain about R_386_GOT32 relocs in i386 code.
* Fix a Free Memory Read found when trying coverage samba4 code.
* Fix a corner case in the formatting of block lists.
* Add --version options to tggcov and ggcov-webdb (ggcov itself already
has this option via GNOME's popt table).
* When built against recent libgnome, ggcov's --help output failed to
describe the ggcov-specific options. Fix this by pushing the popt
options table to gnome_program_init().
* Fix ambiguity in function's file scope on summary page.
* Hyperlinks to source page use URLs cleaned of extraneous query
strings.
* Change the View links on the summary page to buttons, so they
show the right page without clicking Update first.
* Make web interface windows 100% wide.
* Web interface handles missing or empty tests dir more gracefully.
* Add --disable-web option to configure
* Enforce --disable-gui more strictly
* Remove a superfluous AC_ARG_PROGRAM, as AM_INIT calls it too.
* Handle quirks of older automakes.
* Loosen expected file comparison test to ignore line counts for
function variable lines, to avoid pointless compiler variation
in tests.
* Convert test007 to use expected output rather than compare to gcov
output, which miscounts the block which checks the return of setjmp().
* Add test016 to configure.in
Sun Jun 19 17:09:27 2005 Greg Banks <[email protected]>
* Release 0.6 (big jump reflects lots of changes)
* Ported to Fedora Core 3, SUSE Enterprise Linux 9.
* Support new gcc 3.4 .bbg and .da format (actually 2 formats each,
bigendian and littleendian).
* First attempt at supporting the file format generated by gcc 3.3.3
on Mandrake 10.x.
* Add a new window to ggcov to show a Lego diagram.
* Added a simple PHP web interface for navigating coverage data
* Add a second package ggcov-web and package all the web bits there.
* Scan executables to find required shared libraries, and recursively
scan shared libraries to find their required libraries, and scan
all of those for coveraged source.
* Added --solve-fuzzy flag to ggcov, tggcov and ggcov-webdb to ignore
inconsistencies in arc counts on a per-function basis. Useful for
samples from kernel coverage on multiprocessor machines.
* Hide the Arc column in the Calls window by default, to match the
initial state of the check menu item.
* When scanning object files for calls, don't record magic calls
to __cxa_throw() et al that g++ inserts.
* In the Calls window, don't show calls from blocks that have no
source associated with them; this hides the magic calls to
__cxa_throw() et al that g++ inserts.
* cov_arc_t::finalise() suppresses arcs which are calls to any of
the g++ internal exception handling functions like __cxa_throw().
* Handle PIC code relocs when scanning objects to build the callgraph.
* Grey out the View buttons on the Calls window when appropriate.
* Package the tggcov executable
* Small improvement to the formatting of block listings in the Source window.
* Icon looks marginally prettier
* Convert cov_function_t::list_all() to use the templated C++
list wrapper
* Added status() method to cov_block_t, cov_arc_t, cov_function_t,
cov_file_t. Calls calc_stats().
* portability: use /usr/bin/env to find bash for shell scripts
* Abstract differences between GTK1 and GTK2 ways of setting tree/list
column visibility into ui_list_set_column_visibility().
* Centralise two copies of nearly identical code to populate a combobox
with names of functions.
* Check for gnome_program_init() in -lgnome-2 as well as -lgnome.
* Calculate the GUIPROG variable in configure instead of Makefile.am
* Moved the status_t enum from class cov_line_t to a new global class cov.
* Converted low-level cov file IO code to C++, mostly to enable
run-time switching between bigendian and littleendian via C++
virtual functions, for the gcc 3.4 format.
* Replace Lego and Callgraph windows with a unified Diagram window which
uses the diagram_t abstraction. No user-visible differences.
* Change from gnome_config_*() API to gconf, when detected by autoconf
* Added a schema file for gconf.
* ggcov.desktop no longer needs full path to icon
* Drop -Wmissing-prototypes as gcc3.4 complains when given it in C++ mode
* Added --without-bfd configure option to make life easier for the PLD guys.
* Combine GTK1 and GTK2 functions for getting double-click data.
* Check whether the old gtk1.2 automake macros exist before using them
* Rationalised icon formats: PNG to install. XPM to #include
* Detect the name of the raw size field in bfd's asection struct, as it changed.
* Removed unnecessary #includes of covio.h
* Also remove configure for the buildrpm --force option.
* Make finalise() calls descend all the way to cov_arc_t level.
* Use EXTRA_PROGRAMS so the source tarball builds properly
* In tests, when comparing tggcov output vs expected, filter out
line counts for the { and } lines at the start & end of functions.
* Test code handles slightly different text output from gcov
* Test feature: if $RPLATFORM is set when running tests, use all
the compiled programs, .bbg and .da files from a remote platform.
* runtest doesn't use a logfile anymore
* Added --disable-gui configure option to allow for headless testing
* Added test for coveraged code in shared libraries.
* portability fixes to enable platform.sh to work on Solaris
* Added support for using the standard automake "check" target.
* reordered platform string to put version last
* Add the test/ hierarchy to the source tarball.
* Fix a memory leak in the scanning of object files.
* Portability fix: on some platforms, getc() and ungetc() are macros.
Rename member functions of cpp_parser_t to avoid trouble.
* In configure, calculate variables CPU_DEFINES and OS_DEFINES
to enable CPU-specific and OS-specific code respectively.
Doesn't support cross-compile.
* valgrind-run supports valgrind version 2.
* Fix the dist: target yet again.
* Fix bug where estring::truncate_to() could not handle a new
length longer than the old length.
* Fix bug where expanding an estring by a large amount fails
to allocate enough space and overruns the buffer.
* Add append_vprintf(), insert_vprintf() and replace_vprintf() to estring.
* Fix UMR in estring const constructor.
Sun Sep 26 20:48:49 2004 Greg Banks <[email protected]>
* Release 0.3
* Added a number of text reports to ggcov, tggcov.
* Added -o option to ggcov, tggcov (same as gcov's -o option).
* Summary window shows percentages of partially covered entities.
* Split Summary window numeric display into separate columns for
proportion and percentage, to get better visual alignment.
* Added Blocks column to the Functions window.
* Added Blocks and Functions columns to the Files window.
* Added support for yet another .bbg/.bb/.da file format, this time
emitted by gcc 3.3.2 in Fedora Core 1.
* Source lines which depend on any of the cpp symbols in the
suppression set, are suppressed. The -X commandline option
* adds a cpp symbol to the suppression set.
* Arcs from suppressed lines are suppressed; functions are
suppressed if they contain no unsuppressed lines.
* Suppressed source lines are shown in a different colour.
* Reorganised BFD and platform-specific call scanning code.
* Various minor bug fixes.
* Checked in a bunch of tests which have been sitting around.
Tue Nov 4 23:55:52 2003 Greg Banks <[email protected]>
* Release 0.2.2
* Added simple man page to document commandline usage.
* Fixed bug where callgraph scanning found no calls ever.
* Replaced most #ifdef DEBUG debugging prints with runtime prints.
with commandline selection of debug features.
Sun Aug 3 18:37:40 2003 Greg Banks <[email protected]>
* Release 0.2.1
* Fixed bug where stabs32 filename scanning code was never linked in,
so ggcov couldn't be given an executable as an argument.
* Added a warning when configure falls back from GNOME v2 to v1.2.
* configure check for the popt library works on platforms where
libpopt.so is not in /usr/lib but in the same nonstandard
location as the GNOME libraries.
* Removed acconfig.h. We can do without it on autoconf 2.13 and it
makes autoconf 2.57 whine mightily.
Tue Jul 22 21:43:30 2003 Greg Banks <[email protected]>
* Release 0.2
* Full support for all features in GTK2.
* Removed the --enable-gtk2 configure option; uses GTK 2.0 if
its installed and recent enough otherwise fallback to GTK 1.2.
* Fixed colour coding of list rows in Files and Functions windows
in gtk2.
* Pushed ifdef code for dealing with GtkText in gtk 1.2 build versus
GtkTextView in gtk 2.0, down into new ui_text_*() functions. Source
and Licence windows use new ui_text_*() functions. No GTK2 ifdefs.
* Fixed compile warning in GTK2 port.
* Added GNOME .desktop file (thanks to Dag Wieers) and a 63x63
desktop icon.
* ggcov handles file:// URLs on the command line so it can be
invoked by dragging files or directories from Nautilus
onto its GNOME desktop icon.
* Default action if no files on commandline (e.g. user double-clicks
the desktop icon) is to show the File->Open dialog and exit if files
are selected (used to be the same as "ggcov .").
* User can load source, objects or directories into ggcov by dragging
and dropping them from Nautilus.
* Added File->Open dialog to allow user to select executables, source
files or directories. Files can be loaded in multiple passes, e.g.
from multiple invocations of the File->Open dialog.
* Added MVC module.
* Class cov_file_t provides an object to be listened to for MVC
notifications of when the global set of files changes.
* All windows are notified of changes to the global files set
by having their populate() method called, which rebuilds the
display from scratch.
* Added support for building RPMs on RedHat 9.
* Support for autoconf 2.57 (RH9).
* Fixed library order bug which broke build on RH9.
* Encode into the RPM filename the name of the Linux distro where built.
* Only one of the two glade files is packaged into the RPM.
* Used %configure in spec file. Required switching from
overloading prefix to DESTDIR in %install stage.
* Added ptrarray_t, a templated wrapper around glib's GPtrArray.
* Converted most uses of GPtrArray to ptrarray_t.
* Reorganised data structures. There is now a per-line class
cov_line_t, an array of which is kept per-file. It contains the list
of blocks for that line as well as caching the calculated count.
* cov_file_t now created on demand for secondary files, e.g. header
files with inline functions.
* Fixed bug which failed an assert if user selected a range of
uninstrumented lines in the Source window and used the Summarise Range
command.
* Fixed bugs with text window line selection in gtk2 port.
* Removed spurious #ifdef which was always disabling the config file.
* Made formatting in Source window a little less dependent on hardcoded
column widths.
* Removed last traces of the screenshot_mode option.
* Fixed bug where Files window's populate() method didn't handle
being called twice.
* Added argv0 so test programs will link.
Fri Jul 11 01:51:32 2003 Greg Banks <[email protected]>
* Release 0.1.8
* Fixed interpretation of relative filenames in .bb files.
* Added assignment operators to class estring.
* Fixed broken compile when libbfd missing.
* When showing or hiding columns in the Source window, preserve
the scroll position instead of flipping back to the start.
Wed Jul 2 22:30:45 2003 Greg Banks <[email protected]>
* Release 0.1.7
* Fixed bug in detection of gcc 2.96 braindamage which spuriously
triggered the error message on gcc 3.3.
* Fixed bug where Source window wrap was disabled for the GTK2 build
even when it didn't need to be.
* Enabled the Source window File->Save As command for gtk2 build, which
also removes some runtime warnings when the Source window is opened.
* Captured the log output for a new GTK2 log domain.
* Simplified log initialisation code.
Wed Jul 2 22:30:45 2003 Greg Banks <[email protected]>
* Release 0.1.6
* Initial support for new gcc 3.3 bbg and da formats.
* Make cov_file_t::read_bbg_function() more robust in the face
of bad data (e.g. the new .bbg file format).
* Added support for moving machine-specific code into subclasses
of abstract generic classes, including a factory class. Moved the
stab32 parsing code into a machine-specific subclass.
* Updated strings to mention ggcov not cant.
* Improved debugging prints.
* Reorganised Makefile to build two archive libraries and link ggcov
and test programs from there, rather than specifying all the source
for every test program.
* Added test program newbbgdump to dump the new gcc 3.3 bbg format.
* Added test program tggcov to write coveraged like gcov, for automated
comparison of basic block accounting.
* Moved the summarise() debug code to cov.C:cov_dump().
* Fixed FMR while parsing arguments in gtk1.2 build.
* Fixed unused variable warning in argument parsing.
* Fixed compile bug in debug message in fileswin.C.
* Fixed bug in declarations of describe() methods in subclasses
of cov_scope_t which only showed up in high debug levels.
* Strip '&' as well as '*' when normalising mangled .bbg names.
Sat Jun 14 00:22:17 2003 Greg Banks <[email protected]>
* Release 0.1.5
* Autoconf detects presence of gtk_text_buffer_select_range() and handles
its absence as gracefully as possible.
* If libpopt is missing, supply our own trivial implementation. This allows
only parse_args() to exist while handling building on systems with gtk2
and no libpopt.
* Fixed a couple of bugs gtk2 in the Source window where selecting items
from the Filename or function menus would SEGV.
Sun Jun 8 16:23:01 2003 Greg Banks <[email protected]>
* Release 0.1.4
* Made ggcov more robust when faced with problems finding or loading
data from object files; emits warning messages and keeps going rather
than failing asserts.
* Recognise file extensions .cc .cxx and .cpp as source code.
* Added a wrapper for the C++ demangling code in libiberty and a
function to normalise mangled names.
* Demangle names from .o files, normalise mangled names from .bb files.
* Ggcov doesn't use the "fake" arc flag from the .bbg data file anymore
but detects call arcs using the arc's destination block. With a
working gcc this makes no difference; with the braindead 2.96 ggcov
can detect most rather than none of the call arcs.
* Ggcov now detects broken data files written by braindead gcc 2.96,
and emits a warning message and skips reading the object file.
* Ggcov will search directories for source files recursively; disabled
by default, enabled with the --recursive/-r option.
* cov_file_t and related objects can be deleted, correctly & efficiently.
Needed for directory scanning to be robust in the presence of source
which isn't compiled, or is compiled but not linked.
* Added hashtable_t templated wrapper for GHashTable, and replaced
all uses of GHashTable with the wrapper.
* Functions window can use a typesafe list now.
* Replaced all uses of the strassign() & strdelete() macros with
class string_var.
* Fileswin uses tok_t tokenizer instead of strtok().
* Added operator to cast estring to const char*.
* Minor de-crufting.
* Created a cov_scope_t class which abstracts the scoped statistics
summary. Moved the overall and range scope code from global functions
into private members of derived classes of cov_scope_t.
* Call Graph window uses scope objects instead of calling calc_stats().
* Added cov_compound_scope_t for aggregating multiple scopes, cached.
* Files window and functions window use scope objects instead of
calling calc_stats() methods and caching the results.
* cov_file_t::calc_stats() and cov_function_t::calc_stats() are now
private; they are only needed by the scope objects, which are friends.
* Fixed bug where double-click in Files List window didn't work.
* Fixed memleak in the Call Graph window.
* Fixed argument parsing code.
* Fixed memleak destroying cov_blocks during recursive source scan.
* Fixed bug in debug output.
* Fixed broken view menu checkboxes in gtk2 build.
* Fixed many bugs with gtk2 port. Most windows now work passably
rather than coredump when first shown.
* Simplified coding of list & tree double-click handlers, also hides
most of the gtk/gtk2 differences.
Sat May 31 17:32:17 2003 Greg Banks <[email protected]>
* Release 0.1.3
* Fixed bug in string_var class which randomly broke data file loading.
* Removed warnings in -DDEBUG build.
Fri May 30 00:56:06 2003 Greg Banks <[email protected]>
* Release 0.1.2
* Added title column buttons to source window, and a View menu item
to hide them.
* Reimplemented Files window's tree mode; now shows accumulated statistics
on directories.
* Added a menu item to the Source window to save the source with the
currently selected annotations.
* All directories mentioned on the commandline are searched for
all .bb .bbg .da and .o files, in the given order and always
starting with the source file's own directory. This gives the
functionality of "gcov -o".
* Rewrote file_make_absolute() to normalise out "." and ".." from
pathnames.
* Removed a stray TAB from a GUI label.
* Centralised the File->Close and File->Exit callbacks in class window_t.
* Added string_var and tok_t classes for string manipulation.
* Portability fixes.
* Minor code cleanups.
Mon Mar 17 14:54:46 2003 Greg Banks <[email protected]>
* Release 0.1.1
* Added a tree mode to Files window, which displays source files
from multiple directories in a tree format.
* When the Call Butterfly window is shown, initialise the hpaned widget
so that both the Calls From and Calls To lists are visible.
* Call Graph window shows whole graph when graph is nontrivial.
Layout algorithm still sucks.
* Hacked around bug with new argument parsing where gtk/gnome options
are not stripped out before ggcov parses the arguments.
* Fixed bug which lost list column header labels on recent gtk 1.2's.
* Fixed bugs where Call Graph window would SEGV or loop when the
coverage data contained function call loops.
Tue Mar 11 13:54:45 2003 Greg Banks <[email protected]>
* Release 0.1
* Compile ggcov with the C++ compiler.
* Converted cov.[ch] to C++, split up into multiple source files.
* Added base class window_t and converted all the GUI windows to be
derived classes of window_t.
* Converted estring to C++.
* Added C++ list_t<> templated wrapper for GList.
* Added list_t::sort().
* Moved ggcov.c:read_gcov_directory() -> cov.c:cov_read_directory().
* In many different places the internals details of how cov_file_t's,
cov_function_t's, and cov_block_t's are related was unnecessarily
exposed. Added cov_file_num_functions(), cov_function_num_blocks();
enforced use of cov_file_nth_function() & cov_function_nth_block().
* Separated cov_callnode_t and cov_callarc_t into their own files
and converted them to C++.
* cov_get_count_by_location() returns a 4-way enum instead of
of a boolean, indicating the coverage status of the line. One
of the enum values indicates partially covered lines, i.e. multiple
blocks appear on the line and not all of them are executed.
* Renamed sourcewin_t::show_file() to show_filename() and added a new
show_file() which takes a cov_file_t. Summarywin and fileswin use
the new function.
* Converted fileswin.C:file_rec_t to C++.
* Provided global operator delete which provides no value except
to shut up valgrind and Purify about mismatched frees.
* C++ compiler noticed that mode_t is unsigned so returning -1 through
it is a bug...so changed return type of file_mode() to int.
* Converted sourcewin.C:sourcewin_hacky_rec_t to C++.
* Removed the global filenames list and replaced with a list of
cov_file_t's iterated by cov_file_t::first().
* Converted functionswin.C:func_rec_t to C++.
* Extended file_change_extension() to allow the old extension to be
specified as NULL which uses any existing extension.
* Uses c99's uint64_t where available.
* Centralised definitions of unsigned 32 & 64 bit ints.
* Provided macros in covio.h for formatting covio_u{32,64}_t.
* Added define COV_COUNT_MAX which is maximum value of a count_t.
* Centralised 64-bit integer printf format strings.
* Partial gtk2 port derived from code contributed by Havoc Pennington.
* GNOME colour pickers disabled for gtk2.
* Canvas-based call graph window disabled for gtk2.
* Config file reading disabled for gtk2.
* Removed useless --glade-path option.
* Added cov_is_source_filename() to test whether a filename matches
the known source file extensions.
* Renamed cov_handle_c_file() -> cov_read_source_file().
* Added cov_read_object_file() which uses the .stab and .stabstr
ELF sections to extract a list of source filenames with full paths.
* Added cov_pre_read() by analogy with cov_post_read(); will be
useful one day.
* Added infrastructure for program preferences, saved and loaded
using gnome_config_*() routines.
* Added preferences dialog to edit preferences.
* Added to prefs foreground and background colours for colour coding
various items according to coverage status.
* Tweaked some default colours for better look.
* Summarywin uses colours from prefs.
* Functionswin colour codes list entries using colours from prefs.
* Fileswin colour codes list entries using colours from prefs.
* Sourcewin uses colours from prefs.
* Callgraph2win uses colours from prefs.
* Added a second Call Graph window which actually has a graphical
presentation rather than navigable distribution to callers/callees.
New window present calls as nodes in a call graph, with function
name, filename, and coverage show textually in the node. Nodes
are colour coded red, yellow or green according to the function's
line coverage. Nodes with no instrumented source lines are grey.
Arcs are colour coded according to arc coverage. Layout is fixed
and very primitive.
* Changed the Windows menu names of the two call graph windows
to be more indicative and less ambiguous: callgraphwin announces
itself as "Call Butterfly" and callgraph2win as "Call Graph".
* Attempted to improve the call graph window layout algorithm.
* Callgraphwin list frame labels are easier to understand, e.g.
"Called from" instead of "Distribution to Ancestors".
* Sourcewin's block column collapses runs of consecutive blocks into
a range, e.g. "3-6" instead of "3,4,5,6". Avoids a lot of column
overflow.
* Split Function combo box into From Function and To Function boxes,
both of which have an "All Functions" wildcard item which is the
default.
* Reorganised columns in Calls window, now has From To Line Arc Count.
* Moved list of filenames and functions in source window from menubar
to a new toolbar.
* Added View->Toolbar to the source window to control whether the toolbar
is visible (visible by default).
* Added to prefs a boolean controlling whether a new source window is
popped up every time or an old one is reused.
* Added preference to reuse the summary window.
* Added concept of minimal file names, where only the minimal
unique suffix of a filename is displayed to the user.
* Double-clicking on a row in the Calls list shows the `from' source line.
* Visual improvements to the About window.
* Added View menu to Calls window with a check menu item for each
column. Arc column is off by default.
* Added icon for all toplevel windows derived from logo.xpm.
* Added ui.c infrastructure for app to select a default icon.
* Added infrastructure to debug GTK/Glib log messages.
* Added to source window menu items to summarise the source file,
the selected function, or the selected source lines.
* window_t::show() will also raise a window.
* Reduce unnecessary processing on windows that are reused by only
calling populate() the first time a window is shown.
* Added default definitions of _ and N_ in preparation for gettext.
* Dealt with stupid gnome header files redefining _ and N_.
* Made cov_function_t::name() const like it always should have been.
* Adding version.m4 for the website.
* Used aclocal.m4 the way it was intended.
* Install & distribute the logo pixmap.
* Removed autoconf stuff from .spec file setup section.
* For gcc, add a bunch of warning options to $CFLAGS.
* Added bbdump program to help debug .bb file problems.
* Ignored a couple more generated files.
* The .cvsignore and .gdbinit files are distributed.
* Various minor configure.in/Makefile.am updates from Havoc Pennington.
* Fixed bug which SEGVd when double-clicking on a function in the
functions window which has no executable lines.
* Fixed buffer overrun bug in sourcewin due to my misunderstanding
the return value of snprintf().
* Fixed bug which incorrectly assumed that the last function listed in
the coverage data file would contain the last source line in its source
file. Now keep an explicit last location variable.
* Fixed bug found by valgrind where selecting the last line of
a source window overran the offsets_by_line_ array.
* Fixed bug where sourcewin_t::show_lines() didn't show the window.
* Worked around a bug where cov_arc_get_from_location()
sometimes returned 0 unexpectedly.
* Removed superfluous include of estring.h
* Added estring_replace_all() instead of the poorly implemented
attempt in ui.c.
* Fixed minor warnings.
* Made some debugging prints appear less frequently.
* Removed some asserts from list_t dtor, valgrind is a better
debugging tool.
Mon Dec 3 12:07:12 2001 Greg Banks <[email protected]>
* Release 0.0.7.
* Builds a callgraph from the information read from various files,
including calls to functions not covered (like printf).
* Added a window to explore the call graph. Shows distribution to
callers and callees in clists; double-clicking navigates to the
new function.
* Added a Calls window which shows the call coverage per-call
for a given function.
* Ggcov uses the BFD library to read object files, using relocs,
contents and symbols for text sections to figure out names
for function call arcs in the block graph.
* Added option to Source window to show block numbers.
* Added ulcmp() and ullcmp() to help sorting on unsigned longs
and unsigned long longs respectively.
* Renamed xmalloc() -> gnb_xmalloc() to avoid possible clash
with function of same name in -liberty.
* Added ui_combo_set_current_data().
* Added listclear() macro which deletes GList structures like listdelete()
but does not call any dtor.
* Fixed a few minor problems with debugging prints and warnings.
Fri Nov 30 12:26:55 2001 Greg Banks <[email protected]>
* Release 0.0.6
* Added a Files List window analagous to the Function List window.
* Added fixed Windows menu items to create new Summary, Source, File
List and Function List windows.
* Initial window population is now just an overall summary.
* Sortable column support now handles the case where not every column
is sortable (backport from ggui).
* Added a TODO list of some ideas.
Tue Nov 27 11:53:14 2001 Greg Banks <[email protected]>
* Release 0.0.5
* Added progress bars to show test coverage stats in the Summary window.
* Progress bars display red/green to color code coverage stats.
Had to subclass from GtkProgressBar to achieve this.
* Added a Functions List window to show all the functions in all
the files, with line call and branch coverage results. Clicking
on columns sorts the list by that column. Double-clicking on
rows shows the source for that function.
* Added support for having an up or down arrow in the current sort
column of a clist. Clicking on the columns does the expected
thing with sorting.
Sun Nov 25 19:44:38 2001 Greg Banks <[email protected]>
* Release 0.0.4
* Added GUI to show summary of coverage statistics at
overall, file, function, and range scope.
* Various small GUI improvments.
Sat Nov 24 01:34:43 2001 Greg Banks <[email protected]>
* Release 0.0.3
* Added GUI to browse source annotated with line execution
counts (only).
* Built RPM.
Fri Nov 23 15:41:28 2001 Greg Banks <[email protected]>
* Release 0.0.2
* Split source code up from one big .c file.
* First check into CVS.
Thu Nov 22 17:39:15 2001 Greg Banks <[email protected]>
* Release 0.0.1
* Reads .bb, .bbg, and .da files to construct data structures
* Annotates C files with line counts, identical results to gcov.