Version 1.7:
============

gendesc:
- Updated error and warning messages
- Updated man page

genhtml:
- Added function coverage data display patch by tomzo@nefkom.net (default is on)
- Added --function-coverage to enable function coverage display
- Added --no-function-coverage to disable function coverage display
- Added sorting option in HTLM output (default is on)
- Added --sort to enable sorting
- Added --no-sort to disable sorting
- Added --html-gzip to create gzip-compressed HTML output (patch by
  dnozay@vmware.com)
- Fixed problem when using --baseline-file on coverage data files that
  contain data for files not found in the baseline file
- Updated error and warning messages
- Updated man page

geninfo:
- Added function coverage data collection patch by tomzo@nefkom.net
- Added more verbose output when a "ERROR: reading string" error occurs
  (patch by scott.heavner@philips.com)
- Fixed geninfo not working with directory names containing spaces (reported
  by jeffconnelly@users.sourceforge.net)
- Fixed "ERROR: reading string" problem with gcc 4.1
- Fixed problem with function names that contain non-alphanumerical characters
- Fixed problem with gcc versions before 3.3
- Updated error and warning messages
- Updated man page

genpng:
- Updated error and warning messages
- Updated man page

lcov:
- Added support for function coverage data for adding/diffing tracefiles
- Added --no-recursion option to disable recursion into sub-directories
  while scanning for gcov data files
- Fixed lcov -z not working with directory names containing spaces (reported
  by Jeff Connelly)
- Updated error and warning messages
- Updated man page

lcov.spec:
- Updated of description and title information

lcovrc:
- Added genhtml_function_hi_limit
- Added genhtml_function_med_limit
- Added genhtml_function_coverage
- Added genhtml_sort
- Updated man page

Makefile:
- Updated info text


Version 1.6:
============

geninfo:
- Added libtool compatibility patch by thomas@apestaart.org (default is on)
- Added --compat-libtool option to enable libtool compatibility mode
- Added --no-compat-libtool option to disable libtool compatibility mode
- Changed default for line checksumming to off
- Added --checksum option to enable line checksumming
- Added --gcov-tool option
- Added --ignore-errors option
- Added --initial option to generate zero coverage from graph files
- Removed automatic test name modification on s390
- Added --checksum option
- Updated man page

lcov:
- Added libtool compatibility patch by thomas@apestaart.org
- Added --compat-libtool option to enable libtool compatibility mode
- Added --no-compat-libtool option to disable libtool compatibility mode
- Added --checksum option to enable line checksumming
- Added --gcov-tool option
- Added --ignore-errors option
- Added --initial option to generate zero coverage from graph files
- Updated help text
- Updated man page
- Fixed lcov not working when -k is specified more than once
- Fixed lcov not deleting .gcda files when specifiying -z and -d

lcovrc:
- Added geninfo_compat_libtool option
- Added geninfo_checksum option
- Removed geninfo_no_checksum option from example lcovrc
- Updated man page

README:
- Added description of lcovrc file


Version 1.5:
============

genhtml:
- Added check for invalid characters in test names
- Added --legend option
- Added --html-prolog option
- Added --html-epilog option
- Added --html-extension option
- Added warning when specifying --no-prefix and --prefix
- Reworked help text to make it more readable

geninfo:
- Renamed 'sles9' compatibility mode to 'hammer' compatibility mode
- Added support for mandrake gcc 3.3.2
- Fixed bbg file reading in hammer compatibility mode
- Added check for invalid characters in test names
- Added --base-directory option

lcov:
- Added check for invalid characters in test names
- Added --base-directory option


Version 1.4:
============

All:
- Added configuration file support

genhtml:
- Fixed help text message
- Fixed handling of special characters in file- and directory names
- Added description of --css-file option to man page

geninfo:
- Added support for GCOV file format as used by GCC 3.3.3 on SUSE SLES9
- Fixed error text message
- Added check to abort processing if no source code file is available
- Added workaround for a problem where geninfo could not find source code
  files for a C++ project
- Fixed 'branch'-statement parsing for GCC>=3.3 .gcov files
- Fixed exec count-statement parsing for GCC>=3.3 .gcov files
- Fixed .gcno-file parser (some lines were not counted as being instrumented)

lcov:
- Modified path for temporary files from '.' to '/tmp'
- Fixed comments
- Removed unused function 'escape_shell'

lcovrc:
- Introduced sample configuration file

Makefile:
- Added rule to install configuration file
- Fixed installation path for man pages


Version 1.3:
============

All:
- Added compatibility for gcc-3.4

lcov:
- Modified --diff function to better cope with ambiguous entries in patch files
- Modified --capture option to use modprobe before insmod (needed for 2.6)
- Added --path option required for --diff function


Version 1.2:
============

