Version 1.10
============

All:
- Disabled branch coverage processing per default to improve processing
  performance (can be re-enabled using a config file setting)
- Added option --rc to override config file settings from the command line
- Added option --config-file to override the config file location
- Fixed handling of '<' in filenames

genhtml:
- Added option --ignore-errors to continue after errors
- Added man page note to further explain branch coverage output
- Fixed man page description of default coverage rates
- Fixed HTML page title for directory pages
- Fixed handling of special characters in file and directory names
- Fixed directory prefix calculation
- Fixed warning when source files are found in root directory

geninfo:
- Added options --external and --no-external to include/exclude external
  source files such as standard libary headers
- Added option --compat to specify compatibility modes
- Added missing man page sections for --derive-func-data and --no-markers
- Added support for MinGW output on MSYS. From martin.hopfeld@sse-erfurt.de
- Added support for gcc 4.7 .gcno file format.  Based on patch by
  berrange@redhat.com
- Added auto-detection of gcc-4.7 function record format. Includes
  suggestions by garnold@google.com
- Fixed exclusion markers for --derive-func-data.  Reported by bettse@gmail.com
- Fixed processing of pre-3.3 gcov files. Reported by georgysebastian@gmail.com
- Fixed handling of '<built-in>.gcov' files
- Fixed warning about unhandled .gcov files
- Improved --debug output
- Removed help text for obsolete parameter --function-coverage

genpng:
- Fixed handling of empty source files. Reported by: sylvestre@debian.org

lcov:
- Added options --external and --no-external to include/exclude external source
  files such as standard libary headers
- Added option --summary to show summary coverage information
- Added option --compat to specify compatibility modes
- Fixed missing Perl version dependency in RPM spec file. Reported by
  Martin Hopfeld <martin.hopfeld@sse-erfurt.de>
- Fixed geninfo not recognizing Objective-C functions. Based on patch
  by abrahamh@web.de
- Fixed option --no-recursion not being passed to geninfo
- Fixed capitalization of the term 'Perl'
- Improved coverage rate calculation to only show 0%/100% when no/full coverage
  is achieved.  Based on suggestions by Paul.Zimmermann@loria.fr and
  vincent@vinc17.net

lcovrc:
- Added description for geninfo_compat setting
- Added config file setting 'genhtml_charset' to specify HTML charset
- Added config file setting 'geninfo_external' to include/exclude external
  source files such as standard libary headers
- Added config file setting 'geninfo_gcov_all_blocks' to modify lcov's use
  of gcov's -a option
- Added config file setting 'geninfo_compat' to specify compatibility modes
- Added config file setting 'geninfo_adjust_src_path' to enabled source path
  adjustments.  Inspired by patch by ammon.riley@gmail.com
- Added config file setting 'geninfo_auto_base' to automatically determine
  the base directory when collecting coverage data
- Added config file setting 'lcov_function_coverage' to enable/disable
  function coverage processing
- Added config file setting 'lcov_branch_coverage' to enable/disable
  branch coverage processing


Version 1.9
===========

genhtml:
- Improved wording for branch representation tooltip text
- Fixed vertical alignment of HTML branch representation

geninfo:
- Improved warning message about --initial not generating branch coverage data
- Debugging messages are now printed to STDERR instead of STDOUT
- Fixed problem with some .gcno files. Reported by gui@futarque.com.
  (file.gcno: reached unexpected end of file)
- Fixed problem with relative build paths. Reported by zhanbiao2000@gmail.com.
  (cannot find an entry for ^#src#test.c.gcov in .gcno file, skipping file!)
- Fixed problem where coverage data is missing for some files. Reported by
  weston_schmidt@open-roadster.com
- Fixed problem where exclusion markers are ignored when gathering
  initial coverage data. Reported by ahmed_osman@mentor.com.
- Fixed large execution counts showing as negative numbers in HTML output.
  Reported by kkyriako@yahoo.com.
- Fixed problem that incorrectly associated branches outside of a block with
  branches inside the first block

lcov:
- Fixed problem that made lcov ignore --kernel-directory parameters when
  specifying --initial. Reported by hjia@redhat.com.
- Added --list-full-path option to prevent lcov from truncating paths in list
  output
- Added lcov_list_width and lcov_list_truncate_max directives to the
  lcov configuration file to allow for list output customization
- Improved list output

COPYING:
- Added license text to better comply with GPL recommendations


Version 1.8
===========

gendesc:
- Fixed problem with single word descriptions

genhtml:
- Added support for branch coverage measurements
- Added --demangle-cpp option to convert C++ function names to human readable
  format. Based on a patch by slava.semushin@gmail.com.
- Improved color legend: legend display takes up less space in HTML output
- Improved coverage rate limits: all coverage types use the same limits
  unless specified otherwise
- Fixed CRLF line breaks in source code when generating html output. Based
  on patch by michael.knigge@set-software.de.
- Fixed warning when $HOME is not set
- Fixed problem with --baseline-file option. Reported by sixarm@gmail.com.
  (Undefined subroutine &main::add_fnccounts called at genhtml line 4560.)
- Fixed problem with --baseline-file option and files without function
  coverage data (Can't use an undefined value as a HASH reference at genhtml
  line 4441.)
- Fixed short-name option ambiguities
- Fixed --highlight option not showing line data from converted test data
- Fixed warnings about undefined value used. Reported by nikita@zhuk.fi.
- Fixed error when processing tracefiles without function data. Reported
  by richard.corden@gmail.com (Can't use an undefined value as a HASH
  reference at genhtml line 1506.)

geninfo:
- Added support for branch coverage measurements
- Added support for exclusion markers: Users can exclude lines of code from
  coverage reports by adding keywords to the source code.
- Added --derive-func-data option
- Added --debug option to better debug problems with graph files
- Fixed CRLF line breaks in source code when generating tracefiles. Based on
  patch by michael.knigge@set-software.de.
- Fixed problems with unnamed source files
- Fixed warning when $HOME is not set. Reported by acalando@free.fr.
- Fixed errors when processing unnamed source files
- Fixed help text typo
- Fixed errors when processing incomplete function names in .bb files
- Fixed filename prefix detection
- Fixed problem with matching filename
- Fixed problem when LANG is set to non-english locale. Reported by
  benoit_belbezet@yahoo.fr.
- Fixed short-name option ambiguities

genpng:
- Fixed runtime-warning

lcov:
- Added support for branch coverage measurements
- Added support for the linux-2.6.31 upstream gcov kernel support
- Added --from-package and --to-package options
- Added --derive-func-data option
- Added overall coverage result output for more operations
- Improved output of lcov --list
- Improved gcov-kernel handling
- Fixed minor problem with --diff
- Fixed double-counting of function data
- Fixed warning when $HOME is not set. Reported by acalando@free.fr.
- Fixed error when combining tracefiles without function data. Reported by
  richard.corden@gmail.com. (Can't use an undefined value as a HASH reference
  at lcov line 1341.)
- Fixed help text typo
- Fixed filename prefix detection
- Fixed lcov ignoring information about converted test data

README: 
- Added note to mention required -lgcov switch during linking

 
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 specifying -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