All:
- Added compatibility for gcc-3.3
- Adjusted LCOV-URL (http://ltp.sourceforge.net/coverage/lcov.php)
- Minor changes to whitespaces/line breaks/spelling
- Modified call mechanism so that parameters for external commands are not
  parsed by the shell mechanism anymore (no more problems with special
  characters in paths/filenames)
- Added checksumming mechanism: each tracefile now contains a checksum for
  each instrumented line to detect incompatible data

Makefile:
- Added rule to build source RPM
- Changed install path for executables (/usr/local/bin -> /usr/bin)

lcov.spec:
- Modified to support building source rpms

updateversion.pl:
- Modified to include update of release number in spec file

genhtml:
- Fixed bug which would not correctly associate data sets with an empty
  test name (only necessary when using --show-details in genhtml)
- Implemented new command line option '--nochecksum' to suppress generation
  of checksums
- Implemented new command line option '--highlight' which highlights lines of
  code which were only covered in converted tracefiles (see '--diff' option of
  lcov)

geninfo:
- Added workaround for a bug in gcov shipped with gcc-3.2 which aborts when
  encountering empty .da files
- Fixed geninfo so that it does not abort after encountering empty .bb files
- Added function to collect branch coverage data
- Added check for gcov tool
- Added check for the '--preserve-paths' option of gcov; if available, this
  will prevent losing .gcov files in some special cases (include files with
  same name in different subdirectories)
- Implemented new command line option '--follow' to control whether or not 
  links should be followed while searching for .da files.
- Implemented new command line option '--nochecksum' to suppress generation
  of checksums

lcov:
- Fixed bug which would not correctly associate data sets with an empty
  test name (only necessary when using --show-details in genhtml)
- Cleaned up internal command line option check
- Files are now processed in alphabetical order
- Added message when reading tracefiles
- Implemented new command line option '--nochecksum' to suppress generation
  of checksums
- Implemented new command line option '--diff' which allows converting
  coverage data from an older source code version by using a diff file
  to map line numbers
- Implemented new command line option '--follow' to control whether or not 
  links should be followed while searching for .da files.

genpng:
- Added support for the highlighting option of genhtml
- Corrected tab to spaces conversion
- Modified genpng to take number of spaces to use in place of tab as input
  instead of replacement string
  

Version 1.1:
============

- Added CHANGES file
- Added Makefile implementing the following targets:
  * install    : install LCOV scripts and man pages
  * uninstall  : revert previous installation
  * dist       : create lcov.tar.gz file and lcov.rpm file
  * clean      : clean up example directory, remove .tar and .rpm files
- Added man pages for all scripts
- Added example program to demonstrate the use of LCOV with a userspace
  application
- Implemented RPM build process
- New directory structure:
  * bin        : contains all executables
  * example    : contains a userspace example for LCOV
  * man        : contains man pages
  * rpm        : contains files required for the RPM build process
- LCOV-scripts are now in bin/
- Removed .pl-extension from LCOV-script files
- Renamed readme.txt to README

README:
- Adjusted mailing list address to ltp-coverage@lists.sourceforge.net
- Fixed incorrect parameter '--output-filename' in example LCOV call
- Removed tool descriptions and turned them into man pages
- Installation instructions now refer to RPM and tarball

descriptions.tests:
- Fixed some spelling errors

genhtml:
- Fixed bug which resulted in an error when trying to combine .info files
  containing data without a test name
- Fixed bug which would not correctly handle data files in directories
  with names containing some special characters ('+', etc.)
- Added check for empty tracefiles to prevent division-by-zeros
- Implemented new command line option --num-spaces / the number of spaces
  which replace a tab in source code view is now user defined
- Fixed tab expansion so that in source code view, a tab doesn't produce a
  fixed number of spaces, but as many spaces as are needed to advance to the
  next tab position
- Output directory is now created if it doesn't exist
- Renamed "overview page" to "directory view page"
- HTML output pages are now titled "LCOV" instead of "GCOV"
- Information messages are now printed to STDERR instead of STDOUT

geninfo:
- Fixed bug which would not allow .info files to be generated in directories
  with names containing some special characters
- Information messages are now printed to STDERR instead of STDOUT

lcov:
- Fixed bug which would cause lcov to fail when the tool is installed in
  a path with a name containing some special characters
- Implemented new command line option '--add-tracefile' which allows the
  combination of data from several tracefiles
- Implemented new command line option '--list' which lists the contents
  of a tracefile
- Implemented new command line option '--extract' which allows extracting
  data for a particular set of files from a tracefile
- Implemented new command line option '--remove' which allows removing
  data for a particular set of files from a tracefile
- Renamed '--reset' to '--zerocounters' to avoid a naming ambiguity with
  '--remove'
- Changed name of gcov kernel directory from /proc/gcov to a global constant
  so that it may be changed easily when required in future versions
- Information messages are now printed to STDERR instead of STDOUT


Version 1.0 (2002-09-05):
=========================

- Initial version

