]> sourceware.org Git - libabigail.git/commitdiff
Added a ChangeLog that is auto-generated by gen-changelog.py
authorDodji Seketeli <dodji@redhat.com>
Tue, 18 Nov 2014 22:05:06 +0000 (23:05 +0100)
committerDodji Seketeli <dodji@redhat.com>
Tue, 18 Nov 2014 22:18:06 +0000 (23:18 +0100)
* ChangeLog: Add this auto-generated file.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
ChangeLog [new file with mode: 0644]

diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..1be7cf7
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,10245 @@
+2014-11-18  Dodji Seketeli <dodji@redhat.com>
+
+       Allow introductory text in commit log and ignore it when generating ChangeLog
+       * gen-changelog.py (process_commit): Everything that comes between
+       the subject line of the commit and the first \t* sequence is
+       considered to be introductory text.  Ignore it when generating the
+       ChangeLog entry.
+       * COMMIT-LOG-GUIDELINES: Update the commit log guidelines to
+       reflect the fact that we can now have introductory text in the
+       commit log.
+
+2014-11-18  Dodji Seketeli <dodji@redhat.com>
+
+       Initial import of gen-changelog.py
+       * gen-changelog.py: Copy from
+       https://github.com/GNOME/gnet/blob/master/gen-changelog.py.
+       License it under LGPLV v2+ after asking Edward Hervey's kind
+       permission.  Ain't Free Software really great?
+
+2014-11-10  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup of the web page
+       * doc/website/libabigail-website.doxy: Remove the redundant
+       information that was appearing on the web page.
+       * doc/website/mainpage.txt: Clean-up the text of the web page, add
+       information for the new IRC channel #libabigail on oftc.net,
+       re-organize the content by putting sections where we had
+       paragraphs.  Add a table of content.  Also add a web form to
+       subscribe/unsubscribe to the mailing list.
+
+2014-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Sort functions by the their qualified name
+       * src/abg-comparison.cc (function_comp::operator()): Sort the
+       functions by only looking at their qualified name, as opposed to
+       their return type name.
+
+2014-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Remove too tight assert from de-mangling code
+       * src/abg-ir.cc (demangle_cplus_mangled_name):  The return length
+       can be zero.  That means, no de-mangling was done.
+
+2014-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Sort reported changed declarations & types in a given scope
+       * src/abg-comparison.cc (struct changed_type_or_decl_comp, struct
+       changed_vars_comp): New comparison functors.
+       (sort_changed_type_or_decl, sort_changed_vars): New static
+       functions.
+       (scope_diff::report): Use the above to sort changed declarations,
+       and types in a given scope.
+       (corpus_diff::report): Likewise for the changed variables.
+       * tests/data/test-abidiff/test-struct1-report.txt: Adjust.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
+       Likewise.
+
+2014-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Sort elf symbols before serializing them
+       * include/abg-corpus.h (corpus::{get_sorted_fun_symbols,
+       get_sorted_var_symbols}): Declare new member functions.
+       * src/abg-corpus.cc (corpus_priv::{sorted_var_symbols,
+       sorted_fun_symbols}): New data members.
+       (struct elf_symbol_comp_functor): Define new comparison functor.
+       (corpus::{get_sorted_fun_symbols, get_sorted_var_symbols}): Define
+       new member functions.
+       * src/abg-writer.cc (write_elf_symbols_table): Take a sorted
+       vector of symbols in parameters, rather than an unsorted map.
+       (write_corpus_to_native_xml): Write a sorted vector of symbols,
+       rather than an unsorted map of symbols.
+       * tests/data/test-read-dwarf/test0.abi: Adjust.
+       * tests/data/test-read-dwarf/test1.abi: Likewise.
+       * tests/data/test-read-dwarf/test2.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test3.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test6.so.abi: Likewise.
+
+2014-11-07  Dodji Seketeli <dodji@redhat.com>
+
+       Fix template parameter hashing: make it know about enclosing template
+       * include/abg-ir.h (template_parameter_sptr, template_decl_sptr)
+       (template_decl_wptr): Declare new typedefs.
+       (class template_decl): Make this virtually inherit decl_base and
+       pimpl-ify it.
+       (class template_parameter): Pimpl-ify this.  Make the constructor
+       take the enclosing template parameter.
+       (struct template_decl::hash): Declare this here, rather than in
+       src/abg-hash.cc
+       (class type_tparameter, non_type_tparameter, template_tparameter)
+       (class type_composition, function_tdecl, class_tdecl): Pimpl-ify
+       this.
+       * src/abg-hash.cc (template_parameter::hash::operator()): Hash the
+       enclosing template parameter.  Avoid infinite recursion due to the
+       loop hash parameter -> hash template -> hash parameter.
+       (template_decl::hash::operator()) Define this here, now that it's
+       declared in abg-ir.h.  Also, avoid infinite recursion here; this
+       is complementary to what is done in the hashing for
+       template_parameter.
+       ({type_tparameter, template_tparameter, }::hash::operator()):
+       Cache the calculated hash just as what is done for other types
+       hashed.
+       (template_decl::priv): Define this new type.
+       (template_decl::{add_template_parameter, get_template_parameters,
+       ~template_decl}): Define these here to pimpl-ify template_decl.
+       (template_parameter::priv): Define this new type.
+       (template_parameter::template_parameter): Define this here to
+       pimpl-ify template_parameter.  Note also that this now takes the
+       enclosing template decl.
+       (template_parameter::{get_index, get_enclosing_template_decl,
+       get_hashing_has_started, set_hashing_has_started, operator::==}):
+       Define these here to pimpl-ify template_parameter.
+       (type_tparameter::priv): Define this new type.
+       (type_tparameter::type_tparameter): Define this here to pimpl-ify
+       type_tparameter.   Also, not that this constructor now takes the
+       enclosing template decl.
+       (class non_type_tparameter::priv): Define new type.
+       (non_type_tparameter::{non_type_tparameter, get_type}): Define
+       these here to pimpl-ify non_type_tparameter.  The constructor now
+       takes the enclosing template.
+       (template_tparameter::priv): Define new type.
+       (template_tparameter::template_tparameter): Define this here to
+       pimpl-ify template_tparameter.  This constructor now takes the
+       enclosing template.
+       (class type_composition::priv): New type.
+       (type_composition::{type_composition, get_composed_type,
+       set_composed_type}): Define these here to pimpl-ify
+       type_composition.  The constructor now takes the enclosing
+       template decl.
+       (class function_tdecl::priv): Define new type.
+       (function_tdecl::{function_tdecl, set_pattern, get_pattern,
+       get_binding}): Define this here to pimpl-ify function_tdecl.
+       (class class_tdecl::priv): Define this new type.
+       (class_tdecl::class_tdecl): Define this here to pimpl-ify
+       class_tdecl.
+       (class_tdecl::set_pattern): Adjust to pimpl-ify.
+       (class_tdecl::get_pattern): Define new pimpl-ified getter.
+       * src/abg-reader.cc (build_function_tdecl, build_class_tdecl):
+       Cleanup.  Pass the enclosing template to the template parameters
+       that are built.
+       (build_type_tparameter, build_type_composition)
+       (build_non_type_tparameter, build_template_tparameter)
+       (build_template_parameter): Take the enclosing template
+       declaration and pass it to the template parameter being created.
+       * tests/data/test-read-write/test12.xml: Fix and Adjust.
+       * tests/data/test-read-write/test13.xml: Likewise.
+
+2014-11-06  Dodji Seketeli <dodji@redhat.com>
+
+       Style fix
+       * include/abg-ir.h (class location): Remove useless white space.
+       * src/abg-writer.cc (type_has_existing_id): Use type_base_sptr
+       rather than shared_ptr<type_base>.
+       (write_template_tparameter): Use template_tparameter_sptr rather
+       than shared_ptr<template_tparameter>.
+
+2014-11-05  Dodji Seketeli <dodji@redhat.com>
+
+       Pass -std=gnu++11 to the compiler when --enable-cxx11 for tests
+       * tests/Makefile.am: Pass -std=gnu++11 to the compiler when
+       --enable-cxx11 has been used.
+
+2014-11-05  Dodji Seketeli <dodji@redhat.com>
+
+       Make the use of a C++-11 compiler optional
+       * configure.ac: Define a new --enable-cxx11 switch to control the
+       use of the C++-11 compiler.  Define a WITH_CXX11 C macro and an
+       automake ENABLE_CXX11 variable.
+       * config.h.in: Initialize the new WITH_CXX11 C macro.
+       * src/Makefile.am: Include the files coded in C++-11 only if the
+       ENABLE_CXX11 automake variable is defined.
+       * tests/Makefile.am: Likewise, build the runtestsvg test program
+       only if C++-11 usage is enabled.
+       * include/abg-diff-utils.h (class d_path_vec): Remove useless
+       usage of the 'typename' keyword.
+       * include/abg-fwd.h (is_enum_type): Renamed is_enum into this,
+       because of a name clash with a tr1 function when not using C++-11.
+       (is_pointer_type): Likewise, renamed is_pointer into this because
+       of a name clash with a tr1 function when not using C++-11.
+       * src/abg-comp-filter.cc (has_harmless_name_change): Adjust for
+       the is_enum -> is_enum_type change.
+       * src/abg-comparison.cc (type_suppression::suppresses_diff):
+       Likewise.
+       (class function_suppression::priv): Add a missing "class" keyword
+       in friend declaration.
+       (diff_context::diff_has_been_traversed)
+       (diff_context::mark_diff_as_traversed): Do not use the C++-11
+       specific type uintptr_t.
+       * src/abg-dwarf-reader.cc (create_default_dwfl): Do not use
+       designated initializers.  Sigh.  This is handy though.
+       (expr_result::abs): Cast the argument of std::abs to avoid
+       ambiguous call.
+       (finish_member_function_reading): Adjust for the is_pointer ->
+       is_pointer_type renaming.
+       * src/abg-hash.cc (scope_decl::hash::operator)
+       (class_decl::base_spec::hash::operator)
+       (type_composition::hash::operator): Use std::tr1::hash string,
+       rather than the C++-11 specific std::hash function.
+       * src/abg-ini.cc (read_sections, write_sections): Make
+       std::ifstream constructor take a const char* rather than a string.
+       * src/abg-ir.cc (is_enum_type, is_pointer_type): Renamed is_enum
+       into is_enum_type and is_pointer into is_pointer_type.
+       * src/abg-writer.cc (write_translation_unit): Remove useless
+       typename keyword.  Make ofstream take a const char* rather than a
+       string.
+       (write_namespace_decl): Remove useless typename keyword.
+       (write_corpus_to_native_xml_file): Make ofstream take a const
+       char* rather than a string.
+       * tests/test-abidiff.cc (main): Make ofstream take a const char*
+       rather than a string.
+       * tests/test-diff-dwarf.cc (main): Likewise.
+
+2014-11-05  Dodji Seketeli <dodji@seketeli.org>
+
+       Remove some m4 auto-generated files from version control
+       * m4/ltoptions.m4: Remove from version control.
+       * m4/ltversion.m4: Remove from version control.
+       * m4/lt~obsolete.m4: Remove from version control.
+
+2014-11-03  Dodji Seketeli <dodji@redhat.com>
+
+       Add usage examples to the abidiff manual
+       * doc/manuals/abidiff.rst: Add a usage example section along with
+       some small and clean examples.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix the API doc string of the abigail::xml_writer namespace
+       * src/abg-writer.cc: Fix the API doc of the xml_writer namespace.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix an apidoc typo
+       * include/abg-comparison.h (class variable_suppression): Fix a
+       typo in the doc string.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Update the manual for variable suppression concepts
+       * doc/manuals/libabigail-concepts.rst: Add a section for variable
+       suppression specification in the concepts part of the manual.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some restructured text doc glitches in the fn suppression manual
+       * doc/manuals/libabigail-concepts.rst: Fix quoting of the syntax
+       of parameter specification string, for the function suppression
+       concepts.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup the mainpage of the API doc
+       * include/abg-fwd.h: Cleanup text of the API doc mainpage.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Make get_binary_load_address static
+       * src/abg-dwarf-reader.cc (get_binary_load_address): Make this
+       function static.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for variable suppressions
+       * include/abg-comparison.h (variable_suppression_sptr)
+       (variable_suppressions_type): New convenience typedefs.
+       (class variable_suppression): Declare new type.
+       * src/abg-comparison.cc (is_var_diff): New predicate.
+       (read_variable_suppression): Define new static function.
+       (class variable_suppression::priv): Define type for the private
+       data of the variable_suppression type.
+       (variable_suppression::{variable_suppression,
+       ~variable_suppression, get_name, set_name, get_name_regex_str,
+       set_name_regex_str, get_symbol_name, set_symbol_name,
+       get_symbol_name_regex_str, set_symbol_name_regex_str,
+       get_symbol_version, set_symbol_version,
+       get_symbol_version_regex_str, set_symbol_version_regex_str,
+       get_type_name, set_type_name, get_type_name_regex_str,
+       set_type_name_regex_str, suppresses_diff}): Define new member
+       functions for the variable_suppression type.
+       * tests/data/test-diff-suppr/libtest7-var-suppr-v0.so: Add new
+       test input.
+       * tests/data/test-diff-suppr/libtest7-var-suppr-v1.so: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-1.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-2.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-3.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-4.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-5.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-6.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-7.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-8.suppr: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-version-script: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-v0.cc: Source code
+       for the librairie above.
+       * tests/data/test-diff-suppr/test7-var-suppr-v1.cc: Source code
+       for the librairie above.
+       * tests/Makefile.am: Add the new test input data to the source
+       distribution.
+       * tests/test-diff-suppr.cc: Update to make this harness to run
+       over the new test input above.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Update the suppr-doc.txt file for variable suppressions
+       * doc/suppr-doc.txt: Add the suppress_variable section example.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Make var_diff and function_decl_diff extend decl_diff_base
+       * include/abg-comparison.h (class var_diff, class
+       function_decl_diff): Make these types inherit the decl_diff_base
+       class.  This is like the fact that all kinds of diff inherit the
+       type_diff_base class.
+       * src/abg-comparison.cc (var_diff::var_diff)
+       (function_decl_diff::function_decl_diff): Adjust to initialize the
+       sub-object of decl_diff_base;
+       (is_decl_diff): New predicate to know if a diff is about decls.
+       (is_function_decl): New predicate to know if a diff is about
+       function decls.
+       (function_suppression::suppresses_diff): Adjust to use the new
+       is_function_decl.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix logic of type suppression evaluation
+       * include/abg-comparison.cc (type_suppression::suppresses_diff):
+       Try to evaluate the "type_name_regexp" property only if the
+       "type_name" is empty.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless functions from the comparison engine
+       * include/abg-comparison.h (read_type_suppression): Remove this
+       function declaration.
+       * src/abg-comparison.cc (read_type_suppressions): Remove this
+       static function definition.
+       (read_function_suppressions): Remove this static function
+       declaration.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Spit and polish variables presentation in diff report
+       * src/abg-comparison.cc (corpus_diff::report): Show the full
+       representation of the variable, rather than just its name.  Also,
+       show the new representation of the variable only if it has
+       changed.
+       * tests/data/test-diff-dwarf/test9-report.txt: Adjust test.
+       * tests/data/test-diff-filter/test15-0-report.txt: Likewise.
+       * tests/data/test-diff-filter/test15-1-report.txt: Likewise.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix various apidoc typos
+       * include/abg-comparison.h (class function_suppression): Fix typo
+       in the doc string.
+       * src/abg-comparison.cc (is_type_diff, read_suppressions)
+       (diff::reported_once, typedef_diff::report): Fix the doc string.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix regexp escaping section of manual
+       * doc/manuals/libabigail-concepts.rst: Re-indent and fix some
+       typos in the regexp escaping section of the manual.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Doxygen shouldn't extract doc for static functions or private types
+       * doc/api/libabigail.doxy: Do not extract doc for static
+       functions, local classes.
+
+2014-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Update .gitignore
+       * .gitignore: Ignore *~ emacs files.
+
+2014-10-29  Dodji Seketeli <dodji@redhat.com>
+
+       Separate alias targets with a comma
+       * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Separate
+       alias targets by a comma.
+       * tests/data/test-diff-dwarf/test18-alias-sym-v1.cc: Update test
+       to add more than one alias to a given symbol.
+
+2014-10-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a typo in the manual about function suppressions
+       * doc/manuals/libabigail-concepts.rst: Fix a typo.
+
+2014-10-28  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for function suppressions
+       * include/abg-comparison.h (enum visiting_kind): Change the
+       meaning of this.  It was to determine if traversal was to be done
+       in a pre or post manner.  But with the recent addition of
+       diff_node_visitor::visit_{begin,end}() notifiers, the pre/post
+       handling is taken care of in a different way.  So now the meaning
+       of this enum is changed to handle whether diff node children
+       should be visited or not.  So the enumerators are now
+       DEFAULT_VISITING_KIND, and SKIP_CHILDREN_VISITING_KIND.  And it's
+       a bit-field.
+       (operator{&,~}): Declare more bit manipulation operators for the
+       enum visiting_kind.
+       (function_suppression_sptr, function_suppressions_type): New
+       typedefs.
+       (function_suppression, function_suppression::parameter_spec):
+       Declare new types.
+       (read_function_suppressions): Declare new function.
+       (diff_node_visitor::diff_node_visitor): Adjust for the enum
+       visiting_kind change.  Value-initialize the visiting_kind_ data
+       member.
+       * src/abg-comparison.cc (operator{&,~}): Define these operators
+       for enum visiting_kind.
+       (read_type_suppressions): Forward declare this static function.
+       (read_function_suppression, read_parameter_spec_from_string):
+       Define new static functions.
+       (read_suppressions): Update to read function suppressions too,
+       using the new read_function_suppression function above.
+       (class function_suppression::parameter_spec::priv): Define new
+       type.
+       (function_suppression::parameter_spec::*): Define the member
+       functions of the new function_suppression::parameter_spec type.
+       (class function_suppression::priv): Define new type.
+       (function_suppression::*): Define the member functions of the new
+       function_suppression type.
+       (diff::traverse): There is no more {PRE,POST}_VISITING_KIND
+       enumerator.  So nuke the code that was dealing with it.
+       (redundancy_marking_visitor::skip_children_nodes_): New data
+       member flag.
+       (redundancy_marking_visitor::visit_begin): If the current diff
+       node is not be reported (is filtered out), do not bother visit its
+       children nodes for the purpose of marking redundant nodes.  So use
+       the new skip_children_nodes_ flag above to know we are in that case.
+       (redundancy_marking_visitor::visit_end): Unset the new
+       skip_children_nodes_ flag above when appropriate.
+       * include/abg-fwd.h (is_function_decl): Declare new function.
+       * include/abg-ir.h
+       (function_type::get_parm_at_index_from_first_non_implicit_parm):
+       Declare new member function.
+       * src/abg-ir.cc (is_function_decl): Define new function.
+       (function_type::get_parm_at_index_from_first_non_implicit_parm):
+       Define new member function.
+       * src/abg-comp-filter.cc (apply_filter): Adjust for the enum
+       visiting_kind change.  No need to set it for filters anymore
+       * doc/suppr-doc.txt: Update examples of function suppression.
+       * doc/manuals/libabigail-concepts.rst: Update the manual for the
+       function suppression addition.
+       * tests/data/test-diff-suppr/libtest5-fn-suppr-v0.so: New test input.
+       * tests/data/test-diff-suppr/libtest5-fn-suppr-v1.so: New test input.
+       * tests/data/test-diff-suppr/libtest6-fn-suppr-v0.so: New test input.
+       * tests/data/test-diff-suppr/libtest6-fn-suppr-v1.so: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-0.suppr: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-1.suppr: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-2.suppr: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-3.suppr: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-4.suppr: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: New test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-v0.cc: Source code for
+       new test input.
+       * tests/data/test-diff-suppr/test5-fn-suppr-v1.cc: Source code for
+       new test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-0.suppr: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-1.suppr: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-2.suppr: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-3.suppr: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: New test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-v0.cc: Source code for
+       new test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-v1.cc: Source code for
+       new test input.
+       * tests/data/test-diff-suppr/test6-fn-suppr-version-script: New
+       test input.
+       * tests/Makefile.am: Add the new files above to source
+       the distribution.
+       * tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
+       above to the list of tests to be run by this harness.
+
+2014-10-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing virtual destructor in comparison engine code
+       * include/abg-comparison.h (type_suppression::~type_suppression):
+       Declare missing virtual destructor.
+       * src/abg-comparison.cc (type_suppression::~type_suppression):
+       Define missing virtual destructor.
+
+2014-10-27  Dodji Seketeli <dodji@redhat.com>
+
+       Pimplify abigail::ir::function_type
+       * include/abg-ir.h (function_type::priv_): Declare new data
+       member.
+       (function_type::<all the methods>): Move the inline methods out of
+       line in src/abg-ir.cc.
+       (function_type::{return_type_, parms_}): Move these ...
+       * src/abg-ir.cc (function_type::priv::{return_type_, parms_}):
+       ... Here.
+       (struct function_type::priv): New type for the private data of
+       function_type.
+       (function_type::<all the methods>): Move the previously inline
+       methods of function_type here.  Adjust them to tap into priv_->*
+       to get the private data members.
+
+2014-10-27  Dodji Seketeli <dodji@redhat.com>
+
+       Light style fix
+       * include/abg-ir.h (function_decl::get_type): Change the return
+       type from shared_ptr<function_type> to function_type_sptr.
+
+2014-10-27  Dodji Seketeli <dodji@redhat.com>
+
+       Allow white spaces in ini file property values
+       * src/abg-ini.cc (read_context::char_is_property_value_char): New
+       member function.
+       (read_context::read_next_char): Fix typos.  Allow escaping of '['
+       and ']'.
+       (read_context::read_property_value): Use the new
+       read_context::char_is_property_value_char above.
+
+2014-10-27  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in suppression specification manual
+       * doc/manuals/libabigail-concepts.rst: Fix name -> name_regexp.
+
+2014-10-22  Dodji Seketeli <dodji@redhat.com>
+
+       Support comparing symbols not referenced by debug info
+       * doc/manuals/abidiff.rst: Adjust intro to mention that w/o debug
+       info, abidiff now works but just report about added/removed
+       symbols.  Add documentation about the new
+       --no-unreferenced-symbols option.
+       * include/abg-comparison.h (string_elf_symbol_map): New typedef.
+       (diff_context::show_symbols_unreferenced_by_debug_info): Declare
+       new accessors.
+       * src/abg-comparison.cc
+       (diff_context::priv::show_syms_unreferenced_by_di_): New data
+       member.
+       (diff_context::priv::priv): Adjust.
+       (diff_context::show_symbols_unreferenced_by_debug_info): Implement
+       these accessors.
+       (corpus_diff::priv::{unrefed_fn_syms_edit_script_,
+       unrefed_var_syms_edit_script_, added_unrefed_fn_syms_,
+       deleted_unrefed_fn_syms_, added_unrefed_var_syms_,
+       deleted_unrefed_var_syms_}): New data members.
+       (corpus_diff::priv::diff_stats::{num_func_syms_removed,
+       num_func_syms_added, num_var_syms_removed, num_var_syms_added}):
+       New data members.
+       (corpus_diff::priv::diff_stats::diff_stats): Adjust.
+       (corpus_diff::ensure_lookup_tables_populated): Populate lookup
+       tables for added/removed symbols that are not referenced by any
+       debug info.
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
+       stats for the added/removed symbols not referenced by any debug
+       info.
+       (corpus_diff::priv::emit_diff_stats): Emit stats about
+       added/removed symbols that are not referenced by any debug info.
+       (corpus_diff::length): Adjust to take in account added/removed
+       symbols not referenced by any debug info.
+       (show_linkage_name_and_aliases): New static function.
+       (corpus_diff::report): When emitting a symbol name, emit its
+       version too, and tell if it aliases other symbols.  Avoid emitted
+       extra new lines.  Report added/removed symbols not referenced by
+       any debug info.
+       (compute_diff): In the overload for corpus_sptr, compute the diffs
+       for symbols not referenced by debug info.
+       * include/abg-corpus.h
+       (corpus::get_unreferenced_{function,variable}_symbols): Declare
+       new member functions.
+       * src/abg-corpus.cc (corpus_priv::{unrefed_fun_symbols,
+       unrefed_var_symbols}): New data members.
+       (corpus_priv::build_unreferenced_symbols_tables): Define new
+       member function.
+       (struct comp_elf_symbols_functor): New functor.
+       (corpus::is_empty): Adjust to take in account added/removed
+       symbols not referenced by debug info.
+       (corpus::{get_unreferenced_function_symbols,
+       corpus::get_unreferenced_variable_symbols}): Define these
+       accessors.
+       * include/abg-dwarf-reader.h (enum status): Transform this into
+       bitfields.  Add a STATUS_UNKNOWN value that has the value 0.
+       (operator|(status, status), operator&(status, status))
+       (operator|=(status&, status), operator&=(status, status)): New
+       bit-wise operators to manipulate instances of the status bit-field.
+       * src/abg-dwarf-reader.cc (get_version_for_symbol): Fix this to
+       avoid returning garbage version sometimes.
+       (read_debug_info_into_corpus): Fix this to return a non-null but
+       empty corpus_sptr when there is no debug info available.
+       (operator|(status, status), operator&(status, status))
+       (operator|=(status&, status), operator&=(status, status)): Define
+       these new bitwise operators to manipulate instances of the status
+       bit-field.
+       (read_corpus_from_elf): Now that the abigail::dwarf_reader::status
+       is a bit-field, set it to reflect if debug info and/or symbol
+       tables have been found.  Do not bail out if debug info hasn't been
+       found.  Rather, keep going, and go look for symbols-only; this is
+       a kind of operating in degraded mode.
+       * include/abg-ir.h (elf_symbol::get_aliases_id_string): Add a flag
+       that says if the current instance of elf_symbol should be included
+       in the list of aliases or not.
+       * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define it.
+       * tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.o: New test
+       input.
+       * tools/abidiff.cc
+       (options::show_symbols_not_referenced_by_debug_info): New data
+       member.
+       (options:options): Adjust.
+       (display_usage): Add an info string for the new
+       --no-unreferenced-symbols command line option.
+       (parse_command_line): Parse the new --no-unreferenced-symbols
+       command line.
+       (set_diff_context_from_opts): Set the diff_context according to
+       the presence of --no-unreferenced-symbols.
+       (main): Adjust for the fact that abigail::dwarf_reader::status is
+       now a bit-field.
+       * tools/abilint.cc (main): Adjust for the fact that
+       abigail::dwarf_reader::status is now a bit-field..
+       ():
+       * tests/data/test-diff-dwarf/test16-syms-only-report.txt: New test
+       reference output.
+       * tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.cc: Source code
+       for new test input.
+       * tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.o: New
+       test input.
+       * tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.cc: New
+       source code for test input.
+       * tests/data/test-diff-dwarf/libtest18-alias-sym-v{0,1}.so: New
+       test input.
+       * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
+       Reference output for new test input.
+       * tests/data/test-diff-dwarf/test18-alias-sym-v{0,1}.cc: Source
+       code for new test input.
+       * tests/data/test-diff-dwarf/test18-alias-sym-version-script:
+       Source code for new test input.
+       * tests/Makefile.am: Add the new test materials to the source
+       distribution.
+       * tests/test-diff-dwarf.cc(in_out_specs): Add the new input tests
+       above to the array of tests to run by this harness.
+       (main): Emit empty reports for empty resulting diffs.
+       * tests/data/test-diff-dwarf/test{0,8,9,12,14-inline-report,}-report.txt:
+       Adjust.
+       * tests/data/test-diff-filter/test{0,01,2,4,5,7,8,9,10,12,13,15-0,15-1}-report.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test{19-enum,20-inline,}-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-{1,2}.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test{1,2}-typedef-suppr-report-1.txt:
+       Likewise.
+
+2014-10-22  Dodji Seketeli <dodji@redhat.com>
+
+       Allow comparison of shared_ptr of things
+       * include/abg-diff-utils.h: Adjust copyright years.
+       (deep_ptr_eq_functor::operator()(const shared_ptr<T>, const
+       shared_ptr<T>)): New comparison operator.
+
+2014-10-17  Dodji Seketeli <dodji@redhat.com>
+
+       Use the "standard" equality operator when comparing variables
+       * src/abg-comparison.cc (compute_diff): In the overload for
+       corpus_sptr, use the diff_utils::deep_ptr_eq_functor that is used
+       to compare functions too, rather than the ad-hoc early struct
+       var_eq_type we were using until now.
+
+2014-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Yet another fix to the DWARF method "static-ness" detection heuristic
+       * include/abg-fwd.h (is_pointer, is_qualified_type): Declare new
+       functions.
+       * src/abg-ir.cc (is_pointer, is_qualified_type): Implement these
+       new functions.
+       * src/abg-dwarf-reader.cc (finish_member_function_reading):
+       Sometimes, the this pointer of a non-static method can point to a
+       *qualified* version of its containing type.  I am seeing that when
+       comparing libstdc++.so from RHEL 6.5 and RHEL 7.  Take that in
+       account when trying to detect that the first parameter of a member
+       function is the this pointer, and thus detect that the function is
+       a non static member function.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
+       New test input.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.so: New
+       test input.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.cc:
+       Source code of new test input.
+       * tests/test-read-dwarf.cc: Update copyright year.
+       (in_out_spec): Add the new test inputs to this array, so that this
+       test harness runs on them.
+       * tests/Makefile.am: Add the new test inputs to the source
+       distribution.
+
+2014-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid infinite loops in the comparison code for classes
+       * src/abg-ir.cc (equals): In the overload for classes, make sure
+       to store the name of the lhs of the class and the rhs into the
+       lhs.  Also, when we bail out because we detect that there is a
+       comparison underway, do *not* unmark the current class as not being
+       involved in the comparison.  Also, break at the first lhs virtual
+       member function that is different from the rhs counter part.
+
+2014-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       Update the manual for the suppression specification initial work
+       * doc/manuals/abidiff.rst: Add documentation for the new
+       --suppressions command line switch.
+       (--harmless, --harmful): Refer to the new "concepts" section
+       below, where harmful/harmless concepts are now explained.
+       (Notes): Move the content of the notes section where
+       harmful/harmless concepts were explained, to the newly created
+       'Concepts' section.
+       * doc/manuals/index.rst: Limit the depth of the table of content
+       to 2.  Add the new libabigail-concepts.rst stuff in here.  Adjust
+       for the renaming of tools.rst to libabigail-tools.rst.
+       * doc/manuals/libabigail-concepts.rst: New file.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       Properly propagate {REDUNDANT, SUPPRESSED}_CATEGORY wrt local changes
+       * src/abg-comparison.cc
+       (suppression_categorization_visitor::visit_end): If a diff node
+       carries local changes, then, even if all of its children node have
+       been suppressed, this diff node shall not be categorized as
+       suppressed by way of propagation.
+       (redundancy_marking_visitor::visit_end): If a diff node carries
+       local changes, then, even if all of its children nodes are
+       redundant, this diff node shall not be categorized as being
+       redundant by way of propagation.
+       * tests/data/test-diff-suppr/libtest4-local-suppr-v{0,1}.so: New test
+       inputs.
+       * tests/data/test-diff-suppr/test4-local-suppr-0.suppr: Likewise.
+       * tests/data/test-diff-suppr/test4-local-suppr-report-{0,1}.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test4-local-suppr-v{0,1}.{c,h}:
+       Source code of the new tests inputs.
+       * tests/Makefile.am: Add the new test material to the source
+       distribution.
+       * tests/test-diff-suppr.cc (in_out_spec): Run this test harness
+       over the new test input above.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       Gain ability know if a diff node has local changes
+       * include/abg-comparison.h (diff::has_local_changes): Add new pure
+       interface.
+       ({decl_diff_base, type_diff_base, distinct_type_diff, var_diff,
+       pointer_diff, reference_diff, array_diff, qualified_type_diff,
+       enum_diff, class_diff, base_diff, scope_diff, function_decl_diff,
+       type_decl_diff, typedef_diff,
+       translation_unit_diff}::has_local_changes): Declare the
+       implementation of the pure interface above.
+       * src/abg-comparison.cc ({decl_diff_base, type_diff_base,
+       distinct_type_diff, var_diff, pointer_diff, reference_diff,
+       array_diff, qualified_type_diff, enum_diff, class_diff, base_diff,
+       scope_diff, function_decl_diff, type_decl_diff, typedef_diff,
+       translation_unit_diff}::has_local_changes): Define the
+       implementation of the pure interface above.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       Write comparison functions that hint at the kind of changes they see
+       * include/abg-ir.h (enum change_kind): Declare new enum.
+       (operator|(change_kind, change_kind), operator&(change_kind,
+       change_kind), operator|=(change_kind&, change_kind)): Declare new bit-wise
+       operators for the new enum change_kind.
+       (equals): Declare this new comparison function for decl_base,
+       scope_decl, type_base, type_decl, scope_type_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       array_type_def, enum_type_decl, typedef_decl, var_decl,
+       function_decl, function_type, class_decl, and
+       class_decl::base_spec.
+       (class_decl::base_spec::operator(const decl_base&)): Declare new
+       equality operator.
+       * src/abg-ir.cc (operator|(change_kind l, change_kind r))
+       (operator&(change_kind l, change_kind r), operator|=(change_kind&
+       l, change_kind r), operator&=(change_kind& l, change_kind r)):
+       Define these new operators.
+       (equals): Define this new comparison function for decl_base,
+       scope_decl, type_base, type_decl, scope_type_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       array_type_def, enum_type_decl, typedef_decl, var_decl,
+       function_decl, function_type, class_decl, and
+       class_decl::base_spec.
+       ({decl_base, scope_decl, type_base, type_decl, scope_type_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       array_type_def, enum_type_decl, typedef_decl, var_decl,
+       function_decl, function_type, class_decl,
+       class_decl::base_spec}::operator==): Re-write these comparison
+       operators in terms of their relevant equal() functions.
+
+2014-09-22  Dodji Seketeli <dodji@redhat.com>
+
+       Fix struct type kind suppression support
+       * src/abg-comparison.cc (type_suppression::suppresses_diff): Do
+       not crash on diff nodes that are not about struct/classes, when
+       "type_kind = struct" has been specified.
+       * tests/data/test-diff-suppr/test2-struct-suppr-{0,1}.suppr: New test input.
+       * tests/data/test-diff-suppr/test2-struct-suppr-report-{0,1}.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test2-struct-suppr-v{0,1}.o: Likewise
+       * tests/data/test-diff-suppr/test2-struct-suppr-v{1,0}.cc: Source code
+       for binary test input.
+       * tests/test-diff-suppr.cc (in_out_spec): Run this harness on the
+       new test input above.
+       * tests/Makefile.am: Add the new test input files to source
+       distribution.
+
+2014-09-22  Dodji Seketeli <dodji@redhat.com>
+
+       Replace is_typedef by type_kind property in type suppressions
+       * doc/suppr-doc.txt: Add type_kind property "documentation" in the
+       type suppression.
+       * include/abg-comparison.h (type_suppression::type_kind): New
+       enum.
+       (type_suppression::{get_consider_typedefness,
+       set_consider_typedefness, get_is_typedef, set_is_typedef}):
+       Remove.
+       (type_suppression::{get_consider_type_kind,
+       set_consider_type_kind, get_type_kind, set_type_kind}): Declare
+       new methods.
+       * Include/abg-fwd.h (is_type_decl): Declare new function.
+       (is_enum): Declare new overload that takes a type_base_sptr.
+       * src/abg-comparison.cc
+       (type_suppression::priv::{consider_typedefness_, is_typedef_}):
+       Remove these data members.
+       (type_suppression::priv::{consider_type_kind_, type_kind_}): New
+       data members.
+       (type_suppression::priv::priv): Adjust.
+       (type_suppression::{get_consider_typedefness,
+       set_consider_typedefness, get_is_typedef, set_is_typedef}): Remove
+       these member functions.
+       (type_suppression::{get_consider_type_kind,
+       set_consider_type_kind, get_type_kind, set_type_kind}): Define
+       these new member functions.
+       (type_suppression::suppresses_diff): Adjust to consider the kind
+       of types more generally than just considering typedef-ness.
+       (read_type_kind_string): New static function.
+       (read_type_suppression): Use the above to parse the value of the
+       new type_kind property.  Adjust the creation of the resulting
+       type_suppression object.
+       * src/abg-ir.cc (is_type_decl): Define new function.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-0.suppr: Adjust.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-1.suppr: Adjust.
+
+2014-09-19  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for type suppressions
+       * include/abg-comparison.h (diff_category::SUPPRESSED_CATEGORY):
+       New enumerator.
+       (diff_category::{SIZE_OR_OFFSET_CHANGE_CATEGORY,
+       VIRTUAL_MEMBER_CHANGE_CATEGORY): Update the enumerator values for
+       these.
+       (diff::EVERYTHING_CATEGORY): Adjust.
+       (suppression_base, type_suppression): Declare new types.
+       (suppression_ptr, suppressions_type, type_suppression_sptr)
+       (type_suppressions_type): New typedefs.
+       (read_type_suppressions, read_suppressions): Declare new
+       functions.
+       (diff_context::{suppressions, add_suppression, add_suppressions}):
+       Declare new methods.
+       (diff::is_suppressed): Declare new member function.
+       (apply_suppressions): Declare new function & overloads.
+       * src/abg-comparison.cc (is_type_diff): Define new static
+       function.
+       ({suppression_base, type_suppression}::priv): Define new types.
+       ({suppression_base, type_suppression}::*): Define the methods of the new
+       suppression_base, type_suppressions types.
+       (read_type_suppression, read_type_suppressions, read_suppressions)
+       (read_type_suppressions): Define new static functions.
+       (diff_context::priv::supprssions_): New data member.
+       (diff_context::{suppressions, add_suppression, add_suppressions}):
+       New methods.
+       (diff::is_filtered_out): Consider that a diff node that is in the
+       SUPPRESSED_CATEGORY is filtered out.
+       (diff::is_suppressed): Define new member function.
+       (operator<<(ostream& o, diff_category c)): Support the
+       SUPPRESSED_CATEGORY category.
+       (corpus_diff::report): Apply suppressions before reporting
+       anything.
+       (category_propagation_visitor::visit_end): Do not propagate
+       SUPPRESSED_CATEGORY.  This is just like what we do for
+       REDUNDANT_CATEGORY.
+       (struct suppression_categorization_visitor): New visitor.
+       (apply_suppressions): Define function & overloads.
+       * include/abg-ini.h (config::section::find_property): New method.
+       (config::section): Fix end of class comment.
+       * src/abg-ini.cc (config::section::find_property): Define new
+       method.
+       * tests/data/test-diff-suppr/test0-type-suppr-{0,1,2}.suppr: New
+       test input files.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-{0,1,2,3}.txt:
+       Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.o: Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.cc: Source code
+       for new test input.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.o: New test
+       input files.
+       * tests/data/test-diff-suppr/test1-typedef-suppr.h: Source code
+       for new test input files.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.c: Likewise
+       * tests/data/test-diff-suppr/test1-typedef-suppr-{0,1}.suppr: New
+       test input files.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
+       * tests/test-diff-suppr.cc: New test harness to run type suppression tests
+       using the input files above.
+       * tests/data/test-diff-suppr/test3-struct-suppr-0.suppr: New test input.
+       * tests/data/test-diff-suppr/test3-struct-suppr-1.suppr: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-v0.cc: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-v0.o: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-v1.cc: Likewise.
+       * tests/data/test-diff-suppr/test3-struct-suppr-v1.o: Likewise.
+       * tests/Makefile.am: Build the new runtestdiffsuppr test harness
+       from the test-diff-filter.cc file.  Add the new test files to the
+       build system and source distribution.
+       * tools/bidiff.cc (options::suppressions): New data member.
+       (display_usage): Add a help string for the new
+       --suppressions command line switch.
+       (parse_command_line): Parse the --suppressions command line
+       switch.
+       (set_diff_context_from_opts): Read the suppressions provided by
+       the --suppression command line switch and stuff them into the diff
+       context.
+
+2014-09-19  Dodji Seketeli <dodji@redhat.com>
+
+       Make all type diff types extend new type_diff_base type
+       * include/abg-comparison.h (type_diff_base, decl_diff_base): New
+       types.
+       (type_diff_base_sptr): New typedef.
+       (pointer_diff, reference_diff, array_diff, qualified_type_diff)
+       (enum_diff, class_diff, type_decl_diff, typedef_diff): Make this
+       extend the new type_diff_base.
+       * src/abg-comparison.cc (type_diff_base::priv, type_diff_base):
+       Define these new types and their methods.
+       (pointer_diff::pointer_diff, array_diff::array_diff)
+       (reference_diff::reference_diff)
+       (qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
+       (class_diff::class_diff, type_decl_diff::type_decl_diff)
+       (typedef_diff::typedef_diff): Adjust.
+
+2014-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Rename abigail::ini::config::section_vector to sections_type
+       * include/abg-ini.h (abigail::ini::config::sections_type): Renamed
+       section_vector into this.
+       (config::{get_sections, set_sections, read_sections,
+       write_sections}): Adjust.
+       * src/abg-ini.cc (config::priv::sections_): Adjust.
+       (config::priv::priv): Likewise.
+       (config::{config, get_sections}): Likewise.
+       (read_sections, read_config, write_sections): Likewise.
+
+2014-09-08  Dodji Seketeli <dodji@redhat.com>
+
+       Implement the abigail::ini::config abstraction
+       * include/abg-ini.h (config::config): Add an overload that take a
+       path and sections.
+       (config::{get,set}_sections): New accessors.
+       (read_sections): Rename the previous read_config() functions into
+       these.
+       (read_config): Add these function declarations to really act on
+       instances of abigail::ini::config.
+       (write_section): Rename the previous write_config functions into
+       these.
+       (write_config): Add these function declarations to really act on
+       instances of abigail::ini::config.
+       * src/abg-ini.cc (class config::priv): Implement this.
+       (config::{config, ~config, get_path, set_path, get_sections,
+       set_sections}): Define these new methods.
+       (read_sections): Rename the former read_config into this.
+       (read_config): Add this function definitions to really act on
+       instances of abigail::ini::config.
+       (write_sections): Rename the former write_config into this.
+       (write_config):: Add this function definitions to really act on
+       instances of abigail::ini::config.
+       * tools/binilint.cc (main): Adjust.
+
+2014-09-05  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support of ini-style file parsing
+       * include/abg-ini.h: New file.
+       * include/Makefile.am: Add include/abg-ini.h to the source
+       distribution.
+       * src/abg-ini.cc: New file.
+       * src/Makefile.am: Add src/abg-ini.cc to the source distribution.
+       * tools/binilint.cc: New testing tool.
+       * tools/Makefile.am: Add tools/binilint.cc to the source distribution.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       Initial examples of suppression list specifications
+       * doc/suppr-doc.txt: New file.
+
+2014-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Put IR artifacts in the abigail::ir namespace
+       * include/abg-fwd.h: Wrap IR artifacts into abigail::ir namespace.
+       Inject that new abigail::ir namespace into the abigail namespace.
+       * include/abg-ir.h: Wrap IR artifacts into abigail::ir namespace.
+       (function_decl::parameter::get_type_name): Adjust the call to
+       abigail::get_type_name.  It's now a call to
+       abigail::ir::get_type_name.
+       * src/abg-ir.cc: Wrap IR artifacts into abigail::ir namespace.
+       * include/abg-traverse.h: Wrap the ir traversing artifact into the
+       abigail::ir namespace too.
+       * src/abg-traverse.cc: Adjust.
+       * include/abg-corpus.h: Wrap corpus type stuff into abigail::ir.
+       * include/abg-dwarf-reader.h: Inject namespace abigail::ir stuff
+       into the abigail::dwarf_reader namespace.
+       * include/abg-reader.h: Inject namespace abigail::ir stuff into
+       the abigail::xml_reader namespace.
+       * src/abg-reader.cc: Adjust.
+       * include/abg-writer.h: Inject namespace abigail::ir stuff into
+       the abigail::xml_writer namespace.
+       * src/abg-writer.cc: Inject namespace abigail::ir stuff into
+       abigail namespace here too.
+       * src/abg-hash.cc: Inject the abigail::ir namespace into the
+       abigail namespace.
+       * tools/abg-tools-utils.cc: Adjust for the injection of
+       abigail::function_decl. It's now abigail::ir::function_decl.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style cleanups
+       * src/abg-comparison.cc: ({pointer_diff, reference_diff}::length):
+       Add some vertical spaces here.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       constify dm_context_rel::operator==
+       * include/abg-ir.h (dm_context_rel::operator==): Make this const.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       A distinct_diff node has no children node
+       * src/abg-comparison.cc (distinct_diff::chain_into_hierarchy): Do
+       not append any children node here.
+
+2014-10-13  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless redundant_filter
+       * include/abg-comp-filter.h (class redundant_filter): Remove this
+       now useless type declaration
+       * src/abg-comparison.cc (filtering::redundant_filter::visit):
+       Remove this useless member function definition.
+
+2014-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Sort diff reports about function parameters by their indexes
+       * include/abg-comparison.h (changed_parms_type): New convenience
+       typedef.
+       * src/abg-comparison.cc (struct changed_parm_comp): New comparison
+       functor.
+       (sort_changed_parm_map): New sorting function.
+       (function_decl_diff::report): Use the new sort_changed_parm_map to
+       sort the diffs for function parameters by their indexes.
+
+2014-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Don't be too eager to use distinct_diff
+       * src/abg-comparison.cc (try_to_diff):  For this to actually
+       select a diff kind, the two diff subject must be of type
+       'DiffType'.
+       (compute_diff_for_types, compute_diff_for_decls): Use
+       distinct_diff in last resort.
+
+2014-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Implement generic diff tree walking and port categorization over it
+       * include/abg-comp-filter.h (apply_filter): Declare new overload
+       that takes a corpus_diff_sptr ...
+       * src/abg-comp-filter.cc (apply_filter): ... and define it.  On
+       the existing overload for diff_sptr, make sure to traverse all
+       diff nodes, even those that have already been traversed.
+       * include/abg-comparison.h (enum diff_category): Remove
+       NOT_REDUNDANT_CATEGORY, add REDUNDANT_CATEGORY.
+       (operator&=, +operator<<): Declare new operators for enum diff_category.
+       (diff_context::{forbid_traversing_a_node_twice,
+       traversing_a_node_twice_is_forbidden):
+       (diff_context::categorizing_redundancy): Remove this declaration.
+       (diff_context::maybe_apply_filters): Declare a new overload that
+       takes a corpus_diff_sptr.  And a take a new flag that says if it
+       should visit all nodes including those that have already been
+       visited.
+       (diff::priv_): Make this data member protected.
+       (diff::{begin_traversing, is_traversing, end_traversing,
+       finish_diff_type, children_nodes, append_child_node,
+       get_pretty_representation, chain_into_hierarchy, traverse}):
+       Declare new member functions.
+       (distinct_diff::{finish_diff_type, get_pretty_representation,
+       chain_into_hierarchy}): Likewise.
+       (distinct_diff::traverse): Remove.
+       (pointer_diff::pointer_diff): Take the underlying type diff in
+       parameter.
+       (pointer_diff::{finish_diff_type, get_pretty_representation,
+       chain_into_hierarchy}): Declare new member functions.
+       (pointer_diff::traverse): Remove.
+       (reference_type_def::reference_type_def): Take the underlying type
+       diff in parameter.
+       ({array_type_def, reference_type_def}::{finish_diff_type,
+       get_pretty_representation, chain_into_hierarchy}): Declare new
+       member functions.
+       ({array_type_diff, reference_type_def}::traverse): Remove.
+       (qualified_type_diff::qualified_type_diff): Take the underlying
+       type diff in parameter.
+       ({enum_diff, qualified_type_diff, class_diff}::{finish_diff_type,
+       get_pretty_representation, chain_into_hierarchy}): Declare new
+       member functions.
+       ({enum_diff, qualified_type_diff, class_diff}::traverse): Remove.
+       (is_class_diff): Declare new function.
+       (base_diff::base_diff): Take the underlying type diff in
+       parameter.
+       ({scope_diff, base_diff}::{finish_diff_type, get_pretty_representation,
+       chain_into_hierarchy}): Declare new member functions.
+       ({scope_diff, base_diff}::traverse): Remove.
+       (function_decl_diff::function_decl_diff): Take the return type
+       diff as parameter.
+       ({function_decl_diff, type_decl_diff}::{finish_diff_type,
+       get_pretty_representation, chain_into_hierarchy}): Declare new
+       member functions.
+       ({function_decl_diff, type_decl_diff}::traverse): Remove.
+       (typedef_diff::typedef_diff): Take the underlying type diff as
+       parameter.
+       (typedef::{finish_diff_type, get_pretty_representation,
+       chain_into_hierarchy}): Declare new member functions.
+       ({typedef, translation_unit_diff}::traverse): Remove member
+       function.
+       (corpus_diff::{finish_diff_type, children_nodes,
+       append_child_node, changed_variables, get_pretty_representation,
+       chain_into_hierarchy}): Declare new member functions.
+       (class diff_node_visitor::{visit_begin, visit_end}): Declare new
+       member functions.
+       (propagate_categories, print_diff_tree, categorizing_redundancy)
+       (clear_redundancy_categorization, apply_filters): New functions
+       and function overloads.
+       * src/abg-comparison.cc (TRY_PRE_VISIT, TRY_PRE_VISIT_CLASS_DIFF)
+       (TRY_POST_VISIT, TRY_POST_VISIT_CLASS_DIFF)
+       (CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
+       (UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE)
+       (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
+       (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Remove these macros.
+       Hurrah.
+       (diff_context::priv::categorizing_redundancy_): Remove.
+       (diff_context::priv::forbid_traversing_a_node_twice_): Add new
+       data member.
+       (diff_context::priv::priv): Adjust.
+       (diff_context::{forbid_traversing_a_node_twice,
+       traversing_a_node_twice_is_forbidden}): Define new member
+       functions.
+       (diff_context::maybe_apply_filters): Once filters are applied (and
+       categories are set to the relevant diff tree nodes, run a pass
+       over the diff tree to propagate the categories to the relevant
+       diff tree parent nodes.  Add an overload for corpus_diff_sptr.
+       (diff_context::categorizing_redundancy): Remove member function.
+       (diff_context::maybe_apply_filters): Define a new overload for
+       corpus_diff_sptr
+       (struct diff::priv::{finished_, traversing_, children_,
+       pretty_representation_}):  New data members.
+       (diff::priv::priv): Adjust.
+       (diff::{begin_traversing, is_traversing, end_traversing,
+       finish_diff_type, children_nodes, append_child_node, traverse,
+       set_category, get_pretty_representation, chain_into_hierarchy}):
+       Define new member functions.
+       (diff::is_filtered_out): Do not refer to NOT_REDUNDANT_CATEGORY
+       anymore.  Rather, use the new REDUNDANT_CATEGORY.
+       ({distinct_diff, var_diff, pointer_diff, array_diff,
+       reference_diff, qualified_type_diff, enum_diff, class_diff,
+       base_diff, scope_diff, function_decl_diff, type_decl_diff,
+       typedef_diff}::{get_pretty_representation, chain_into_hierarchy,
+       finish_diff_type}): Define new member functions.
+       ({distinct_diff, var_diff, pointer_diff, array_diff,
+       reference_diff, qualified_type_diff, enum_diff, class_diff,
+       base_diff, scope_diff, function_decl_diff, type_decl_diff,
+       typedef_diff, translation_unit_diff}::traverse): Remove member
+       functions.
+       (operator&=, operator<<): Define new operators for diff_category.
+       ({function_decl_diff, typedef_diff}::priv::priv): Add a new
+       constructor.
+       (pointer_diff::{priv::priv, pointer_diff})
+       (reference_diff::{priv::priv, reference_diff})
+       (qualified_type_diff::{priv::priv, qualified_type_diff})
+       (enum_diff::{priv::priv, enum_diff}, base_diff::{priv::priv,
+       base_diff}, function_decl_diff::function_decl_diff): Take the
+       underlying type diff in parameter.
+       (compute_diff): Adjust the pointer_diff, reference_diff,
+       qualified_type_diff, base_diff, function_decl_diff overloads.
+       (class_diff::priv::{count_filtered_bases,
+       count_filtered_subtype_changed_dm, count_filtered_changed_dm,
+       count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
+       count_filtered_deleted_mem_fns}): Adjust for the call to
+       diff_context::maybe_apply_filters.
+       (corpus_diff::priv::{finished_, pretty_representation_}): New data
+       member.
+       (corpus_diff::priv::priv): New constructor.
+       (corpus_diff::priv::clear_redundancy_categorization): Define new
+       member function.
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats):
+       Adjust for call to diff_context::maybe_apply_filters.  Also, call
+       clear_redundancy_categorization at the end.
+       (corpus_diff::priv::categorize_redundant_changed_sub_nodes):
+       Revisit logic.
+       (corpus_diff::{chain_into_hierarchy, finish_diff_type,
+       children_nodes, append_child_node, changed_variables,
+       get_pretty_representation}): Define new member functions.
+       (corpus_diff::report): Categorize redundancy for every top level
+       function/variable diff.
+       (corpus_diff::traverse): Adjust to the new traversing interface.
+       (diff_node_visitor::{visit_begin, visit_end}): Define new member
+       functions.
+       (struct category_propagation_visitor, struct diff_node_printer)
+       (struct redundancy_marking_visitor, struct
+       redundancy_clearing_visitor): New diff tree node visitors.
+       (propagate_categories, print_diff_tree, categorize_redundancy)
+       (clear_redundancy_categorization, apply_filters): Define new
+       functions.
+       * tests/Makefile.am: Add the new tests/print-diff-tree.cc to the
+       source distribution.  Build it into a tests/printdifftree binary.
+       * tools/abidiff.cc (print_diff_tree): Add debugging functions to
+       call from within the debugger.  By default, this function and its
+       overloads are not compiled.
+
+2014-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright notice for tests/test-diff2.cc
+       * tests/test-diff2.cc: Update copyright year.
+
+2014-10-09  Dodji Seketeli <dodji@redhat.com>
+
+       Do not crash on function_decl_diff for fns that have no symbol
+       * src/abg-comparison.cc (function_decl_diff::report): If a
+       function decl has no associated elf symbol, do not crash while
+       trying to report about its elf symbol aliases.
+
+2014-10-09  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid broken output for virtual member fns w/o symbols
+       * src/abg-comparison.cc (represent): When a virtual member
+       function has no associated elf symbol, do not emit garbage in lieu
+       of the linkage name.  Just emit no linkage name;
+       * tests/data/test-abidiff/test-struct1-report.txt: Adjust.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Sort added/removed/changed functions reported by the comparison engine
+       * src/abg-comparison.cc (struct function_comp, struct
+       changed_function_ptr_comp): New comparison functors.
+       (sort_string_function_ptr_map)
+       (sort_string_changed_function_ptr_map): Define new static
+       functions.
+       (corpus_diff::report): Sort the added/removed/changed functions
+       that are reported.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test01-report.txt: Adjust.
+       * tests/data/test-diff-filter/test2-report.txt: Adjust.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Mention virtual-ness of member function in their pretty representation
+       * include/abg-fwd.h (get_member_function_is_virtual): Declare new
+       overload for pointers.
+       * src/abg-ir.cc (get_member_function_is_virtual): Define it.
+       (function_decl::get_pretty_representation): Print virtual-ness of
+       the function_decl being pretty printed.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Do not crash when reporting diffs about virtual member fns that have no symbol
+       * src/abg-comparison.cc (represent): If a virtual member function
+       has no symbol do not crash.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Fixup member functions which virtual-ness has just been set
+       * include/abg-ir.h (fixup_virtual_member_function): Declare new
+       function.
+       (class_decl): Declare fixup_virtual_member_function() as a member.
+       * src/abg-ir.cc (set_member_function_is_virtual): Ensure that the
+       member function that has seen its virtualness set is also put
+       correctly put in the vector of virtual member functions of its
+       class.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Assert that only decls with elf symbols are part of comparison
+       * src/abg-corpus.cc (corpus::priv::build_public_decl_table): Assert
+       that when read from DWARF, only decls with elf symbols are part of
+       the public decls table.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Emit all virtual member functions in group
+       * src/abg-writer.cc (write_class_decl): Emit virtual member
+       functions contiguously.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Always emit vtable offset for virtual member function
+       * src/abg-writer.cc (write_voffset): Emit the vtable offset of
+       virtual function even when the offset is zero.
+
+2014-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget priv_->in_pub_sym_tab_ when copying decl_base
+       * src/abg-ir.cc (decl_base::decl_base(const decl_base& d)): Do
+       not forget to copy priv_->in_pub_sym_tab_.
+
+2014-10-01  Dodji Seketeli <dodji@redhat.com>
+
+       Fix reading several clones of the same member function from DWARF
+       * include/abg-fwd.h (set_member_function_is_ctor)
+       (set_member_function_is_dtor, set_member_function_is_const)
+       (set_member_function_vtable_offset): Declare new functions.
+       * include/abg-ir.h (class_decl::sort_virtual_mem_fns): Declare new
+       member function.
+       (mem_fn_context_rel::{vtable_offset, is_constructor is_destructor,
+       is_const}): Add these setters.
+       (set_member_function_is_ctor, set_member_function_is_dtor)
+       (set_member_function_is_static, set_member_function_is_const)
+       (set_member_function_vtable_offset)
+       (set_member_function_is_virtual): Declare these new friend
+       function to class class_decl::method_decl.
+       * src/abg-dwarf-reader.cc (finish_member_function_reading): Split
+       this out from build_class_type_and_add_to_ir.  Use the new setters
+       for member functions properties introduced above.
+       (build_class_type_and_add_to_ir): Factorize the creation of member
+       function by using build_ir_node_from_die.  Once that function has
+       created the member function in a rather generic way, use the new
+       finish_member_function_reading to set the remaining specific
+       properties for member functions.
+       (build_function_decl): When called to read additional properties
+       of a function_decl, allow this to read and update the elf symbol
+       properties too.  This is useful for building a clone of a function
+       that already has an elf symbol.
+       (build_ir_node_from_die):  When building a function decl, consider
+       the case of a DIE that has both DW_AT_specification and
+       DW_AT_abstract_origin set.  That is, DW_AT_abstract_origin is set,
+       and the origin has DW_AT_specification set.  This is basically a
+       clone of a function that implements an interface (this happens for
+       destructors, for instance).  In this case, really do the cloning
+       of the interface implementation.  If the cloned function happens
+       to be member function, use finish_member_function_reading to read
+       the properties relevant to its method-ness.
+       * src/abg-ir.cc (set_member_function_is_ctor)
+       (set_member_function_is_dtor, set_member_function_is_const)
+       (set_member_function_vtable_offset)
+       (class_decl::sort_virtual_mem_fns): Define new functions.
+       (sort_virtual_member_functions): Define new static function.
+       (struct virtual_member_function_less_than): New functor.
+       (class_decl::add_member_function): Keep virtual member functions
+       vector sorted.
+       * data/test-read-dwarf/test1.abi: Adjust.  Now, both the
+       cdtor specification and all the clones that implements the
+       different are emitted.
+       * data/test-read-dwarf/test2.so.abi: Likewise.
+
+2014-10-01  Dodji Seketeli <dodji@redhat.com>
+
+       Do not crash when comparing functions that have no symbol
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): Just skip functions
+       that have no ELF symbol.
+
+2014-09-30  Dodji Seketeli <dodji@redhat.com>
+
+       Rename member_function_is_virtual to get_member_function_is_virtual
+       * include/abg-fwd.h (get_member_function_is_virtual): Renamed the
+       declaration of member_function_is_virtual into this.
+       * src/abg-ir.cc (get_member_function_is_virtual): Likewise for its
+       definition.
+       * include/abg-ir.h (class decl_base): Adjust the friend function
+       member_function_is_virtual references.
+       * src/abg-comp-filter.cc (has_virtual_mem_fn_change)
+       (has_non_virtual_mem_fn_change): Adjust.
+       * src/abg-comparison.cc (represent)
+       (SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED, class_diff::report):
+       Likewise.
+       * src/abg-hash.cc (class_decl::hash::operator()): Likewise.
+       (function_decl::clone, class_decl::add_member_function): Adjust.
+
+2014-09-30  Dodji Seketeli <dodji@redhat.com>
+
+       Factorize a no-op deleter for shared pointer
+       * include/abg-sptr-utils.h (struct noop_deleter): Move this here
+       from ...
+       * src/abg-comparison.cc (struct noop_deleter): ... here.
+
+2014-09-30  Dodji Seketeli <dodji@redhat.com>
+
+       Link manuals from the main web page
+       * doc/website/mainpage.txt: Add a link to the manuals.
+
+2014-09-26  Dodji Seketeli <dodji@redhat.com>
+
+       Initial documentation for libabigail
+       * doc/manuals/Makefile: New file, generated by sphinx-quickstart.
+       * doc/manuals/abidiff.rst: New manual for abidiff.
+       * doc/manuals/abidw.rst: New manual for abidw.
+       * doc/manuals/abilint.rst: New manual for abilint.
+       * doc/manuals/conf.py: New configuration file generated by sphinx-quickstart.
+       * doc/manuals/index.rst: The root of the this documentation.
+       * doc/manuals/libabigail-overview.rst: The overview of libabigail.
+       * doc/manuals/tools.rst: The root of the tools manuals.
+
+2014-09-26  Dodji Seketeli <dodji@redhat.com>
+
+       Do not install the abisym program
+       * tools/Makefile.am: Do not install abisym.  It's really there
+       just for testing purposes and is of almost no use for generic
+       users.
+
+2014-09-26  Dodji Seketeli <dodji@redhat.com>
+
+       Rename bi* tools to abi* tools
+       * tests/data/test-bidiff: Rename this directory to
+       tests/data/test-abidiff.
+       * tests/test-bidiff.cc: Renamed this to tests/test-abidiff.cc.
+       * tools/biar.cc: Renamed to tools/abiar.cc
+       * tools/bidiff.cc: Renamed to tools/abidiff.cc
+       * tools/bidw.cc: Renamed to tools/abidw.cc
+       * tools/bilint.cc: Renamed to tools/abilint.cc
+       * tools/bisym.cc: Renamed to tools/abisym.cc
+       * tests/test-alt-dwarf-file.cc: Renamed references to bidw* to abidw*.
+       * tests/test-diff-filter.cc: Renamed references to bidiff to abidiff.
+       * tests/test-lookup-syms.cc: Renamed references to bisym to abisym.
+       * tools/Makefile.am: Adjust.
+       * tests/Makefile.am: Likewise.
+
+2014-09-19  Dodji Seketeli <dodji@redhat.com>
+
+       Light cleanup in abg-corpus.cc
+       * src/abg-corpus.cc
+       (symtab_build_visitor_type::regex_fns_suppress): use
+       sptr_utils::build_sptr, rather than building the shared_ptr of
+       regex_t by hand.
+
+2014-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Pimplify abigail::comparison::diff type
+       * include/abg-comparison.h (diff::{priv, sptr}): New types.
+       (diff::priv_): New member.
+       (diff::*): Remove all the other previous data members and
+       transform the inline member function definition into declarations
+       only.
+       * src/abg-comparison.cc (class diff::priv): New private data type.
+       (diff::*): Define the previous inline member functions as
+       out-of-line here.
+
+2014-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Rename shared_ptr<regex_t> into regex_t_sptr
+       * include/abg-sptr-utils.h (build_sptr()): Rename the return type
+       from shared_ptr<regex_t> to regex_t_sptr.
+
+2014-09-19  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a comment in abg-comparison.h
+       * include/abg-comparison.h (class base_diff): Fix comment.
+
+2014-09-05  Dodji Seketeli <dodji@redhat.com>
+
+       Light style cleanup in tools/bidiff.cc
+       * tools/bidiff.cc (display_usage): Remove useless space before '&'.
+
+2014-09-05  Dodji Seketeli <dodji@redhat.com>
+
+       src/Makefile.am cleanup
+       * src/Makefile.am: Remove the unused 'headers' variable.
+
+2014-09-16  Dodji Seketeli <dodji@redhat.com>
+
+       Emit reports about not-yet categorized diff nodes
+       * include/abg-comparison.h (NO_CHANGE_CATEGORY): Better comment
+       this enumerator.
+       * src/abg-comparison.cc (diff::is_filtered_out): Not-yet
+       categorized changes are not filtered out anymore.
+       (distinct_diff::report): Avoid extraneous new line here.
+
+2014-09-16  Dodji Seketeli <dodji@redhat.com>
+
+       Better support for inline related diffs
+       * include/abg-comparison.h
+       (diff_category::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY): New
+       enumerator.
+       (diff_category::EVERYTHING_CATEGORY): Adjust.
+       * include/abg-ir.h (elf_symbol::get_aliases_id_string)
+       (elf_symbol::does_alias, elf_symbols_alias)
+       (compute_aliases_for_elf_symbol): Declare new functions ...
+       * src/abg-ir.cc (elf_symbol::get_aliases_id_string)
+       (elf_symbol::does_alias, elf_symbols_alias)
+       (compute_aliases_for_elf_symbol): ... and define them.
+       (function_decl::operator==): Take in account elf symbol aliases.
+       * src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
+       Define new static functions.
+       (harmless_filter::visit): Categorize function name changes that
+       n       doesn't impact underlying elf symbols (or the fact that two
+       symbols were aliases and are not anymore) as harmless.
+       * src/abg-comparison.cc (function_decl_diff::report): Properly
+       report function name changes, or symbol aliases changes for that
+       matter.  Also report inline-ness declaration changes.
+       * src/abg-dwarf-reader.cc (die_is_declared_inline): New static
+       function.
+       (build_function_decl): Use the above.
+       * tools/bidiff.cc (set_diff_context_from_opts): Add
+       abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY into the
+       harmless change camp.
+       * tests/data/test-diff-dwarf/test14-inline-report.txt: New test
+       input.
+       * tests/data/test-diff-dwarf/test14-inline-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test14-inline-v1.o: Likewise.
+       * tests/data/test-diff-dwarf/test14-inline-v0.cc: Source code for
+       test input.
+       * tests/data/test-diff-dwarf/test14-inline-v1.cc: Source code for
+       test input.
+       * tests/test-diff-dwarf.cc: Run this test harness over the new
+       input above.
+       * tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
+       * tests/data/test-diff-filter/test20-inline-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test20-inline-v0.o: New test input.
+       * tests/data/test-diff-filter/test20-inline-v1.o: New test input.
+       * tests/data/test-diff-filter/test20-inline-v0.cc: Source code for
+       test input.
+       * tests/data/test-diff-filter/test20-inline-v1.cc: Likewise.
+       * tests/test-diff-filter.cc: Run this test harness over the new
+       input above.
+
+2014-09-16  Dodji Seketeli <dodji@redhat.com>
+
+       Better support for enum diffs
+       * include/abg-comparison.h (changed_enumerator_type): New typedef.
+       (diff_category::{HARMLESS_ENUM_CHANGE_CATEGORY}): New enumerator.
+       * src/abg-comp-filter.cc (has_type_size_change)
+       (has_enumerator_insertion, has_enumerator_removal_or_change)
+       (has_harmful_enum_change): New functions.
+       (harmless_filter::visit): Categorize enumerator insertions that
+       don't change the size of the type into HARMLESS_ENUM_CHANGE_CATEGORY.
+       (harmful_filter::visit): Categorize enumerator removal or any enum
+       change that changes the size of the type into
+       SIZE_OR_OFFSET_CHANGE_CATEGORY.
+       * src/abg-comparison.cc (enumerator_value_comp)
+       (changed_enumerator_comp): New types.
+       (sort_enumerators, sort_changed_enumerators): New static
+       functions.
+       (enum_diff::report): Sort enum related reports by the value of the
+       enumerators.
+       * src/abg-dwarf-reader.cc (build_enum_type): Name anonymous enums
+       as __anonymous_enum__.
+       * tools/bidiff.cc (set_diff_context_from_opts): Add
+       abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY into the harmless
+       stuff camp.
+       * tests/data/test-diff-dwarf/test15-enum-report.txt: New test
+       input.
+       * tests/data/test-diff-dwarf/test15-enum-v1.o: Likewise.
+       * tests/data/test-diff-dwarf/test15-enum-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test15-enum-v0.cc: Source code for
+       test input.
+       * tests/data/test-diff-dwarf/test15-enum-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test19-enum-report-0.txt: New test input.
+       * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
+       * tests/data/test-diff-filter/test19-enum-v0.o: Likewise.
+       * tests/data/test-diff-filter/test19-enum-v1.o: Likewise.
+       * tests/data/test-diff-filter/test19-enum-v0.cc: Source code for
+       test input.
+       * tests/data/test-diff-filter/test19-enum-v1.cc: Likewise.
+       * tests/test-diff-dwarf.cc: Run this test harness on the new test
+       inputs above.
+       * tests/test-diff-filter.cc: Likewise.
+       * tests/Makefile.am: Add the new files above to the source distribution.
+
+2014-09-16  Dodji Seketeli <dodji@redhat.com>
+
+       Add constness to elf_symbol::operator==
+       * include/abg-ir.h (elf_symbol::operator==): Add a const to the
+       declaration ...
+       * src/abg-ir.cc (elf_symbol::operator==): ... and to the definition.
+
+2014-09-15  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style cleanups
+       * src/abg-comparison.cc (ChangedDataMemberComp): Rename this to
+       changed_data_member_comp
+       (sort_changed_data_members): Adjust.
+       (DataMemberComp): Rename this to data_member_comp.
+       (sort_data_members): Adjust.
+
+2014-09-15  Dodji Seketeli <dodji@redhat.com>
+
+       Constify some function parameters in abg-comp-filter.cc
+       * src/abg-comp-filter.cc (type_size_changed): Now take const
+       parameters.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Add .gitignore files.
+       * .gitignore: Add new file.
+       * m4/.gitignore: Likewise.
+       * tools/.gitignore: Likewise.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Place -L/-l flags into *_LIBADD/*_LDADD
+       * src/Makefile.am: -L and -l ought to be in LIBADD/LDADD because
+       that is the only place guaranteed to be in the right spot.  So add
+       Them to libabigail_la_LIBADD.
+       * tools/Makefile.am: Likewise.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Add libelf to libabigail.la's linker line
+       * configure.ac: Check for the existence of libelf at configure
+       time by looking at the presence of the elf_end symbol.  Add the
+       libelf to the link command line.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Drop hardcoded substitutions
+       * doc/Makefile.am: Do not use @docdir@.  It's indeed replaced at
+       configure time. But there is no need for this limitation with
+       automake, as $(docdir) is available and replaceable anytime.
+       * src/Makefile.am: Likewise for @DEPS_LIBS@ and @DEPS_CFLAGS@.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Replace indirect variable assignments
+       * configure.ac(DEVEL_CFLAGS, DEVEL_CXXFLAGS):  Remove these
+       useless variables.
+       (CFLAGS, CXXFLAGS): Set these variables directly.
+       * include/Makefile.am (pkginclude_HEADERS): Use this predefined
+       variable.
+       (publicheaders_DATA, publicheadersdir): Remove these.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Remove empty and autogenerated files from git repository
+       * ChangeLog: Remove this empty file for now.  It'll be added back
+       right before the first release by automatic generation from the
+       commit logs.
+       * INSTALL: Remove this empty file for now.
+       * NEWS: Remove this empty file for now.  It'll be added back right
+       before the first release.
+       * configure.ac (AM_INIT_AUTOMAKE): As the mandatory but empty
+       files above are being removed for now, let's put in the 'foreign'
+       mode of automake for the moment.  We'll likely remove it at
+       release time.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Set automake options globally
+       * configure.ac(AM_INIT_AUTOMAKE): Set the subdir-object option
+       here ..
+       * src/Makefile.am: ... not here.
+       * tests/Makefile.am: Likewise.
+       * tools/Makefile.am: Likewise.
+
+2014-09-09  Jan Engelhardt <jengelh@inai.de>
+
+       Stash some autogenerated tools in build-aux/
+       * configure.ac: Reduce the pollution in the top-level directory a
+       bit.
+
+2014-09-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix memory leaks due to cycles in types ownership
+       * include/abg-fwd.h (std::tr1::weak_ptr): Inject this type in the
+       abigail namespace.
+       * include/abg-ir.h: Write a memory management guideline for the IR
+       artifacts.
+       (Type_base_wptr, function_type_wptr)
+       (class_decl_wptr): New typedefs.
+       (translation_unit::get_canonical_function_type): Declare new
+       member function.
+       (qualified_type_def::underlying_type_)
+       (reference_type_def::pointed_to_type_)
+       (typedef_decl::underlying_type_, function_decl::parameter::type_)
+       (function_type::return_type_, method_type::class_type_)
+       (non_type_tparameter::type_, type_composition::type_): Make this a
+       weak pointer.
+       (qualified_type_def::get_pointed_to_type)
+       (reference_type_def::get_pointed_to_type)
+       (array_type::get_element_type, typedef_decl::get_underlying_type)
+       (var_decl::get_type, function_decl::parameter::get_type)
+       (function_type::get_return_type, method_type::get_class_type)
+       (non_type_tparameter::get_type)
+       (type_composition::get_composed_type): Adjust to make this return
+       a shared pointer initialized with the content of the weak pointer.
+       (function_decl::function_decl, method_decl::method_decl): Remove
+       the overload that doesn't take a type.  This is because now,
+       function types need to be registered to their containing
+       translation unit.
+       (struct function_type::hash): Declare here.
+       * src/abg-hash.cc (struct function_type::hash): Declare this in
+       abg-ir.h and just define the methods here.
+       * src/abg-ir.cc (fn_type_ptr_map): New typedef.
+       (translation_unit::priv::canonical_types_): Remove this unused
+       member.
+       (translation_unit::priv::canonical_function_types_): New member.
+       (translation_unit::get_canonical_function_type): Define this
+       function.
+       (array_type_def::priv::element_type_, var_decl::priv::type_)
+       (function_decl::priv::type_): Make this a weak pointer.
+       (qualified_type_def::get_underlying_type)
+       (pointer_type_def::get_pointed_to_type)
+       (reference_type_def::get_pointed_to_type)
+       (array_type_def::get_element_type)
+       (typedef_decl::get_underlying_type, var_decl::get_type)
+       (function_decl::get_type): Adjust to make this return a shared
+       pointer initialized with the content of the weak pointer.
+       (qualified_type_def::build_name)
+       (pointer_type_def::get_qualified_name)
+       (reference_type_def::get_qualified_name): Adjust.
+       (method_type::set_class_type): Cleanup the logic.
+       (function_decl::priv::priv): Remove the overload that takes a bare
+       pointer to a type.  This should not be used now that we need the
+       function type to registered with the translation unit.
+       (function_decl::function_decl): Remove the overload that doesn't
+       take a type.  This is because now, function types need to be
+       registered to their containing translation unit.
+       * src/abg-dwarf-reader.cc (build_function_decl): Register the
+       function type within its translation type and use its canonical
+       version.  This complies with the new memory management rules.
+       * src/abg-reader.cc (build_function_decl): Likewise.
+
+2014-09-10  Dodji Seketeli <dodji@redhat.com>
+
+       Compare class names when comparing methods
+       * src/abg-ir.cc:
+
+2014-09-10  Dodji Seketeli <dodji@redhat.com>
+
+       Slight white space fix
+       * src/abg-hash.cc (method_type::hash::operator()(const
+       method_type&)): White space fix.
+
+2014-09-10  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright notice
+       * include/abg-ir.h: Update year of copyright notice.
+
+2014-07-05  Ondrej Oprala <ooprala@redhat.com>
+
+       Unite help output for tools
+       * tools/biar.cc (std::ostream): Add a using directive.
+       (display_usage): Make it take a string reference and an ostream
+       as parameters. Use the ostream argument as an output stream
+       instead of a hard-coded cout.
+       Prettify output.
+       (main): Call display_usage with new parameters.
+       * tools/bidiff.cc (display_usage): Declare it static.
+       Prettify output.
+       * tools/bidw.cc (display_usage): Prettify output.
+       * tools/bilint.cc (display_usage): Declare it static.
+       Prettify output.
+       * tools/bisym.cc (std::cerr): Add a using directive.
+       (prog_name): Rename progname into this.
+       (display_usage): Rename show_help into this.
+       Add an ostream as a parameter. Use the ostream argument
+       as output stream insted of a hard-coded cout.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       Adjust copyright year
+       * tests/test-diff-dwarf.cc: Adjust year in copyright notice.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       Sort reported changed data members by increasing offset
+       * include/abg-comparison.h (changed_type_or_decl_vector): New
+       typedef.
+       * include/abg-fwd.h (is_data_member): Change the overload that
+       takes a decl_base_sptr to make it return the real var_decl_sptr
+       rather than just a bool.
+       * src/abg-comparison.cc (ChangedDataMemberComp, DataMemberComp):
+       New comparison functors.
+       (sort_changed_data_members, sort_data_members): Sorting functions
+       for changed data members and data members.
+       (class_diff::report): Sort reports for deleted, inserted and
+       change data members by the increasing value of the offsets of said
+       data members.
+       * src/abg-ir.cc (is_data_member): Change the overload that takes a
+       decl_base_sptr to make it return the real var_decl_sptr rather
+       than just a bool.
+       * tests/data/test-bidiff/test-struct1-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test13-report.txt: New test input.
+       * tests/data/test-diff-dwarf/test13-v0.cc: Source code for new
+       test input.
+       * tests/data/test-diff-dwarf/test13-v0.o: New test input.
+       * tests/data/test-diff-dwarf/test13-v1.cc: Source code for new
+       test input.
+       * tests/data/test-diff-dwarf/test13-v1.o: New test input.
+       * tests/Makefile.am: Add the new test inputs above to the source
+       distribution.
+       * tests/test-diff-dwarf.cc: Run this test harness on the new test
+       input.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       Do not filter out diff nodes that are only in NOT_REDUNDANT_CATEGORY
+       * src/abg-comparison.cc (diff::is_filtered_out): If a diff not is
+       only in the NOT_REDUNDANT_CATEGORY category consider it as not
+       being filtered.
+       * tests/data/test-diff-filter/test18-report.txt: New test input.
+       * tests/data/test-diff-filter/test18-v0.cc: Source code for new
+       test input.
+       * tests/data/test-diff-filter/test18-v0.o: New test input.
+       * tests/data/test-diff-filter/test18-v1.cc: Source code for new
+       test input.
+       * tests/data/test-diff-filter/test18-v1.o: New test input.
+       * tests/Makefile.am: Add the new test inputs to the source distribution.
+       * tests/test-diff-filter.cc: Run this test harness on the new test
+       input above.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       White space cleanup
+       * src/abg-ir.cc (get_data_member_offset): Remove useless
+       horizontal white space.
+
+2014-09-03  Dodji Seketeli <dodji@redhat.com>
+
+       Add some comments in the comparison engine
+       * src/abg-comparison.cc: Add a comment for the file.
+       (struct class_diff::priv::{subtype_changed_dm_,changed_dm_}): Add
+       comment for these data members.
+
+2014-09-02  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless new line from comparison engine's report
+       * src/abg-comparison.cc (class_diff::report):  Do not emit new
+       lines after reporting about inserted data members.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
+       * tests/data/test-bidiff/test-struct0-report.txt: Adjust.
+       * tests/data/test-bidiff/test-struct1-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test1-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test3-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test7-report.txt: Adjust.
+       * tests/data/test-diff-filter/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test01-report.txt: Adjust.
+       * tests/data/test-diff-filter/test1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test11-report.txt: Adjust.
+       * tests/data/test-diff-filter/test14-0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test14-1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test15-0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test15-1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test16-report.txt: Adjust.
+       * tests/data/test-diff-filter/test17-0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test17-1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test2-report.txt: Adjust.
+       * tests/data/test-diff-filter/test3-report.txt: Adjust.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+
+2014-09-01  Dodji Seketeli <dodji@redhat.com>
+
+       Adjust copyright years
+       * src/abg-corpus.cc: Adjust copyright years.
+       * src/abg-libzip-utils.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2014-09-01  Dodji Seketeli <dodji@redhat.com>
+
+       Factorize basic redundancy detection in diff report
+       * src/abg-comparison.cc
+       (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
+       (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER{2,3}): New
+       macros.
+       ({pointer_diff, array_diff, reference_diff, qualified_type_diff,
+       class_diff, typedef_diff}::report): Use the new macros above.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust
+       because type pretty representation are now always quoted.
+       * tests/data/test-bidiff/test-struct1-report.txt: Adjust likewise.
+
+2014-08-31  Dodji Seketeli <dodji@redhat.com>
+
+       Display package configuration at the end of configure
+       * configure.ac: Display the configure of the package at the end of
+       the configure script.
+
+2014-08-31  Dodji Seketeli <dodji@redhat.com>
+
+       Make zip archive support optional
+       * configure.ac: Support a new --enable-zip-archive option.  By
+       default its value is set to the 'auto', meaning that if libzip is
+       installed, that turns the option on -- just like if
+       --enable-zip-archive was called with the value 'yes'; if libzip is
+       not installed, that turns the option off -- just like if
+       --enable-zip-archive was called with the value 'no'.  If libzip is
+       detected, the pre-processor macro HAVE_LIBZIP is set to 1.  If
+       --enable-zip-archive is turned on, the pre-processor macro
+       WITH_ZIP_ARCHIVE is set to 1.
+       * config.h.in (HAVE_LIBZIP, WITH_ZIP): New define.
+       * src/abg-corpus.cc: Include config.h.  Guard the inclusion of
+       abg-libzip-utils.h with the WITH_ZIP_ARCHIVE macro.  Likewise for
+       the use of declarations coming from abg-libzip-utils.h.
+       * src/abg-libzip-utils.cc: Include config.h.  Guard the file's
+       content with the WITH_ZIP_ARCHIVE macro.
+       * src/abg-reader.cc: Include config.h.  Guard the inclusion of
+       abg-libzip-utils.h with the WITH_ZIP_ARCHIVE.  Likewise for the
+       use of declarations coming from abg-libzip-utils.h.
+       * src/abg-writer.cc: Likewise.
+       * tests/Makefile.am: Build runtestwritereadarchive and runtestdot
+       only if zip archives are supported.
+       * tools/Makefile.am: The biar program is built only if
+       zip archives are supported.
+       * tools/bidiff.cc: Handle zip archives only if the
+       WITH_ZIP_ARCHIVE macros is defined.
+       * tools/bilint.cc: Likewise.
+
+2014-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       Tell bidiff --help, wrong options and missing argument apart
+       * tools/bidiff.cc (options::{display_usage,missing_operand}): New
+       data members.
+       (options::options): Initialize them.
+       (parse_command_line):  Flag missing operands.  Return false only
+       when an option could not be parsed.  Flag when the user wants us
+       to display help.
+       (main): Tell --help, wrong options and missing argument apart and
+       give an appropriate message on stderr.  The help string goes to
+       stdout though.  Just like what GNU diff does.
+
+2014-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       In bidiff, don't emit a report when the binaries have the same ABI
+       * tools/bidiff.cc (main): For differences of zero length, do not
+       emit any report.
+
+2014-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Take variables in account in corpus changes detection
+       * src/abg-comparison.cc (corpus_diff::length): Take changes about
+       variables into account.
+
+2014-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       During redundancy marking start with the current node as non redundant
+       * src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE):  If the
+       diff node is being traversed for the first time, mark it as being
+       in the NOT_REDUNDANT_CATEGORY.  I don't know why I was doing this
+       only for classes and basic types.  Update comments.
+       * tests/data/test-diff-filter/test16-report.txt: New test input.
+       * tests/data/test-diff-filter/test16-v0.cc: Source code of new
+       test input.
+       * tests/data/test-diff-filter/test16-v0.o: New test input.
+       * tests/data/test-diff-filter/test16-v1.cc: Source code of new
+       test input.
+       * tests/data/test-diff-filter/test16-v1.o: New test input.
+       * tests/data/test-diff-filter/test17-0-report.txt: Likewise.
+       * tests/data/test-diff-filter/test17-1-report.txt: Likewise.
+       * tests/data/test-diff-filter/test17-v0.cc: Source code of new
+       test input.
+       * tests/data/test-diff-filter/test17-v0.o: Likewise.
+       * tests/data/test-diff-filter/test17-v1.cc: Source code of new
+       test input.
+       * tests/data/test-diff-filter/test17-v1.o: Likewise.
+       * tests/Makefile.am: Add the new files to the source distribution.
+       * tests/test-diff-filter.cc (in_out_spec): Run this test harness
+       over the new test inputs.
+
+2014-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       Give anonymous struct the name "__anonymous_struct__"
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Set
+       the name of anonymous structs to '__anonymous_struct_'.
+
+2014-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       Style fix in the comparison engine
+       * src/abg-comparison.cc (represent): Remove useless white space.
+
+2014-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       In bidiff, change --no-linkage-names to --no-linkage-name
+       * tools/bidiff.cc (display_usage): Change--no-linkage-names -o
+       --no-linkage-name in the help string.
+       (parse_command_line): Adjust the command line parsing accordingly.
+       * tests/test-diff-filter.cc (in_out_specs): Adjust.
+
+2014-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       In diff reports, show symbol version info in linkage names
+       * src/abg-comparison.cc (represent, corpus_diff::report): show
+       symbol version info in linkage name info.
+
+2014-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       In diff reports, fns & members add/remove at the top, changes later.
+       * src/abg-comparison.cc (class_diff::report): Put virtual member
+       function adding/removal/change first, then data members
+       add/removal, then the rest (including data members changes).
+       (corpus_diff::report): Put function adding/removal first, then
+       function changes.  Likewise for variables.
+       * tests/data/test-bidiff/test-struct0-report.txt: Adjust.
+       * tests/data/test-bidiff/test-struct1-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test1-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test12-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test8-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test9-report.txt: Adjust.
+       * tests/data/test-diff-filter/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test01-report.txt: Adjust.
+       * tests/data/test-diff-filter/test1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test13-report.txt: Adjust.
+       * tests/data/test-diff-filter/test2-report.txt: Adjust.
+       * tests/data/test-diff-filter/test3-report.txt: Adjust.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+
+2014-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Consider symbol versions' public-ness during comparison
+       * src/abg-ir.cc (elf_symbol::operator==): Rather than comparing
+       bindings, compare public-ness here.  That is, if two symbol
+       versions' differ because one is GLOBAL and the other one is WEAK,
+       they should still be considered equal, from an ABI standpoint.
+
+2014-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Lookup proper names of symbol during determination of deleted/added decls
+       * src/abg-comparison.cc
+       ({class,corpus}_diff::ensure_lookup_tables_populated):  Now that in the
+       intermediate maps we store symbol *ids* rather than symbol names,
+       make sure to really refer to symbol names for symbol lookups,
+       rather than (wrongly) referring to symbol ids.
+
+2014-08-26  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup bidiff help string some more
+       * tools/bidiff.cc (display_usage): Add help strings for --harmless
+       and --no-harmful.
+       (main): Emit the help string to stdout, not stderr.
+
+2014-08-26  Dodji Seketeli <dodji@redhat.com>
+
+       bidiff --no-harmless is no more
+       * tools/bidiff.cc (display_usage): Remove the help string for the
+       --no-harmless option that doesn't exist anymore, as it's on by
+       default.
+
+2014-08-26  Dodji Seketeli <dodji@redhat.com>
+
+       During comparison use symbol name + version as decl ID
+       * include/abg-ir.h ({var,function}_decl::get_id): New member
+       function declarations.
+       * src/abg-ir.cc ({var,function}_decl::get_id): New member function
+       definitions.
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): Use the
+       ::get_id() function to get an identifier for the function or
+       variable.
+       * src/abg-corpus.cc (symtab_build_visitor_type::build_id): Use the
+       get_id of the function/variable.
+
+2014-08-26  Dodji Seketeli <dodji@redhat.com>
+
+       Fix access to alternate die -> decl map
+       * src/abg-dwarf-reader.cc (read_context::alternate_die_decl_map):
+       Return the real alternate die decl map, rather than what we was
+       doing previously b/c of a stupid copy/paste.  Oh well.
+
+2014-08-25  Dodji Seketeli <dodji@redhat.com>
+
+       Take symbol versions in account when computing added/removed decls
+       * include/abg-corpus.h
+       (corpus::lookup_{function,variable}_symbol): Add an overload
+       declaration that takes the version of the symbol to lookup.
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): So when looking
+       up the corpora for symbols, take their versions in account.
+       * src/abg-corpus.cc (corpus::lookup_{function,variable}_symbol):
+       Add an overload definition that takes the version of the symbol to
+       lookup.
+       (symtab_build_visitor_type::build_id): New
+       member functions.
+       (corpus::priv::build_public_decl_table): Use the new member
+       functions above.
+       * src/abg-ir.cc (elf_symbol::version::operator==): Do not take the
+       is_default flag in account when comparing two symbol versions.
+       * libtest12-v{0,1}.so: New test input files.
+       * libtest12-v{0,1}.c: Source code for the test input files.
+       * test12-version-script: Version script to build the files above.
+       * test12-report.txt: Test input file.
+       * tests/Makefile.am: Add the new test input files above to the
+       source distribution.
+       * tests/test-diff-dwarf.cc (in_out_specs[]): Add an entry to this
+       table for the new test input files.
+
+2014-08-25  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style cleanups
+       * include/abg-corpus.h (corpus::lookup_function_symbol)
+       (corpus::lookup_variable_symbol): Add the name of the function
+       parameter in the declaration.
+       * include/abg-ir.h (elf_symbol::version::version): Properly indent
+       this constructor declaration.
+       * src/abg-corpus.cc
+       (symtab_build_visitor_type::symtab_build_visitor_type): Properly
+       indent constructor parameters.
+       * src/abg-ir.cc (function_decl::operator==): Fix typo in
+       comments.
+
+2014-08-25  Dodji Seketeli <dodji@redhat.com>
+
+       bidiff --harmful is not supported anymore
+       * tools/bidiff.cc (display_usage): remove the '--harmful' line
+       from the help string as this option is now activated by default.
+       It's --harmless that exists now.
+
+2014-08-22  Dodji Seketeli <dodji@redhat.com>
+
+       A builtin type name change is not harmless - fix that
+       * include/abg-comp-filter.h (has_harmless_name_change): New
+       function declaration.
+       * include/abg-comparison.h
+       (diff_category::DECL_NAME_CHANGE_CATEGORY): Renamed this into
+       HARMLESS_DECL_NAME_CHANGE_CATEGORY.
+       (diff_category::EVERYTHING_CATEGORY): Update.
+       * include/abg-fwd.h (is_enum): New function declaration.
+       (is_var_decl): Return the shared_ptr<var_decl> rather than a bool.
+       (is_data_member): New overload that takes a shared_ptr<decl_base>.
+       * src/abg-comp-filter.cc (decl_name_changed): Consider the
+       qualified name here.
+       (has_harmless_name_change): Define new function declaration.
+       (harmless_filter::visit): Use the new has_harmless_name_change
+       function.
+       * src/abg-comparison.cc (represent)
+       (report_name_size_and_alignment_changes, enum_diff::report)
+       (typedef_diff::report, is_data_member): Use the new
+       filtering::has_harmless_name_change function to simplify logic of
+       emitting the name change related diff
+       * tools/bidiff.cc (set_diff_context_from_opts): Adjust
+       DECL_NAME_CHANGE_CATEGORY -> HARMLESS_DECL_NAME_CHANGE_CATEGORY.
+       * src/abg-ir.cc (is_data_member, is_enum): New function definitions.
+       (is_var_decl): Return the var_decl_sptr rather than just a bool.
+       * tests/data/test-diff-filter/test13-report.txt: Adjust.
+       * tests/data/test-diff-filter/test6-report.txt: Adjust.
+
+2014-08-18  Ondrej Oprala <ooprala@redhat.com>
+
+       Support C and C++ array type.
+       * include/abg-comparison.h (array_diff): Declare new class.
+       (array_diff_sptr): Shared pointer to type array_diff.
+       (compute_diff): Overload the function to take type
+       array_diff_sptr as the first two arguments.
+       * include/abg-fwd.h (array_type_def): Declare new class.
+       (subrange_type): Likewise.
+       (is_array_def): Declare new function.
+       * include/abg-ir.h (array_type_def_sptr): Shared pointer
+       to type array_type_def.
+       (array_type_def): Declare new class.
+       (ir_node_visitor::visit): Declare a new virtual function
+       taking a pointer to type array_type_def as an argument.
+       * src/abg-comparison.cc (compute_diff_for_types): Add
+       try_to_diff for two instances of type array_type_def.
+       (array_diff::priv): declare struct for holding private members
+       of type array_diff.
+       (array_diff::array_diff): Define constructor.
+       (array_diff::{first,second}_array):Define new
+       member functions.
+       (array_diff::element_type_diff): Likewise.
+       (array_diff::{length,report,traverse}): Likewise.
+       (compute_diff): Define function overloaded in
+       include/abg-comparison.h.
+       * src/abg-dwarf-reader.cc (build_array_type): Define new
+       function. Handle DW_TAG_array_type and DW_TAG_subrange type.
+       (build_ir_node_from_die): Amend case DW_TAG_array_type with
+       a call to build_array_type.
+       * src/abg-hash.cc (array_type_def::hash): Declare new struct.
+       (type_base::dynamic_hash::operator()): Attempt to dynamic_cast
+       the argument to type array_type_def as well.
+       (array_type_def::hash): Declare new struct.
+       * src/abg-ir.cc (array_type_def::array_type_def): Define
+       constructors.
+       (array_type_def::priv): declare struct for holding private members
+       of type array_type_def.
+       (array_type_def::operator==(const decl_base&):
+       Define new operator.
+       (array_type_def::operator==(const type_base&):
+       Likewise.
+       (array_type_def::append_subrange{,s}): Define
+       new functions.
+       (array_type_def::{set,get}_size_in_bits): Likewise.
+       (array_type_def::get_dimension_count): Likewise.
+       (array_type_def::get_qualified_name): Likewise.
+       (array_type_def::get_pretty_representation): Likewise.
+       (array_type_def::get_subrange_representation): Likewise.
+       (array_type_def::traverse): Likewise.
+       (array_type_def::get_{element_type,location,subranges}): Likewise.
+       (array_type_def::is_infinite): Likewise.
+       (array_type_def::~array_type_def): Define destructor.
+       (ir_node_visitor::visit): Define function, taking
+       pointer to array_type_def as an argument.
+       * src/abg-reader.cc (map_id_and_node): Check if node
+       is an array.
+       (is_array_def): Check if object is an array.
+       (handle_element_node): Handle array_type_def as well.
+       (build_subrange_type): Define new function.
+       (build_array_type_def): Likewise.
+       (build_type): Build type array_type_def as well.
+       (build_type_composition): Likewise.
+       (handle_array_type_def): Define new function.
+       * src/abg-writer.cc: (write_decl): Output arrays
+       as well.
+       (write_member_type): Likewise.
+       (write_type_composition): Likewise.
+       (write_array_type_def): Define new function.
+       * tests/data/test-diff-dwarf/test{10,11}-v{0,1}.{cc,o}: New test source
+       files
+       * tests/data/test-diff-dwarf/test{10,11}-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test10-report.txt: New test input.
+       * tests/data/test-read-dwarf/test7.cc: New test source
+       file.
+       * tests/data/test-read-dwarf/test7.so: New input binary
+       to read.
+       * tests/data/test-read-dwarf/test7.so.abi: New reference
+       test to compare against.
+       * tests/data/test-read-write/test25.xml: New test source
+       file.
+       * tests/test-diff-dwarf.cc: Adjust to launch the new test.
+       * tests/test-read-dwarf.cc: Likewise.
+       * tests/test-read-write.cc: Likewise.
+       * test/Makefile.am: Add the new test inputs to the source
+       distribution.
+
+2014-08-19  Dodji Seketeli <dodji@redhat.com>
+
+       Ignore variables which type couldn't be read from DWARF
+       * src/abg-dwarf-reader.cc (build_var_decl): Drop the var on the
+       floor if its type couldn't be built.
+
+2014-08-19  Dodji Seketeli <dodji@redhat.com>
+
+       Support TLS variables
+       * src/abg-ir.cc (elf_symbol::is_variable): Accept TLS objects as
+       variables too.
+       * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr)
+       (die_location_address): Add an output parameter to say if the
+       resulting constant value is a tls address or not.
+       (lookup_public_variable_symbol_from_elf): Use the proper
+       elf_symbol::is_variable() method, rather than trying to figure out
+       the low levels of what a variable is here.  Also, cleanup the
+       condition.
+       (read_context::load_symbol_maps): Consider symbols of type
+       STT_TLS, when loading symbols for variables.  Also, to avoir
+       symbols that are for versions, filter out symbols of type
+       STT_OBJECT and with a SHN_ABS section index.
+       (read_context::get_variable_address): If the address is for a tls
+       variable, do no try to adjust the address to arrange for things
+       like prelink.  As that doesn't seem to affect TLS variables.
+       (dwarf_expr_eval_context::set_tls_addr): New data member.
+       (dwarf_expr_eval_context::dwarf_expr_eval_context): Initialize it.
+       (dwarf_expr_eval_context::set_tls_address): New accessors.
+       (dwarf_expr_eval_context::op_manipulates_stack): Handle
+       DW_OP_GNU_push_tls_address, a bit like DW_OP_form_tls_address, but
+       then, its result is a constant.  Set the
+       dwarf_expr_eval_context::set_tls_addr flag when these two OPs are
+       run.
+       (die_member_offset): Adjust to the new signature of
+       eval_last_constant_dwarf_sub_expr.
+       * tests/data/test-diff-dwarf/libtest9-v0.so: New test input.
+       * tests/data/test-diff-dwarf/libtest9-v1.so: Likewise.
+       * tests/data/test-diff-dwarf/test9-report.txt: Likewise
+       * tests/data/test-diff-dwarf/test9-v0.cc: Source code for the
+       first input.
+       * tests/data/test-diff-dwarf/test9-v1.cc: Source code for the
+       second input.
+       * tests/test-diff-dwarf.cc: Run this harness on the two new inputs
+       above.
+       * tests/Makefile.am: Add the new inputs to the source distribution.
+
+2014-08-18  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright for abg-dwarf-reader.cc
+       * src/abg-dwarf-reader.cc: Update copyright year.
+
+2014-08-18  Dodji Seketeli <dodji@redhat.com>
+
+       Make the link to the alt debug info file relative
+       * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
+       Make this link be relative.
+
+2014-08-15  Dodji Seketeli <dodji@redhat.com>
+
+       White space fix
+       * tests/test-lookup-syms.cc: Remove useless white space.
+
+2014-08-15  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright notice
+       * tests/test-lookup-syms.cc: Update year in copyright notice.
+       * tools/bidw.cc: Likewise.
+
+2014-08-15  Dodji Seketeli <dodji@redhat.com>
+
+       Support alternate debug info sections
+       * include/abg-dwarf-reader.h (class read_context)
+       (typedef read_context_sptr, create_read_context)
+       (has_alt_debug_info): Declare these.
+       (read_corpus_from_elf): Declare new overload.
+       * src/abg-dwarf-reader.cc (find_alt_debug_info)
+       (is_die_attribute_resolved_through_gnu_ref_alt)
+       (build_primary_die_parent_relations_under)
+       (build_alternate_die_parent_relations_under):
+       Define new static functions.
+       (read_context::{alt_dwarf_,
+       alt_debug_info_path_, alternate_die_decl_map_,
+       alternate_die_parent_map_}): New data members.
+       (read_context::{alt_dwarf, alt_debug_info_path,
+       alternate_die_decl_map, associate_die_to_decl_primary,
+       associate_die_to_decl_alternate, associate_die_to_decl,
+       lookup_decl_from_die_offset_primary,
+       lookup_decl_from_die_offset_alternate,
+       lookup_decl_from_die_offset, alternate_die_parent_map}): New
+       member functions.
+       (read_context::load_debug_info): Painfully Get a handle on the
+       alternate debug info section too.  We shouldn't have to do all
+       this work; we could use the new dwarf_getalt() function from
+       libdw, but we cannot as we want to support supports that predate
+       that api.  When a version of elfutils gets released with that api
+       though, we should conditionally use that instead.
+       (build_ir_node_from_die, get_parent_die, get_scope_for_die)
+       (build_namespace_decl_and_add_to_ir)
+       (build_class_type_and_add_to_ir, build_qualified_type)
+       (build_pointer_type_def, build_reference_type, build_typedef_type)
+       (build_var_decl, build_function_decl): Take a new parameter that
+       tells if the input DIE is from alternate debug info.  Adjust their
+       code accordingly.
+       (die_die_attribute): Take a new output parameter that tells if the
+       resolved DIE is from alternate debug info.  Also take a new
+       parameter that tells if the input DIE is from alternate debug info
+       sections.
+       (build_die_parent_relations_under): Take the DIE -> parent map to
+       act upon.  Also, add a new overload that takes a flag saying if
+       the DIE is from alternate debug info or not, and act upon that.
+       (build_die_parent_maps): Renamed build_die_parent_map into this
+       and make it build DIE -> parent DIE relationship for the alternate
+       debug info file as well.
+       (find_last_import_unit_point_before_die, ): Adjust to use the
+       information about if the relevant DIEs are in alternate debug info
+       or not.
+       (build_translation_unit_and_add_to_ir): Clear the alternate DIE ->
+       decl map, that is per TU just as the primary DIE -> decl map.
+       Adjust to use the information about if the relevant DIEs are in
+       alternate debug info or not.
+       (read_debug_info_into_corpus): Build the two DIE -> DIE parent
+       maps (one for the primary debug info and one for the alternate
+       debug info).
+       (create_read_context, has_alt_debug_info): Define new public entry
+       points.
+       (read_corpus_from_elf): New entry point overload that takes a
+       read_context.
+       * tools/bidw.cc (options::{check_alt_debug_info_path,
+       show_base_name_alt_debug_info_path}): New data members.
+       (display_usage): Update for the two new options
+       --check-alternate-debug-info and
+       check-alternate-debug-info-base-name.
+       (parse_command_line): Parse the two options above.
+       (main) Handle the two new options above.
+       * tests/Makefile.am: Build the new runtestaltdwarf test.  Add the
+       new data/test-alt-dwarf-file/* files to the build system.
+       * tests/test-alt-dwarf-file.cc: New test driver.
+       * tests/data/test-alt-dwarf-file/test0-common.cc: New test input
+       files.
+       * tests/data/test-alt-dwarf-file/libtest0-common.so: Likewise.
+       * tests/data/test-alt-dwarf-file/test0.cc: Likewise.
+       * tests/data/test-alt-dwarf-file/libtest0.so: Likewise.
+       * tests/data/test-alt-dwarf-file/test0.h: Likewise.
+       * tests/data/test-alt-dwarf-file/test0-common-dwz.debug: Likewise.
+       * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
+       Likewise.
+       * tests/data/test-alt-dwarf-file/test0-debug-dir/test0-common-dwz.debug:
+       Likewise.
+       * tests/data/test-read-dwarf/test1.abi: Adjust. bidw doesn't emit
+       an abstract constructor/destructor anymore. It emits just the
+       functions matching the cdtor symbols found in the binary.
+       * tests/data/test-read-dwarf/test2.so.abi: Likewise.
+
+2014-07-26  Dodji Seketeli <dodji@redhat.com>
+
+       Better handle corner cases of void* DWARF parsing
+       * src/abg-dwarf-reader.cc (build_pointer_type_def):  Better
+       support cases where the underlying type of the pointer is not
+       know.  In that case, the pointer should not be created.
+
+2014-07-20  Dodji Seketeli <dodji@redhat.com>
+
+       Support finding symbols with bias wrt DWARF references
+       * src/abg-dwarf-reader.cc (get_binary_load_address): New function
+       definition.
+       (read_context::elf_handle): Add comment.
+       (read_context::{dwarf_elf_handle, dwarf_is_splitted,
+       maybe_adjust_address_for_exec_or_dyn}): New method definitions.
+       (maybe_adjust_fn_sym_address)
+       (maybe_adjust_var_sym_address): Move these so they become members
+       of read_context.  Also, For shared libraries and executable (that
+       could have been e.g prelinked), consider their loading address
+       when trying to find which symbol resides at a given place in
+       memory.
+       (read_context::{get_function_address, get_variable_address):
+       Adjust.
+       (build_translation_unit_and_add_to_ir): Fix comment.
+
+2014-07-20  Dodji Seketeli <dodji@redhat.com>
+
+       Reset the scope of void_type_decl for each new translation unit
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
+       Clear the void_type_decl on new translation units.
+
+2014-07-18  Dodji Seketeli <dodji@redhat.com>
+
+       Update INSTALL file
+       * INSTALL: Adjust the copyright year information because autotools
+       2.69 did.
+
+2014-07-18  Dodji Seketeli <dodji@redhat.com>
+
+       Correctly write the name of a const reference type
+       * src/abg-dwarf-reader.cc (maybe_strip_qualification): Define new
+       function.
+       (build_ir_node_from_die): Use the maybe_strip_qualification when
+       building a qualified type.
+       * src/abg-ir.cc (qualified_type_def::build_name): Fix the
+       representation of the name of a reference that is const.
+       * tests/data/test-read-dwarf/test1.abi: Adjust.
+       * tests/data/test-diff-dwarf/test0-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test1-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test6-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test7-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test8-report.txt: Likewise.
+       * tests/data/test-diff-filter/test0-report.txt: Likewise.
+       * tests/data/test-diff-filter/test01-report.txt: Likewise.
+       * tests/data/test-diff-filter/test2-report.txt: Likewise.
+       * tests/data/test-diff-filter/test3-report.txt: Likewise.
+       * tests/data/test-diff-filter/test9-report.txt: Likewise.
+       * tests/data/test-diff-filter/test10-report.txt: Likewise.
+       * tests/data/test-diff-filter/test13-report.txt: Likewise.
+       * tests/data/test-diff-filter/test14-0-report.txt: Likewise.
+       * tests/data/test-diff-filter/test14-1-report.txt: Likewise.
+
+2014-07-01  Sinny Kumari <skumari@redhat.com>
+
+       Consider symbols with STB_GNU_UNIQUE binding as public
+       * src/abg-ir.cc (is_public): Change in function to consider
+       symbols with STB_GNU_UNIQUE binding as public
+       * tests/data/test-read-dwarf/test6.cc: Test file to generate
+       STB_GNU_UNIQUE binding symbols
+       * tests/data/test-read-dwarf/test6.so: Test shared library having
+       STB_GNU_UNIQUE binding symbols
+       * tests/data/test-read-dwarf/test6.so.abi: XML file containing
+       dwarf information from test6.so
+       * tests/test-read-dwarf.cc (in_out_specs): Add the new test above
+       * tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
+       tests/data/test-read-dwarf/test6.so and
+       tests/data/test-read-dwarf/test6.so.abi to the distribution
+
+2014-07-01  Dodji Seketeli <dodji@redhat.com>
+
+       Add comment to test-read-write.cc
+       * tests/test-read-write.cc: Update copyright notice and add a
+       meaningful comment for the file.
+
+2014-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       Support reading void* type from DWARF
+       * include/abg-ir.h (type_decl::get_void_type_decl): Declare new
+       static method.
+       * src/abg-ir.cc (type_decl::get_void_type_decl): Define it.
+       * src/abg-dwarf-reader.cc (build_ir_node_for_void_type): Define
+       new static function.
+       (build_pointer_type_def): Support void* type nodes here.
+       * tests/data/test-read-dwarf/test5.cc: Source code for new test
+       input.
+       * tests/data/test-read-dwarf/test5.o: New test input.
+       * tests/data/test-read-dwarf/test5.o.abi: Likewise.
+       * tests/Makefile.am: Add the above to the source distribution.
+
+2014-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       Update a comment in abg-dwarf-reader.cc
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): Update a
+       comment here.
+
+2014-06-23  Mark Wielaard <mjw@redhat.com>
+
+       Handle C99 restrict qualifier and DWARFv3 DW_TAG_restrict_type.
+       * src/abg-dwarf-reader.cc (build_qualified_type): Handle
+       DW_TAG_restrict_type by adding CV_RESTRICT.
+       (build_ir_node_from_die): Call build_qualified_type for
+       DW_TAG_restrict_type.
+       * src/abg-reader.cc (build_qualified_type_decl): Handle
+       "restrict" attribute by adding CV_RESTRICT.
+       * src/abg-writer.cc (write_qualified_type_def): Output
+       "restrict" attribute for CV_RESTRICT.
+       * tests/data/test-read-dwarf/test4.c: New test file.
+       * tests/data/test-read-dwarf/test4.so: Likewise.
+       * tests/data/test-read-dwarf/test4.so.abi: Likewise.
+       * tests/data/test-read-write/test24.xml: Likewise.
+       * tests/test-read-dwarf.cc (in_out_specs): Add test4.
+       * tests/test-read-write.cc (in_out_specs): Add test24.xml.
+
+2014-06-23  Dodji Seketeli <dodji@seketeli.org>
+
+       Add subdir-objects automake option where it is needed
+       * src/Makefile.am: Add the subdir-object automake option here.
+       Do not specify absolute paths for the input files as Automake now
+       takes care of that just fine.
+       * tests/Makefile.am: Likewise.
+       * tools/Makefile.am: Likewise.
+
+2014-06-23  Dodji Seketeli <dodji@seketeli.org>
+
+       Remove autotools artifacts from the repository
+       * config.guess: Remove from revision control system.
+       * config.sub: Likewise.
+       * depcomp: Likewise.
+       * m4/libtool.m4: Likewise.
+       * missing: Likewise.
+
+2014-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid reporting diff nodes that have already been reported
+       * include/abg-comp-filter.h (class harmful_filter): Update
+       comment.
+       (class redundant_filter): Declare new filter.
+       * include/abg-comparison.h (enum
+       diff_category::NOT_REDUNDANT_CATEGORY): New category.  Update the
+       values of the other enumerators.
+       (diff_context::{add_diff, diff_has_been_traversed}): New overloads.
+       (diff_context::{categorizing_redundancy, show_redundant_changes}):
+       Declare new methods.
+       (diff_context::remove_from_category): Define new inline method.
+       * src/abg-comparison.cc (noop_deleter::operator()): Constify the
+       parameter.
+       (CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
+       (UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE): New macros.
+       (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): Use the new
+       CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE and
+       UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE macros above.
+       (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
+       (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): If the (type_decl or class)
+       node hasn't been yet traversed, mark it as non-redundant.
+       (diff_context::priv::categorizing_redundancy): New member.
+       (diff_context::priv::priv): Initialize it.
+       (diff_context::{add_diff, diff_has_been_traversed): Define new
+       overloads.
+       (diff_context::mark_diff_as_traversed): Intern a diff node that is
+       marked as being traversed.
+       (diff_context::{categorizing_redundancy, show_redundant_changes}):
+       Define new methods.
+       (diff::is_filtered_out): A redundant function or top-level
+       variable is considered filtered-out.  Otherwise, the new
+       NOT_REDUNDANT_CATEGORY doesn't play any role when comparing
+       allowed categories with the set of categories a diff node belongs
+       to.
+       (corpus::priv::categorize_redundant_changed_sub_nodes): Define
+       new member function.
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats): Change
+       this to first walk the changed functions and variables to apply
+       filters, then categorize redundant changed functions, and then
+       walk the changed functions and variables again to count
+       filtered-out diff nodes.
+       (filtering::redundant_filter::visit): Define new member function.
+       * tools/bidiff.cc (options::show_redundant_changes): New data
+       member.
+       (options::options): Initialize it.
+       (display_usage): Add help string for the --redundant command line
+       option.
+       (parse_command_line): Add support for the --redundant command line
+       option.
+       (set_diff_context_from_opts): Take the --redundant command line
+       option in account.
+       * tests/test-diff-filter.cc: Update this to add new test inputs.
+       * tests/data/test-diff-filter/test14-0-report.txt: New test input.
+       * tests/data/test-diff-filter/test14-1-report.txt: Likewise.
+       * tests/data/test-diff-filter/test14-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test14-v0.o: Likewise.
+       * tests/data/test-diff-filter/test14-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test14-v1.o: Likewise.
+       * tests/data/test-diff-filter/test15-0-report.txt: Likewise.
+       * tests/data/test-diff-filter/test15-1-report.txt: Likewise.
+       * tests/data/test-diff-filter/test15-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test15-v0.o: Likewise.
+       * tests/data/test-diff-filter/test15-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test15-v1.o: Likewise.
+       * tests/Makefile.am: Add the above to the build system.
+
+2014-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       A name that couldn't be demangled remains the same
+       * src/abg-ir.cc (demangle_cplus_mangled_name): When the demangler
+       fails to demangle a name, just return the input name as-is.
+
+2014-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright notice for a bunch of files
+       * include/abg-comp-filter.h: Update copyright notice.
+       * include/abg-comparison.h: Likewise.
+       * src/abg-comparison.cc: Likewise.
+       * src/abg-ir.cc: Likewise.
+       * tools/bidiff.cc: Likewise.
+       * tests/test-diff-filter.cc: Likewise.
+
+2014-06-19  Sinny Kumari <skumari@redhat.com>
+
+       Keep symbol's multiple aliases within single attribute separated by comma
+       * src/abg-writer.cc (write_elf_symbol_aliases): Changing function
+       to keep multiple symbol aliases within one alias attribute
+       * src/abg-reader.cc (build_elf_symbol_db): Changing function to read
+       symbol's alias attribute and split if multiple alias exist with comma(,)
+       asi a delimiter and add all aliases to main symbol
+       * tests/data/test-read-dwarf/test3.c: Test file to generate multiple aliases
+       * tests/data/test-read-dwarf/test3.so: Test shared library having multiple
+       aliases of a symbol
+       * tests/data/test-read-dwarf/test3.so.abi: XML file containing dwarf
+       information from test3.so
+       * tests/test-read-dwarf.cc (in_out_specs): Add the new test above
+       * tests/Makefile.am: Add tests/data/test-read-dwarf/test3.c,
+       tests/data/test-read-dwarf/test3.so and tests/data/test-read-dwarf/test3.so.abi
+       to the distribution
+
+2014-06-18  Mark Wielaard <mjw@redhat.com>
+
+       DW_TAG_mutable_type doesn't exist.
+       * src/abg-dwarf-reader.cc (is_type_tag): Remove DW_TAG_mutable_type.
+       (build_ir_node_from_die): Likewise.
+
+2014-06-05  Dodji Seketeli <dodji@redhat.com>
+
+       Look at first parm type and artificial-ness to detect static-ness
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): To
+       tell if a member function is static, look if the first parm is a
+       pointer to the type of the enclosing class, and if it's
+       artificial.  Don't bother trying to be smart by looking at the
+       non-presence of DW_AT_object_pointer b/c that attribute wasn't
+       emitted by GCC 4_4.
+
+2014-06-04  Dodji Seketeli <dodji@redhat.com>
+
+       Harden debug info path management & better error reporting
+       * include/abg-dwarf-reader.h (enum status): New enum.
+       (read_corpus_from_elf): Return an instance of status above, and
+       return the corpus by parameter.
+       * src/abg-dwarf-reader.cc (create_default_dwfl): Add a comment
+       about elfutils wanting the Dwfl_Callbacks::debuginfo_path to be an
+       absolute path.
+       (read_corpus_from_elf): Return an instance of status above, and
+       return the corpus by parameter.
+       * tools/abg-tools-utils.h (make_path_absolute): Declare new function.
+       * tools/abg-tools-utils.cc (make_path_absolute): New
+       implementation.
+       * tools/bidiff.cc (options::di_root_path[12]): Make these be
+       shared pointers.
+       (parse_command_line): ensure the debug info root paths are
+       absolute.
+       (main): Adjust.  Give meaningful errors when the debug info or
+       symbol files couldn't be read.
+       * tools/bidw.cc (options::di_root_path): Make this be a shared
+       pointer.
+       (parse_command_line): Ensure the debug info root path is absolute.
+       (main): Adjust.  Give meaningful errors when the debug info or
+       symbol files couldn't be read.
+       * tools/bilint.cc (options::di_root_path): Make this be a shared
+       pointer.
+       (parse_command_line): Ensure the debug info root path is absolute.
+       (main): Adjust.  Give meaningful errors when the debug info or
+       symbol file couldn't be read.
+       * tests/test-diff-dwarf.cc (main): Adjust.
+       * tests/test-read-dwarf.cc (main): Likewise.
+
+2014-06-02  Dodji Seketeli <dodji@redhat.com>
+
+       Do not choke on AR archives
+       * tools/abg-tools-utils.h (file_type::FILE_TYPE_AR): New enumerator.
+       * tools/abg-tools-utils.cc (guess_file_type): Recognize AR archive
+       files.
+       * tools/bidiff.cc (main): Support AR archives.
+       * tools/bidw.cc (main): Likewise.
+       * tools/bilint.cc (main): Likewise.
+
+2014-05-30  Dodji Seketeli <dodji@redhat.com>
+
+       Honor linkage name showing when displaying added/removed member functions
+       * src/abg-comparison.cc (represent): Take a diff_context.  If
+       instructed to show linkage names, show the linkage name of the
+       member function.
+       (class_diff::report): Adjust for the new signature of represent().
+
+2014-05-30  Dodji Seketeli <dodji@redhat.com>
+
+       Make bidiff filter output and display symbol names by default
+       * tools/bidiff.cc (options::options): Initialize
+       options::show_linkage_names to true and
+       options::show_harmful_changes to false.
+       (parse_command_line): Change --linkage-names into
+       --no-linkage-names as the linkage names are now displayed by
+       default.  Change --no-harmless into --harmless as harmless changes
+       are now filtered by default.
+       (display_usage): Update help string for the --linkage-names ->
+       --no-linkage-names and --no-harmful -> --harmful change.
+       * tests/test-diff-filter.cc: Adjust.
+
+2014-05-29  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure added/removed member functions have their symbols added/removed
+       * include/abg-comparison.h (diff_context::{set_corpora,
+       get_first_corpus, get_second_corpus}): Declare new member
+       functions.
+       * src/abg-comparison.cc (diff_context::{set_corpora,
+       get_first_corpus, get_second_corpus}): Define them.
+       (compute_diff): In the overload for corpus_sptr stick the corpora
+       being compared, into the diff context.
+       (class_diff::ensure_lookup_tables_populated): If a member function
+       is allegedly removed, check that its underlying symbol is removed
+       from the corpus as well.  Otherwise, consider that the member
+       function hasn't been removed.  Likewise, if a member function is
+       allegedly added, check that its underlying symbol has been added
+       to the corpus as well.  Otherwise, consider that the member
+       function hasn't been added.  The symbols can now be accessed
+       through the two corpora that are now present in the diff context.
+
+2014-05-29  Dodji Seketeli <dodji@redhat.com>
+
+       Fix scope for DIEs with specification or abstract_origin attributes
+       * src/abg-dwarf-reader.cc (get_scope_for_die): If the DIE has a
+       DW_AT_specification or DW_AT_abstract_origin attribute, get the
+       scope of the referred-to DIE.
+       (build_ir_node_from_die): For a variable DIE that has a
+       DW_AT_{specification,abstract_origin} attribute, do not add the
+       built variable IR node to its scope because it is already in a
+       scope.  It's in a scope because that built variable is for the DIE
+       that is referred-to by the DW_AT_{specification,abstract_origin}
+       attribute.  Likewise for member functions.  Also, now,
+       get_scope_for_die can return a class for a function DIE because
+       get_scope_for_die now returns the *logical* scope of the DIE; that
+       is, it follows DW_AT_{specification,abstract_origin} attributes.
+       * tests/data/test-read-dwarf/test1.abi: Adjust.
+
+2014-05-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add a symbol database to the ABI Corpus & support symbol aliases
+       * include/abg-corpus.h (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
+       Declare new accessors.
+       (corpus::lookup_{variable,function}_symbol): Declare new member
+       functions.
+       * src/abg-corpus.cc (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
+       Define new accessors.
+       (corpus::lookup_{variable,function}_symbol): Define new member
+       functions.
+       * include/abg-ir.h (string_elf_symbol_sptr_map_type)
+       (string_elf_symbol_sptr_map_sptr, elf_symbols)
+       (string_elf_symbols_map_type, string_elf_symbols_map_sptr): New
+       convenience typedefs.
+       (elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
+       has_aliases, add_alias, get_id_string,
+       get_name_and_version_from_id, operator=}): Declare new member
+       functions.
+       * src/abg-ir.cc (elf_symbol::{get_main_symbol, is_main_symbol,
+       get_next_alias, has_aliases, add_alias, get_id_string,
+       get_name_and_version_from_id, operator=}): Define new member
+       functions.
+       * include/abg-reader.h (read_corpus_from_file): Take a shared
+       pointer to corpus.
+       * src/abg-reader.cc (read_context::{g,s}et_corpus): Define these.
+       (build_elf_symbol_db, build_elf_symbol_from_reference)
+       (read_symbol_db_from_input): Define new functions.
+       (read_corpus_from_input): Adjust.  Make it read symbol databases.
+       (build_elf_symbol): Harden this.
+       (build_{var,function}_decl): Read the symbol reference.  Do not
+       read the local symbol serialization anymore.
+       (read_corpus_from_archive): Adjust.
+       (read_corpus_from_file): Take a reference to a shared pointer to
+       corpus, rather than a reference to the corpus.
+       (read_corpus_from_native_xml): Only keep the overload that returns
+       a corpus.  Set the current context with the corpus.
+       * src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_type)
+       (addr_elf_symbol_sptr_map_sptr): New convenience typedefs.
+       (read_context::{fun_sym_addr_sym_index_map_,
+       var_sym_addr_sym_index_map_): Remove.
+       (read_context::{fun,var}_addr_sym_map_): New.  Replace the above
+       that got removed.
+       (read_context::{var,fun}_syms_): New.
+       (read_context::lookup_elf_{fn,var}_symbol_from_address): Adjust.
+       (read_context::{fun,var}_addr_sym_map{_sptr}): New.
+       (read_context::{fun,var}_syms{_sptr}): New.
+       (read_context::load_symbol_maps): Replace
+       read_context::load_symbol_addr_to_index_maps.  Adjust to load all
+       the new maps.
+       (read_context::maybe_load_symbol_maps): New.
+       (read_debug_info_into_corpus): Renamed build_corpus into this.
+       Update to load symbol maps and set it to the corpus.
+       * src/abg-writer.cc (write_context::get_fun_symbol_map): New
+       accessor.
+       (write_elf_symbol_aliases, write_elf_symbol_reference)
+       (write_elf_symbols_table): Define new static functions.
+       (write_var_decl): Write the reference to the underlying symbol of
+       the variable.  Do not write the full symbol here anymore.
+       (write_function_decl):  Likewise, write the reference to the
+       underlying symbol of the function.  Do not write the full symbol
+       here anymore.
+       (write_corpus_to_native_xml): Write the symbol databases at the
+       beginning of the corpus document.
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): Now that the
+       corpus has symbols, check if a the symbol of an allegedly deleted
+       function (resp. variable) is deleted; if not, then do not report
+       the function (resp. variable) as deleted.  Similarly, check if the
+       symbol of an allegedly added function (resp. variable) is added.
+       if not, the do not report the function (resp. variable) as added.
+       * tests/test-write-read-archive.cc (main): Adjust.
+       * tools/biar.cc (extract_tus_from_archive): Likewise.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+       * tests/data/test-read-dwarf/test0.abi: Likewise.
+       * tests/data/test-read-dwarf/test1.abi: Likewise.
+       * tests/data/test-read-dwarf/test2.so.abi: Likewise.
+
+2014-05-21  Dodji Seketeli <dodji@redhat.com>
+
+       Rename 'symbol' in fn names to 'public decl' in abg-corpus.{cc,h}
+       * src/abg-corpus.cc (lots of places): Rename references to
+       'symbol' in function & variable names to 'public_decl'.
+
+2014-05-22  Dodji Seketeli <dodji@redhat.com>
+
+       Support debug info files being outside the expected system directories
+       * include/abg-dwarf-reader.h (read_corpus_from_elf): Take a
+       debug_info_root_path parameter.
+       src/abg-dwarf-reader.cc (create_default_dwfl): Take a
+       debug_info_root_path.  Use that to initialize the Dwfl_Callbacks
+       structure used by dwfl_begin.
+       (create_default_dwfl_sptr, read_corpus_from_elf): Likewise, Take a
+       debug_info_root_path parameter.
+       * tests/test-diff-dwarf.cc (main): Adjust.
+       * tests/test-read-dwarf.cc (main): Likewise.
+       * tools/bidiff.cc (options::dir_root_path[12]): New member.
+       (options::options): Initialize it.
+       (display_usage): Add help string for the --debug-info-dir[12]
+       options.
+       (parse_command_line): Handle the new --debug-info-dir[12] options.
+       (main): Pass the debug info directories to read_corpus_from_elf.
+       * bidw.cc (options::::di_root_path): New member.
+       (options::options): Initialize it.
+       (display_usage): Add help string for the new --debug-info-dir
+       option.
+       (parse_command_line): Handle the new --debug-info-dir.
+       (main): Pass the debug info root path to read_corpus_from_elf.
+       * tools/bilint.cc (options::di_root_path): New member.
+       (options::options): Initialize it.
+       (display_usage): Add help string for the new --debug-info-dir.
+       (parse_command_line): Handle --debug-info-dir command line option.
+       (main): Pass the debug info root path to read_corpus_from_elf.
+
+2014-05-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix detection of destructors
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Simply
+       detect that the destructor starts with a '~'.
+
+2014-05-21  Dodji Seketeli <dodji@redhat.com>
+
+       Add clone in the scope of the cloned decl they logically belong to
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): Do not try to
+       add the cloned function/variable to the current scope because
+       cloning should have added the decl into the scope of the cloned
+       target.
+       * src/abg-ir.cc ({var,function}_decl::clone): Insert the clone
+       decl into the scope of the cloned decl.  My understanding is that
+       it's where they belong.
+       * tests/data/test-read-dwarf/test1.abi: Update this to incorporate
+       all the abstract constructors/destructors *and* their clones into
+       the classes where they belong.
+       * tests/data/test-read-dwarf/test1.abi: Adjust for the abstract
+       cdtor being added to the class, as well as their cloned concrete
+       instances.
+       * tests/data/test-read-dwarf/test2.so.abi: Likewise.
+
+2014-05-20  Dodji Seketeli <dodji@redhat.com>
+
+       Support decl cloning when seeing DW_AT_abstract_origin
+       * include/abg-ir.h ({var,function}_decl::clone): New method.
+       * src/abg-dwarf-reader.cc (die_die_attribute): Add a flag to avoid
+       looking through DW_AT_abstract_origin attribute here.
+       (build_function_decl): Set the linkage name from
+       DW_AT_linkage_name if it's not set yet.
+       (build_ir_node_from_die): For DW_TAG_{variable,subprogram}, when
+       we see DW_AT_abstract_origin, clone the decl they refer to.
+       Also, avoid dropping the DIE on the floor just because it doesn't
+       have die_is_artificial here.
+       * src/abg-ir.cc ({var,function}_decl::clone): Implement this.
+
+2014-05-19  Dodji Seketeli <dodji@redhat.com>
+
+       Don't share types across TUs when DW_TAG_partial_unit are involved
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
+       Clear the part of the context that needs to be per TU.
+       (build_ir_node_from_die): Assert that this should not be called
+       for partial and imported unit because for now our practical
+       assumption is that DIEs under partial unit are lazily read only
+       when referenced by DIEs that are under DW_TAG_compile_unit.
+       * tests/Makefile.am: Add the new test files to the build system.
+       * tests/data/test-read-dwarf/test2.so.abi: Fix the reference
+       output here to avoid sharing types across TUs, making the output
+       valid for bilint.
+
+2014-05-19  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for DW_TAG_partial_unit
+       * src/abg-dwarf-reader.cc (read_context::cur_tu_die_): New member.
+       (read_context::read_context): Initialize the new member.
+       (read_context::cur_tu_die): New accessors.
+       (find_last_import_unit_point_before_die): New static function.
+       (get_parent_die): Take a logical current die offset parameter.  If
+       the die we want the parent for is a partial unit, then find the
+       last DW_TAG_imported_unit that imports that partial unit before
+       the logical current die and return the parent of that
+       DW_TAG_imported_unit die.
+       (get_scope_for_die): Take a logical current die offset parameter.
+       Adjust.
+       (build_translation_unit_and_add_to_ir): Set/unset the current
+       translation unit DIE in the context.  Adjust.
+       (build_namespace_decl_and_add_to_ir)
+       (build_class_type_and_add_to_ir, build_qualified_type)
+       (build_pointer_type_def, build_reference_type, build_typedef_type)
+       (build_var_decl, build_function_decl, build_ir_node_from_die):
+       Take a logical current die offset parameter.  Adjust.
+       (build_corpus): Accept that we can have DIE that are not
+       DW_TAG_compile_unit at the top level, because, well, we can now
+       have DW_TAG_partial_unit too.
+       * tests/data/test-read-dwarf/test2-{0,1}.cc: New test source
+       files.
+       * tests/data/test-read-dwarf/test2.h: Likewise.
+       * tests/data/test-read-dwarf/test2.so: New input binary to read.
+       * tests/data/test-read-dwarf/test2.so.abi: New reference test to
+       compare against.
+       * tests/test-read-dwarf.cc: Adjust to launch the new test.
+
+2014-05-14  Dodji Seketeli <dodji@redhat.com>
+
+       Re-build a test input file with debug info
+       * tests/data/test-lookup-syms/test1.so: Rebuild this with debug
+       info.
+
+2014-05-14  Dodji Seketeli <dodji@redhat.com>
+
+       Serialize and de-serialize elf symbols for var & function decls
+       * abg-ir.h (string_to_elf_symbol_type, string_to_elf_symbol_binding):
+       Declare new entry points.
+       * src/abg-ir.cc (string_to_elf_symbol_type)
+       (string_to_elf_symbol_binding): Define new entry points.
+       * include/abg-libxml-utils.h (xml_char_sptr_to_string): Declare
+       new entry points.
+       * src/abg-libxml-utils.cc (xml_char_sptr_to_string): Define new
+       entry points.
+       * src/abg-reader.cc (read_elf_symbol_type)
+       (read_elf_symbol_binding, build_elf_symbol): Define new static
+       functions.
+       (build_function_decl, build_var_decl): Use the new
+       build_elf_symbol and set the symbol to the function.  Flag the
+       function as having a public symbol in the symbol table if the
+       symbol is public.
+       * src/abg-writer.cc (write_elf_symbol_type)
+       (write_elf_symbol_binding, write_elf_symbol): Define new static
+       functions.
+       (write_var_decl, write_function_decl): Use the new
+       write_elf_symbol to serialize the symbol for the decl.
+       * tests/data/test-read-dwarf/test[01].abi: Adjust.
+
+2014-05-14  Dodji Seketeli <dodji@redhat.com>
+
+       Don't crash when de-serializing an empty function parm xml node
+       * src/abg-reader.cc (build_function_parameter): Do not crash if
+       the xml node is NULL.
+
+2014-05-14  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a typo in serializing a decl_base::binding
+       * src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
+       Fix a typo here.
+
+2014-05-14  Dodji Seketeli <dodji@redhat.com>
+
+       Add a help string for the --no-absolute-path option of bisym
+       * tools/bisym.cc (show_help): Add a missing help string.
+
+2014-05-13  Dodji Seketeli <dodji@redhat.com>
+
+       Do not try to use ELF hash tables in demangling lookup mode
+       * src/abg-dwarf-reader.cc (lookup_symbol_from_elf): If in
+       demangling mode, do not use ELF hash tables.
+
+2014-05-13  Dodji Seketeli <dodji@redhat.com>
+
+       Use the proper symbol table for  and set linkage_name to symbol name
+       * src/abg-dwarf-reader.cc (find_symbol_table_section): Return the
+       .symtab if we are looking at an executable or relocatable file and
+       .dynsym if we are looking at a DSO.
+       (find_symbol_table_section_index): Likewise.  Implement this in
+       terms of find_symbol_table_section.
+       (build_{function,var}_decl): Set the linkage_name to the symbol
+       name, if the symbol name is not empty.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+
+2014-05-13  Dodji Seketeli <dodji@redhat.com>
+
+       Remove redundant "'" around linkage names in diff reports
+       * src/abg-comparison.cc (corpus_diff::report): Remove the
+       redundant "'" from the linkage names in the diff.
+
+2014-05-08  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for elf symbol (versionning) during decl comparison
+       * include/abg-fwd.h (get_linkage_name): Remove.
+       * include/abg-dwarf-reader.h (enum symbol_type)
+       (enum symbol_binding): Move these into abg-ir.h.
+       (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
+       Adjust.
+       * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
+       Declare this before using it.
+       (die_address_attribute, die_location_address)
+       (stt_to_elf_symbol_type, stb_to_elf_symbol_binding)
+       (find_hash_table_section_index, find_symbol_table_section)
+       (find_symbol_table_section_index, find_text_section)
+       (find_bss_section, compare_symbol_name)
+       (get_symbol_versionning_sections get_version_for_symbol)
+       (lookup_symbol_from_sysv_hash_tab)
+       (lookup_symbol_from_gnu_hash_tab, get_elf_class_size_in_bytes)
+       (bloom_word_at, setup_gnu_ht, lookup_symbol_from_elf_hash_tab)
+       (lookup_symbol_from_symtab, maybe_adjust_fn_sym_address)
+       (maybe_adjust_var_sym_address): New static functions.
+       (enum hash_table_kind): New enum.
+       (struct gnu_ht): New struct.
+       (read_context::var_decls_to_add_): Renamed var_decls_to_add into
+       this.
+       (read_context::{fun, var}_sym_addr_sym_index_map_): New member.
+       (read_context::{lookup_symbol_from_elf,
+       lookup_elf_symbol_from_index, lookup_elf_fn_symbol_from_address,
+       lookup_elf_var_symbol_from_address, fun_sym_addr_sym_index_map,
+       var_sym_addr_sym_index_map, load_symbol_addr_to_index_maps,
+       get_function_address, get_variable_address}): New member
+       functions.
+       (read_context::lookup_public_{variable,
+       function}_symbol_from_elf): Adjust.
+       (op_pushes_constant_value): Fix a bug here.
+       (lookup_symbol_from_elf): Adjust.  Support cases where there is no
+       elf hash table, e.g, for relocatable files.
+       (lookup_public_function_symbol_from_elf)
+       (lookup_public_variable_symbol_from_elf): Adjust.
+       (build_var_decl): Allow updating the var_decl to associate it with
+       its underlying symbol.  In that case, if the linkage name is not
+       set, set it to the symbol name.
+       (build_function_decl): Likewise for function_decl.
+       (operator<<(std::ostream&, symbol_type)):
+       (operator<<(std::ostream&, symbol_binding)): Move these do
+       abg-ir.cc.
+       * include/abg-ir.h (class elf_symbol): Declare new class.  Move
+       enum symbol_binding and enum symbol_type (from abg-dwarf-reader.h) to
+       elf_symbol::binding and elf_symbol::type here.
+       (operator<<(std::ostream&, elf_symbol::type))
+       (operator<<(std::ostream&, elf_symbol::binding))
+       (operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New
+       operators.
+       (class elf_symbol::version): Declare new class.
+       (class var_decl): Make this pimpl, and add ...
+       (var_decl::{g,s}et_symbol): ... new member functions.
+       (class function_decl): Likewise, make this pimpl and add ...
+       (function_decl::{g,s}et_symbol): ... new member functions.
+       * src/abg-ir.cc (struct elf_symbol, elf_symbol::priv): New
+       types.
+       (elf_symbol::*): Lots of new members and member functions.
+       (operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New.
+       (operator<<(std::ostream&, elf_symbol::type)): New.
+       (operator<<(std::ostream&, elf_symbol::binding)): New.
+       (elf_symbol::version::priv): New type.
+       (elf_symbol::version::*): Lots of member functions.
+       (get_linkage_name): Removed.
+       (var_decl::priv): New type.  Pimplify the thing.
+       (var_decl::{s,g}et_symbol): New.
+       (var_decl::operator==): Take symbols in account in the comparison.
+       (function_decl::priv): New type.
+       (function_decl::*): Pimplify.
+       (function_decl::{s,g}et_symbol): New.
+       (function_decl::operator==): Take symbols in account in the
+       comparison.
+       * include/abg-comparison.h (diff_context::show_linkage_name): New
+       member function.
+       * src/abg-comparison.cc (diff_context::priv::show_linkage_name_):
+       New member.
+       (diff_context::priv::priv): Initialize it.
+       (diff_context::show_linkage_names): New member function.
+       (corpus_diff::report): If the user used --show-linkage-names,
+       display the linkage name after the name of the functions.  Add
+       missing "'" in the some spots.
+       * tools/bidiff.cc (options.show_linkage_names): New member.
+       (display_usage, parse_command_line): Support --linkage-names.
+       * tools/bisym.cc (show_help): Add '\n' at the end of help string
+       for --demangle.  Add --no-absolute-path option.
+       (parse_command_line): Support --no-absolute-path.
+       (main): Adjust for symbol (versionning) support.  Consider that
+       the program successfully completed even when the symbol wasn't
+       found.  Support --no-absolute-path.
+       * tests/data/test-lookup-syms/test0-report.txt: New.
+       * tests/data/test-lookup-syms/test01-report.txt: New.
+       * tests/data/test-lookup-syms/test02-report.txt: New.
+       * tests/data/test-read-dwarf/test0.abi: Adjust.
+       * tests/data/test-read-dwarf/test1.abi: Adjust.
+       * tests/data/test-diff-dwarf/test7-report.txt: Adjust.
+       * tests/data/test-diff-filter/test10-report.txt: Adjust.
+       * tests/data/test-diff-filter/test12-report.txt: Adjust.
+       * tests/data/test-lookup-syms/test1-[123]-report.txt: New.
+       * tests/data/test-lookup-syms/test1.c: New.
+       * tests/data/test-lookup-syms/test1.version-script: New.
+       * tests/test-lookup-syms.cc: Adjust for new tests.
+       * test/Makefile.am: Adjust makefile.
+
+2014-05-07  Dodji Seketeli <dodji@redhat.com>
+
+       Rename decl_base::get_mangled_name into decl_base::get_linkage_name
+       * include/abg-ir.h (decl_base::get_linkage_name): Renamed
+       decl_base::get_mangled_name into this.
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated)
+       (function_decl_diff::report, type_decl_diff::report)
+       (corpus_diff::priv::ensure_lookup_tables_populated)
+       (corpus_diff::report, compute_diff): Adjust.
+       * src/abg-corpus.cc ({var_comp, func_comp}::operator()): Likewise.
+       (corpus::priv::build_symbol_table): Likewise.
+       * src/abg-dwarf-reader.cc (die_linkage_name): Renamed
+       die_mangled_name into this.
+       (die_loc_and_name, build_translation_unit_and_add_to_ir)
+       (build_namespace_decl_and_add_to_ir, build_type_decl)
+       (build_enum_type, build_class_type_and_add_to_ir)
+       (build_typedef_type, build_var_decl, build_function_decl, ): Adjust.
+       * src/abg-hash.cc (decl_base::hash::operator()): Likewise.
+       * src/abg-ir.cc (decl_base::priv::linkage_name_): Renamed
+       decl_base::priv::mangled_name_ into this.
+       (decl_base::priv::priv, decl_base::{decl_base, operator==})
+       (get_linkage_name, typedef_decl::typedef_decl, var_decl::var_decl)
+       (function_decl::function_decl, class_decl::base_spec::base_spec)
+       (class_decl::method_decl::method_decl): Adjust.
+       (decl_base::{g,s}et_linkage_name): Renamed
+       decl_base::{g,s}et_mangled_name into this.
+       * src/abg-writer.cc (write_decl, write_typedef_decl)
+       (write_var_decl, write_function_decl, dump): Adjust.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Drop symbols not global in a symtab from corpus symtab
+       * src/abg-corpus.cc (corpus_priv::build_symbol_table): If a
+       function or variable symbol is not public (global or weak) and
+       present in an elf symbol table, drop it from the corpus symbol
+       table.  As a result functions are variables (not present in the
+       elf symbol tables) that we were previously taking in account are
+       not dropped on the floor, leading to much less noise.
+       * tests/data/test-diff-dwarf/test0-v0.cc: Update to avoid
+       generating inline functions.
+       * tests/data/test-diff-dwarf/test0-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test0-v1.o: Likewise.
+       * tests/data/test-diff-dwarf/test7-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test7-v1.o: Likewise.
+       * tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
+       * tests/data/test-diff-dwarf/test8-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test8-v1.o: Likewise.
+       * tests/data/test-diff-filter/test0-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test0-v0.o: Likewise.
+       * tests/data/test-diff-filter/test0-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test0-v1.o: Likewise.
+       * tests/data/test-diff-filter/test10-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test10-v0.o: Likewise.
+       * tests/data/test-diff-filter/test10-report.txt: Likewise.
+       * tests/data/test-diff-filter/test10-v1.o: Likewise.
+       * tests/data/test-diff-filter/test13-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test13-v0.o: Likewise.
+       * tests/data/test-diff-filter/test13-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test13-v1.o: Likewise.
+       * tests/data/test-diff-filter/test2-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test2-v0.o: Likewise.
+       * tests/data/test-diff-filter/test2-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test2-v1.o: Likewise.
+       * tests/data/test-diff-filter/test4-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test4-v0.o: Likewise.
+       * tests/data/test-diff-filter/test4-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test4-v1.o: Likewise.
+       * tests/data/test-diff-filter/test9-v0.o: Likewise.
+       * tests/data/test-diff-filter/test9-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test9-v1.o: Likewise.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix mangled name setting for static data members from DWARF
+       * src/abg-dwarf-reader.cc (build_var_decl): Support adding
+       properties to an existing var_decl.  For now just add mangled
+       name.
+       (build_ir_node_from_die): Accept DW_TAG_member too.  This helps
+       for when this function is used to add additional properties to an
+       existing DW_TAG_member representing a static data member.  Then,
+       use build_var_decl to really add the value of the additional
+       mangled name property.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Always show pretty representation of variables in report
+       * src/abg-comparison.cc (corpus_diff::report): Display the pretty
+       representation of the variable, no matter what.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Set "is_in_public_symbol_table" property for vars & fns
+       * src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
+       Set the "is_in_public_symbol_table" property for the variable or
+       function decl.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Support symbol lookups from ELF
+       * include/abg-dwarf-reader.h (symbol_type, symbol_binding): New
+       enums.
+       (operator<<): Declare new overloads for the new enums above.
+       (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
+       Declare new entry points.
+       * src/abg-dwarf-reader.cc (lookup_symbol_from_elf)
+       (lookup_public_function_symbol_from_elf)
+       (lookup_public_variable_symbol_from_elf): Define new static
+       functions.
+       (read_context::elf_{module_, handle}_): New data members.
+       (read_context::{elf_module, elf_handle}): New accessors.
+       (read_context::load_debug_info): Store the elf module into
+       read_context::_elf_module_.  Adjust.
+       (read_context::{lookup_symbol_from_elf,
+       lookup_public_function_symbol_from_elf,
+       lookup_public_variable_symbol_from_elf}): New member functions.
+       (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
+       (operator<<): Define public entry points.
+       * tools/bisym.cc: New tool to lookup a symbol in an elf file.
+       * tools/Makefile.am: Add the bisym.cc source file to the
+       distribution and arrange to compile it into a 'bisym' executable.
+       * tests/test-lookup-syms.cc: New test harness.
+       * tests/data/test-lookup-syms/test0-report.txt: New test input
+       for the harness above.
+       * tests/data/test-lookup-syms/test0.cc: Likewise.
+       * tests/data/test-lookup-syms/test0.o: Likewise
+       * tests/data/test-lookup-syms/test01-report.txt: Likewise.
+       * tests/data/test-lookup-syms/test02-report.txt: Likewise.
+       * tests/Makefile.am: Build the new runtestlookupsyms test and add
+       the new files to the distribution.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Add corpus::{s,g}et_origin accessors
+       * include/abg-corpus.h (enum corpus::origin): New enum.
+       (corpus::{g,s}et_origin): New accessors.
+       * src/abg-corpus.cc (corpus::priv::origin): New data member.
+       (corpus::priv::is_symbol_table_built): Move this up.
+       (corpus::priv::priv): Adjust.
+       (corpus::{g,s}et_origin): Define accessors.
+       * src/abg-dwarf-reader.cc (read_corpus_from_elf): Set the corpus
+       origin.  Also set the path.  Oops.
+       * src/abg-reader.cc (read_corpus_from_input)
+       (read_corpus_from_archive): Set the corpus origin.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Add a get_linkage_name function.
+       * include/abg-fwd.h (is_at_global_scope): Declare a new overload.
+       (get_linkage_name): Declare ...
+       * src/abg-ir.cc (get_linkage_name): ... these new entry points.
+       (is_at_global_scope): Define these new overloads useful for the
+       new get_linkage_name.
+
+2014-04-21  Dodji Seketeli <dodji@redhat.com>
+
+       Pimplify decl_base and add decl_base::{s,g}et_is_in_public_symbol_table
+       * include/abg-ir.h (struct decl_base::priv): New pimpl type.
+       (decl_base::priv_): New pimpl.
+       (decl_base::{hashing_started, peek_hash_value,
+       peek_qualified_name, set_qualified_name}): Declare new protected
+       methods.
+       (decl_base::{get_context_rel, set_qualified_name, get_location,
+       set_location, set_name, set_mangled_name, get_visibility,
+       set_visibility}): Move these out-of-line.
+       (decl_base::{g,s}et_is_public_symbol_table):
+       (class_decl::hashing_started): Remove this as we now have
+       decl_base::hashing_started.
+       (decl_base::{hash_, hashing_started, location_, context_, name_,
+       qualified_parent_name_, qualified_name_, mangled_name_,
+       visibility_}): Move all these members into the new ...
+       * src/abg-ir.cc (struct decl_base::priv): ... pimpl type.
+       (decl_base::decl_base): Move these out-of-line here.  Adjust the
+       other overloads.
+       (decl_base::{hashing_started, peek_hash_value,
+       peek_qualified_name, set_qualified_name}): Define these new
+       protected methods.
+       (decl_base::{get_context_rel, set_context_rel, get_location,
+       set_location, set_name, get_mangled_name, set_mangled_name,
+       get_visibility, set_visibility}): Define these out-of-line here.
+       (decl_base::{get_hash, set_hash, get_scope,
+       get_qualified_parent_name, get_qualified_name, operator==,
+       set_scope}): Adjust.
+       (qualified_type_def::get_qualified_name): Likewise.
+       (pointer_type_def::get_qualified_name): Likewise.
+       (reference_type_def::get_qualified_name): Likewise.
+       (var_decl::set_scope): Likewise.
+       (class_decl::base_spec): Likewise.
+       (class_decl::method_decl::set_scope): Likewise.
+       (decl_base::{g,s}et_is_in_public_symbol_table): Define new accessors.
+       * src/abg-hash.cc ({decl_base, type_decl, scope_decl,
+       scope_type_decl, qualified_type_def, pointer_type_def,
+       reference_type_def, enum_type_decl, typedef_decl, var_decl,
+       class_decl}::hash::operator): Adjust.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Categorize base class changes as SIZE_OR_OFFSET_CHANGE_CATEGORY
+       * include/abg-comparison.h (class_diff::{deleted, inserted,
+       changed}_bases): Declare new member functions ...
+       * src/abg-comparison.cc ((class_diff::{deleted, inserted,
+       changed}_bases)): ... and define them.
+       * src/abg-comp-filter.cc (base_classes_added_or_removed): Define
+       new static functions.
+       (harmless_filter): Categorize base classes added or removed.
+       * tests/data/test-diff-dwarf/test8-report.txt: New test input.
+       * tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
+       * tests/data/test-diff-dwarf/test8-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test8-v1.o: Likewise.
+       * tests/data/test-diff-filter/test13-report.txt: New test input.
+       * tests/data/test-diff-filter/test13-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test13-v0.o: Likewise.
+       * tests/data/test-diff-filter/test13-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test13-v1.o: Likewise.
+       * tests/Makefile.am: Add the new files above to the source distribution.
+       * tests/test-diff-dwarf.cc: Use the new relevant input above to
+       run more tests.
+       * tests/test-diff-filter.cc: Likewise.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix class diff reporting issues for base classes
+       * src/abg-comparison.cc (class_diff::report): For base classes,
+       report their pretty representation.  Do not try to report a the
+       diff of a changed base class that got filtered out.  Avoid
+       emitting too many vertical white spaces.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Simplify SIZE_OR_OFFSET_CHANGE_CATEGORY categorizing
+       * src/abg-comp-filter.cc (harmful_filter::visit): Now that
+       type_size_changed is correctly geared to not be fulled by
+       decl-only classes, there is no need for its caller to handle that
+       case.  And data_member_offset_changed ain't affected by decl-only
+       classes anyway.  So the code is now much simpler.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix API doc for static_data_member_type_size_changed
+       * src/abg-comp-filter.cc (static_data_member_type_size_changed):
+       Fix API doc comment.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Don't blindly drop DIEs defined in the scope of a function
+       * src/abg-dwarf-reader.cc (get_scope_for_die): Do not drop a DIE
+       on the floor just because it is in the scope of a function.  We
+       were dropping a function parameter because its type is a typedef
+       defined right before the parameter, in the scope of the function.
+       Urgh.  So with this change, that function parameter is not dropped
+       anymore.  I have seen that happening in a DWARF generated by GCC
+       4.7.1 on libstdc++.so.  Hard to come up with a regression test
+       case for this one.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Useless code killing
+       * src/abg-comparison.cc (decls_equal::operator()(const decls_type,
+       const decls_type)): Kill dead code.  Note that there is a proper
+       equality operator for decl_base_sptr already.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       File static data member changes in STATIC_DATA_MEMBER_CHANGE_CATEGORY
+       * include/abg-comparison.h
+       (diff_category::STATIC_DATA_MEMBER_CHANGE_CATEGORY): New category.
+       (diff_category::EVERYTHING_CATEGORY): Update
+       * src/abg-comp-filter.cc (static_data_member_type_size_changed)
+       (static_data_member_added_or_removed): Define new static
+       functions.
+       (harmless_filter::visit): Categorize changes to static data
+       members as STATIC_DATA_MEMBER_CHANGE_CATEGORY.
+       * tools/bidiff.cc (set_diff_context_from_opts):
+       STATIC_DATA_MEMBER_CHANGE_CATEGORY is falls into the harmless
+       group.
+       * tests/data/test-diff-filter/test12-report.txt: New test input.
+       * tests/data/test-diff-filter/test12-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test12-v0.o: Likewise.
+       * tests/data/test-diff-filter/test12-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test12-v1.o: Likewise.
+       * tools/bidiff.cc: Run this test with the additional input data
+       above.
+       * tests/Makefile.am: Adjust.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in comments
+       * include/abg-comparison.h
+       (diff_category::NON_VIRT_MEM_FUN_CHANGE_CATEGORY): Fix typo in
+       comments.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Only non-static data member changes are SIZE_OR_OFFSET_CHANGE_CATEGORY
+       * src/abg-comp-filter.cc
+       (non_static_data_member_type_size_changed): Renamed
+       data_member_offset_changed into this.  Make sure the test detects
+       changes on *non-static* data members only.
+       (non_static_data_member_added_or_removed): Likewise for
+       data_member_offset_changed that got renamed into this.
+       (harmful_filter::visit): Adjust.
+
+2014-04-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix comments in categorization code
+       * src/abg-comp-filter.cc (data_member_added_or_removed): Fix
+       comments.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Really detect static-ness of data members.  Oops.
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Let's
+       consider that a data member being not laid out (i.e, not having a
+       data_member_location) is is a static data member.  Otherwise, we
+       were not detecting static data members at all.  Well we were only
+       inferring their presence from seeing the static variable
+       definition later on.  That means we were missing most of the
+       static variables.  Woops.
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): Now that we
+       are really seeing static data members, let's be prepare to the
+       fact that we can the same static data member being declared
+       several times in a corpus.
+       * tests/data/test-diff-dwarf/test7-report.txt: New test input file.
+       * tests/data/test-diff-dwarf/test7-v0.cc: Likewise.
+       * tests/data/test-diff-dwarf/test7-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test7-v1.o: Likewise.
+       * tests/test-diff-dwarf.cc: Update this to consume the new test
+       input files.
+       * tests/Makefile.am: Update this to add the missing test files to
+       the source distribution.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Add dumping routines for declaration location
+       * include/abg-fwd.h (get_global_scope()): New overload for const
+       decl_base&.  Move the other overloads up in the file.
+       (get_translation_unit): Add an overload for decl_base&.  Constify
+       the others.
+       (dump_decl_location): Declare new functions.
+       * src/abg-ir.cc (get_global_scope): Define the overload for const
+       decl_base&.  Write the other overloads in terms of this one.
+       (get_translation_unit): Likewise, define the overload for const
+       decl_base&.  Write the other overloads in terms of this one.
+       (dump_decl_location): Define these new overloads.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Fix dumping function to make them use generic ostream
+       * src/abg-writer.cc (dump(const decl_base_sptr, std::ostream&)):
+       Do not dump the content to cerr here.  Rather dump to the output
+       stream given in parameter.  Oops.
+       (dump(const translation_unit&, std::ostream&)): Likewise.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-ir.cc (get_translation_unit): Remove useless vertical
+       white space.
+       (is_global_scope): Add missing API doc.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       A virt mem fn deleted and added to the same offset is not harmful
+       * src/abg-comp-filter.cc (has_virtual_mem_fn_change): A virtual
+       member that gets deleted and added back again to the same vtable
+       offset is not considered as being a virtual member function change
+       suitable for VIRTUAL_MEMBER_CHANGE_CATEGORY.  Likewise for a
+       function sub-type change not involving a change in the vtable
+       offset.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Do not categorize size/offset changes when a decl-only class is involved
+       * src/abg-comp-filter.cc (there_is_a_decl_only_class)
+       (diff_involves_decl_only_class): New static functions.
+       (type_size_changed, data_member_added_or_removed)
+       (has_virtual_mem_fn_change, has_non_virtual_mem_fn_change): Bail
+       out if one of the types involved is a decl-only class.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Work around "mangled name vanishing from one version of mem fn decl" bug
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): If the first version
+       of the member function decl doesn't have a mangled name while the
+       second has it, try the lookups using the pretty representation of
+       the function.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Do not try to represent the offset for a static data member
+       * src/abg-comparison.cc (represent_data_member(var_decl_sptr,
+       ostream&)): If the data member is static, do not try to represent
+       its offset.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       A static data member shouldn't be checked for having been laid out
+       * src/abg-comparison.cc (represent_data_member(var_decl_sptr,
+       ostream&)): If the data member is static do not check for it
+       having been laid out.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Prefix pretty representation of static data members with 'static'
+       * src/abg-ir.cc (var_decl::get_pretty_representation): Prefix
+       pretty representation of static data members with 'static'.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Provide a robust way of getting the size of a qualified type
+       * include/abg-ir.h (qualified_type_def::get_size_in_bits): Declare
+       new member function ...
+       * src/abg-ir.cc (qualified_type_def::get_size_in_bits): ... and
+       define it.  Keep in mind that some times the size of the
+       underlying type can change between the moment the qualified type
+       is created and the end of its life time.  That is because a
+       subsequent DIE (from DWARF) can alter the size of the underlying
+       type.  This overload allows the user to always query the size of
+       the underlying type and keep the size of the qualified type in
+       sync with it.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Add an assert to the pointer diff reporting code
+       * src/abg-comparison.cc (pointer_diff::report): If the pointer
+       diff node is deemed to be reported then the underlying diff node
+       should be reported as well.
+
+2014-04-16  Dodji Seketeli <dodji@redhat.com>
+
+       Little style adjustment in diff node categorization code
+       * src/abg-comp-filter.cc (harmful_filter::visit): Factorize the
+       categorization into SIZE_OR_OFFSET_CHANGE_CATEGORY for data member
+       adding or removal and for data member type size change.
+
+2014-04-15  Dodji Seketeli <dodji@redhat.com>
+
+       If a diff node is in NO_CHANGE_CATEGORY do not report it anymore
+       * src/abg-comparison.cc (diff::is_filtered_out): Now that we seem
+       to be flagging every changes to a class into a category, we do not
+       need to dive into reporting a diff not that is categorized as
+       NO_CHANGE_CATEGORY anymore.  So let's have the implementation that
+       one would expect for this function.
+
+2014-04-15  Dodji Seketeli <dodji@redhat.com>
+
+       Categorize changes to virt mem fncts as VIRTUAL_MEMBER_CHANGE_CATEGORY
+       * src/abg-comp-filter.cc (has_virtual_mem_fn_change): New static
+       function.
+       (harmful_filter): Categorize changes to virtual member functions
+       into VIRTUAL_MEMBER_CHANGE_CATEGORY.
+       * src/abg-comparison.cc
+       (class_diff::priv::count_filtered_changed_dm): Move this up, right
+       after class_diff::priv::count_filtered_subtype_changed_dm.
+       (SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED): New macro.
+       (class_diff::priv::count_filtered_{changed, inserted,
+       deleted}_mem_fns): Modify these to properly take member function
+       virtual-ness in account.
+
+2014-04-15  Dodji Seketeli <dodji@redhat.com>
+
+       Do not hash non-virtual member functions when hashing a class
+       * src/abg-hash.cc (class_decl::hash::operator): Do not hash
+       non-virtual member functions.
+
+2014-04-15  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a missing new line in the reports
+       * src/abg-comparison.cc (represent(class_decl::method_decl_sptr,
+       ostream&)): Add a missing new line.
+       * tests/data/test-bidiff/test-struct1-report.txt: Adjust.
+
+2014-04-14  Dodji Seketeli <dodji@redhat.com>
+
+       Add more pretty printing facilities
+       * include/abg-comparison.h (get_pretty_representation(diff*)):
+       Declare new function.
+       * include/abg-fwd.h (get_pretty_representation): Declare functions
+       for decl_base*, type_base*, decl_base_sptr and type_base_sptr.
+       * src/abg-comparison.cc (get_pretty_representation): Implement
+       this for diff*.
+       * src/abg-ir.cc (get_pretty_representation): Define
+       implementations for decl_base*, type_base*, decl_base_sptr and
+       type_base_sptr.
+
+2014-04-14  Dodji Seketeli <dodji@redhat.com>
+
+       Don't compare non-virtual member functions in class comparison
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): Use the virtual
+       member functions here, not the member functions in general.
+       (compute_diff): Consider virtual member functions only, not
+       non-virtual ones.
+       * src/abg-ir.cc (class_decl::operator==): Do not compare
+       non-virtual member functions.  Only compare virtual member
+       functions.
+       * tests/data/test-bidiff/test-struct1-report.txt: New test input.
+       * tests/data/test-diff-dwarf/test0-report.txt: New test input.
+       * tests/data/test-diff-filter/test0-report.txt: New test input.
+       * tests/data/test-diff-filter/test01-report.txt: New test input.
+       * tests/data/test-diff-filter/test10-report.txt: New test input.
+       * tests/data/test-diff-filter/test11-report.txt: New test input.
+       * tests/data/test-diff-filter/test2-report.txt: New test input.
+       * tests/data/test-diff-filter/test9-report.txt: New test input.
+
+2014-04-14  Dodji Seketeli <dodji@redhat.com>
+
+       Recognize virtual member functions better and store them appart
+       * include/abg-fwd.h (set_member_function_is_virtual): Declare new
+       function.
+       * include/abg-ir.h (class class_decl): Declare
+       set_member_function_is_virtual and member_function_is_virtual as
+       friends of class_decl.
+       (class_decl::add_member_function): Take an is_virtual flag.
+       (class_decl::get_num_virtual_functions): Remove.
+       (class_decl::get_virtual_mem_fns): New member function.
+       (mem_fn_context_rel::is_virtual_): New member.
+       (mem_fn_context_rel::mem_fn_context_rel): Adjust to initialize the
+       new is_virtual_ member.
+       (mem_fn_context_rel::is_virtual): New member functions.
+       * src/abg-comparison.cc (represent): Adjust.
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Adjust.
+       * src/abg-ir.cc (member_function_is_virtual): Change this to use
+       mem_fn_context_rel::is_virtual.
+       (set_member_function_is_virtual): Define this new function.
+       (class_decl::priv::virtual_mem_fns_): New member to hold virtual
+       member functions.
+       (class_decl::get_virtual_mem_fns): Implement this member function.
+       (class_decl::get_num_virtual_functions): Remove.
+       (class_decl::add_member_function): Take a new is_virtual flag.
+       Add virtual member functions to
+       class_decl::priv::virtual_mem_fns_.
+       * src/abg-reader.cc (build_class_decl): Adjust.
+
+2014-04-13  Dodji Seketeli <dodji@redhat.com>
+
+       Filter non-virtual member fns insertions/deletions from class changes
+       * include/abg-fwd.h (member_function_is_virtual): Declare new
+       function.
+       * include/abg-comparison.h
+       (diff_category::{NON_VIRT_MEM_FUN_CHANGE_CATEGORY,
+       VIRTUAL_MEMBER_CHANGE_CATEGORY}): New enumerators.
+       (diff_category::EVERYTHING_CATEGORY): Adjust.
+       (class_diff::{changed, deleted, inserted}_member_fns): Declare new
+       member functions.
+       * src/abg-comp-filter.cc (data_member_added_or_removed): Add
+       missing comments.
+       (has_non_virtual_mem_fn_change): New static predicate function.
+       (harmless_filter::visit): Categorize non-virtual member function
+       changes in a diff into NON_VIRT_MEM_FUN_CHANGE_CATEGORY.
+       * src/abg-comparison.cc
+       (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macro.
+       (report_mem_header): Count filtered functions for added/deleted
+       functions as well.
+       (class_diff::priv::count_filtered_changed_mem_fns): Renamed
+       priv::count_filtered_member_functions into this.  Filter out
+       changes to non-virtual member functions here.
+       (class_diff::priv::count_filtered_{inserted, deleted}_mem_fns):
+       New member functions.
+       (class_diff::{deleted, inserted, changed}_member_fns): Define new
+       member functions.
+       (class_diff::report): Adjust count for filtered inserted/deleted
+       member functions.  Do not report NON_VIRT_MEM_FUN_CHANGE_CATEGORY
+       if it's disallowed.
+       (class_diff::traverse): Propagate only
+       VIRTUAL_MEMBER_CHANGE_CATEGORY from member functions to their
+       enclosing class.
+       * src/abg-ir.cc (member_function_is_virtual): Define new
+       functions.
+       * tools/bidiff.cc (set_diff_context_from_opts): Adjust to add
+       NON_VIRT_MEM_FUN_CHANGE_CATEGORY into the harmless group and
+       VIRTUAL_MEMBER_CHANGE_CATEGORY into the harmful one.
+       * tests/data/test-diff-filter/test0-report.txt: New test input.
+       * tests/data/test-diff-filter/test10-report.txt: Likewise.
+       * tests/data/test-diff-filter/test10-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test10-v0.o: Likewise.
+       * tests/data/test-diff-filter/test10-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test10-v1.o: Likewise.
+       * tests/data/test-diff-filter/test11-report.txt: Likewise.
+       * tests/data/test-diff-filter/test11-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test11-v0.o: Likewise.
+       * tests/data/test-diff-filter/test11-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test11-v1.o: Likewise.
+       * tests/data/test-diff-filter/test2-report.txt: Likewise.
+       * tests/data/test-diff-filter/test9-report.txt: Likewise.
+       * tests/data/test-diff-filter/test9-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test9-v0.o: Likewise.
+       * tests/data/test-diff-filter/test9-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test9-v1.o: Likewise.
+       * tests/test-diff-filter.cc: Consume the test input above to run
+       more tests.
+
+2014-04-13  Dodji Seketeli <dodji@redhat.com>
+
+       Make class_decl pimpl and harden comparison infloop prevention
+       * include/abg-ir.h (class_decl::{priv}): New private data member.
+       (class_decl::{get_is_declaration_only, set_is_declaration_only,
+       is_struct, get_definition_of_declaration, get_earlier_declaration,
+       add_base_specifier, get_base_specifiers, get_member_types,
+       get_data_members, get_member_functions,
+       get_member_function_templates, get_member_class_templates}): Move
+       these methods out-of-line.
+       (class_decl::{comparison_started_,
+       declaration_,is_declaration_only_, definition_of_declaration,
+       is_struct_, bases_, member_types_, data_members_,
+       member_functions_, member_function_template,
+       member_class_templates_}): Move these data members into the pimpl
+       in ...
+       * src/abg-ir.cc
+       (class_decl::priv::{declaration_,is_declaration_only_,
+       definition_of_declaration, is_struct_, bases_, member_types_,
+       data_members_, member_functions_, member_function_template,
+       member_class_templates_}): ... here.
+       (class_decl::priv::classes_being_compared_): New data member.
+       (class_decl::priv::priv): Initialize the data members.
+       (class_decl::priv::{mark_as_being_compared,
+       unmark_as_being_compared, comparison_started): New methods.
+       (class_decl::{get_is_declaration_only, set_is_declaration_only,
+       is_struct, get_definition_of_declaration, add_base_specifier,
+       get_base_specifiers, get_member_types, get_data_members,
+       get_member_functions, get_member_function_templates,
+       get_member_class_templates}): Move these out-of-line in here.
+       (class_decl::{class_decl, set_definition_of_declaration,
+       set_earlier_declaration, insert_member_type, add_member_type,
+       add_data_member, add_member_function,
+       add_member_function_template, add_member_class_template,
+       has_no_base_nor_member}): Adjust.
+       (class_decl::operator==): Harden inf-loop prevention during class
+       comparison using the new priv::mark/unmark_as_being_compared()
+       functions.  Now comparison of a class really compares member
+       functions again.  And it is *slooow*.  I should probably change
+       this to compare only virtual member functions.  But at least this
+       should be correct and robust for now.
+       * tests/data/test-diff-filter/test0-report.txt: Adjust.
+       * test01-report.txt: Adjust.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Remove the parent member of the diff node
+       * include/abg-comparison.h (diff::parent_): Remove.
+       (diff::diff): Adjust.
+       (diff::{get, set}_parent): Remove.
+       * src/abg-comp-filter.cc (harmless_filter::visit): Remove category
+       propagation to the parent.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Update the decl_base copy constructor for forgotten members
+       * src/abg-ir.cc (decl_base::decl_base): Copy forgotten decl_base
+       members hashing_started_, qualified_parent_name_, qualified_name_.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Comment fix in filtering code
+       * src/abg-comp-filter.cc (harmful_filter::visit): Fix comment
+       typos.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Put data member type size changes in SIZE_OR_OFFSET_CHANGE_CATEGORY
+       * src/abg-comp-filter.cc (type_size_changed): New overload for
+       type_base_sptr.
+       (data_member_type_size_changed): New predicate.
+       (harmful_filter::visit): Use the new predicate to categorize data
+       member type size changes into the SIZE_OR_OFFSET_CHANGE_CATEGORY.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Represent a removed+added data member at a given offset as changed
+       * include/abg-fwd.h (get_data_member_offset): Declare new overload for
+       decl_base_sptr.
+       * include/abg-comparison.h (unsigned_decl_base_sptr_map)
+       (unsigned_changed_type_or_decl_map): New typedefs.
+       * src/abg-ir.cc (get_data_member_offset): Define new overload for decl_base_sptr.
+       * src/abg-comparison.cc (diff_kind::subtype_change_kind): New
+       enumerator for a change about a type or sub-type of a member of a
+       structure/enum.
+       (report_mem_header): Handle the new enumerator above.
+       (class_diff::priv::{deleted_dm_by_offset_, inserted_dm_by_offset_,
+       changed_dm_}): New data members.
+       (class_diff::priv::subtype_changed_dm_): Renamed
+       class_diff::priv::changed_data_members_ into this.
+       (class_diff::priv::subtype_changed_dm): Renamed
+       class_diff::priv::data_member_has_changed into this. Adjust.
+       (class_diff::count_filtered_subtype_changed_dm): Renamed
+       count_filtered_data_members into this.  Adjust.
+       (class_diff::priv::count_filtered_changed_dm): New member
+       function.
+       (class_diff::lookup_tables_empty): Adjust.
+       (class_diff::ensure_lookup_tables_populated): Adjust.  Detect when
+       a data member is deleted and added back to offset N, and be
+       prepared to present that as a change of data member at offset N.
+       (class_diff::report): Adjust.  Report data members of a given
+       offset that have changed.
+       * tests/data/test-diff-dwarf/test6-report.txt: New reference
+       report for new test input.
+       * tests/data/test-diff-dwarf/test6-v0.cc: Source code for new test
+       input binary.
+       * tests/data/test-diff-dwarf/test6-v0.o: New test input binary.
+       * tests/data/test-diff-dwarf/test6-v1.cc: Source code for new test
+       input binary.
+       * tests/data/test-diff-dwarf/test6-v1.o: New test input binary.
+       * tests/test-diff-dwarf.cc: Adjust to include the new test inputs above.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Unmark class_diff node as being traversed once traversal is finished
+       * src/abg-comparison.cc (class_diff:traverse): Unmark class_diff
+       node as being traversed once traversal is finished
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Do not use the parent diff node link for category propagation
+       * src/abg-comparison.cc (class_diff::traverse): Use the new
+       TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY macro to propagate
+       categorization from the children diff nodes to the current one for
+       bases, data members and member functions.
+       (scope_diff::traverse): Likewise, use the
+       TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY to propagate
+       categorization from the children diff nodes to the current one.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure that each diff node is traversed just once
+       * include/abg-comparison.cc (pointer_map): New typedef.
+       (diff_context::{has_diff_for}): New overload for diff*.
+       (diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
+       forget_traversed_diffs}): Declare new methods.
+       * src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
+       (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Define new macros.
+       (diff_context::priv::traversed_diff_nodes_): New data member.
+       (diff_context::has_diff_for): New overload for diff*
+       (diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
+       forget_traversed_diffs}): Define new member functions.
+       (diff_context::maybe_apply_filters): Forget the traversed diffs
+       before applying a filter.
+       ({distinct_diff, var_diff, pointer_diff, reference_diff,
+       qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
+       function_decl_diff, type_decl_diff, typedef_diff,
+       translation_unit_diff}::traverse): Ensure that the diff node is
+       traversed only once.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Factorize diff sub-tree traversal and category propagation code
+       * src/abg-comparison.cc
+       (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
+       (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macros.
+       ({distinct_diff, pointer_diff, reference_diff,
+       qualified_type_diff, enum_diff, base_diff, function_decl_diff,
+       typedef_diff}::traverse): Use the new macro above in lieu of the
+       duplicated sub-tree traversal code in there.
+
+2014-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Style fixes in the diff nodes traversing code
+       * src/abg-comparison.cc (TRY_{PRE, PRO}_VISIT, TRY_{PRE,
+       PRO}_VISIT_CLASS_DIFF, ): Add a white space.
+
+2014-04-10  Dodji Seketeli <dodji@redhat.com>
+
+       Supporting reporting data member name change
+       * src/abg-comparison.cc (represent): Support reporting data member
+       name change.
+
+2014-04-10  Dodji Seketeli <dodji@redhat.com>
+
+       Consider added/removed data members as changing size or offset
+       * src/abg-comp-filter.cc (data_member_added_or_removed): New
+       static function.
+       (harmless_filter::visit): Re-organize logic.  Categorize data
+       member addition/removal into SIZE_OR_OFFSET_CHANGE_CATEGORY.
+
+2014-04-10  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing comment
+       * src/abg-ir.cc (non_type_tparameter::get_hash): Add missing api doc.
+
+2014-04-09  Dodji Seketeli <dodji@redhat.com>
+
+       Fix and add missing hashing through the virtual decl_base::get_hash
+       * include/abg-ir.h (struct {scope_decl, non_type_tparameter,
+       type_composition, class_decl}::hash): Declare hashers.
+       ({scope_decl, var_decl, non_type_tparameter, type_composition,
+       class_decl}::get_hash): Provide new overloads of the get_hash.
+       * src/abg-hash.cc ({type_decl, scope_type_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       enum_type_decl, typedef_decl, var_decl,
+       function_decl}::hash::operator()): If the hash is being
+       calculated, do not use the not-yet fully calculated hash value.
+       Rather, calculate the hash, cache it and return the value.
+       ({class_decl, non_type_tparameter}::hash::operator()): Moved the
+       {class_decl, non_type_tparameter}::hash declaration out of here
+       and stick it in include/abg-ir.h.  Keep the definition of the
+       hashing operators here though.
+       (type_composition::hash::operator()): New operator definition.
+       * src/abg-ir.cc ({scope_decl, var_decl, class_decl,
+       non_type_tparameter, type_composition}::get_hash): Define new
+       virtual overload.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Fix mis-hashing of base specifiers and function_decl during comparison
+       * include/abg-ir.h (function_decl::get_hash): Declare new virtual
+       overload.
+       * src/abg-hash.cc (class_decl::base_spec::hash::operator()):
+       Properly hash the base specifier so that it doesn't collide with
+       hashing a class.
+       * src/abg-ir.cc (decl_base::get_hash): Abort if we detect a
+       missing overload for this;
+       (function_decl::get_hash() const): Implement this missing
+       overload, allowing using the virtual decl_base::get_hash for
+       function_decl.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Properly place opening quote and add missing closing quote in report
+       * src/abg-comparison.cc (corpus_diff::report): Move the [{A,D}]
+       marker before the opening quote.  And add a closing quote.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test01-report.txt: Adjust.
+       * tests/data/test-diff-filter/test2-report.txt: Adjust.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Drive-by indentation fix
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix
+       indentation.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Drop ABI artifacts that are local to a function
+       * src/abg-dwarf-reader.cc (get_scope_for_die): If the parent die
+       is  DW_TAG_subprogram then just drop the whole thing on the floor.
+       (build_ir_node_from_die): When the scope is NULL, just drop the
+       whole thing on the floor.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Fix the static data member recognition hack
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
+       When trying to recognize the global var_decl as being definition
+       variables for static data members, lookup the declaration for the
+       data member in the relevant class.  If found, then just flag the
+       var_decl for the data member as being static; no need to add a
+       var_decl as data member in that case, that would duplicate the
+       data member.
+
+2014-04-08  Dodji Seketeli <dodji@redhat.com>
+
+       Fix looking up a node inside a class
+       * src/abg-ir.cc (lookup_node_in_scope): Do not forget to actually
+       look at the class members.  Sigh.
+
+2014-04-07  Dodji Seketeli <dodji@redhat.com>
+
+       Work around old dwarf producers forgetting mangled names for functions
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): If lookup
+       using mangled name for a deleted function yields nada, try the
+       lookup with the pretty representation for the function.
+
+2014-04-07  Dodji Seketeli <dodji@redhat.com>
+
+       Make type_base::get_{size,alignment}_in_bits virtual
+       * include/abg-ir.h (type_base::get_{size,alignment}_in_bits): Make
+       this virtual.
+       (typedef_decl::get_{size,alignment}_in_bits): Add new member
+       functions.  Get the size,alignment from the underlying type and
+       update the current size/alignment if they differ.  Keep in mind
+       that the size of an underlying class_decl can change over its
+       lifetime, given how the dwarf reader reads the type information,
+       i.e, there can be a DIE for a class type with no size information
+       that will lead to the creation of a class_decl with size zero.
+       Later during the DWARF reading process, another DIE will
+       supplement the type information, adding size information to that
+       class_decl.  In between, a typedef_decl might have been created
+       with the first version of the class_decl that has a zero size.  I
+       guess this should be extended to the other type constructs that
+       have an underlying type (qualified types, references and pointers).
+
+2014-04-07  Dodji Seketeli <dodji@redhat.com>
+
+       Look through typedefs when setting SIZE_OR_OFFSET_CHANGE_CATEGORY
+       * include/abg-fwd.h (is_class_type): Declare new functions.
+       * src/abg-comp-filter.cc (harmful_filter::visit): Use the above to
+       convert a type into a class.
+       * src/abg-ir.cc (is_class_type): Define the new function.
+
+2014-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Add a new DECL_NAME_CHANGE_CATEGORY change category
+       * include/abg-comparison.h (enum
+       diff_category::DECL_NAME_CHANGE_CATEGORY): New enumerator.
+       * src/abg-comparison.cc (report_name_size_and_alignment_changes)
+       ({enum, typedef}_diff::report): Adjust to avoid emitting name
+       change report if the DECL_NAME_CHANGE_CATEGORY category of change
+       is currently disallowed.
+       * abg-comp-filter.cc (decl_name_changed): New static function.
+       (harmless_filter::visit): Detect that the decl name changed and
+       put the current diff node (and its parents) into the
+       DECL_NAME_CHANGE_CATEGORY category.
+       * tools/bidiff.cc (set_diff_context_from_opts): Set the new
+       DECL_NAME_CHANGE_CATEGORY category into the harmless_changes group
+       of categories.
+       * tests/data/test-diff-filter/test6-report.txt: New test input file.
+       * tests/data/test-diff-filter/test6-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test6-v0.o: Likewise.
+       * tests/data/test-diff-filter/test6-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test6-v1.o: Likewise.
+       * tests/data/test-diff-filter/test7-report.txt: Likewise.
+       * tests/data/test-diff-filter/test7-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test7-v0.o: Likewise.
+       * tests/data/test-diff-filter/test7-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test7-v1.o: Likewise.
+       * tests/test-diff-filter.cc: Take the new inputs above to run new tests.
+       * tests/Makefile.am: Add the new files above to the distribution.
+
+2014-04-05  Dodji Seketeli <dodji@redhat.com>
+
+       Emit qualified name for typedefs
+       * src/abg-comparison.cc (typedef_diff::report): Emit qualified
+       names for typedefs in diff reports about typedef name changes.
+
+2014-04-05  Dodji Seketeli <dodji@redhat.com>
+
+       Fix indentation in distinct type diff report
+       * src/abg-comparison.cc (distinct_diff::report): Do not forget to
+       change line.
+
+2014-04-05  Dodji Seketeli <dodji@redhat.com>
+
+       Really compare return types for function types
+       * src/abg-ir.cc (compare_function_types): Compare return types,
+       unless this is a method and the return type is the same type as
+       the containing class type.
+       * tests/data/test-diff-dwarf/test5-report.txt: Reference report
+       for the comparison of the two input binaries below.
+       * tests/data/test-diff-dwarf/test5-v0.cc: Source code for the
+       input binary below.
+       * tests/data/test-diff-dwarf/test5-v0.o: Test input binary.
+       * tests/data/test-diff-dwarf/test5-v1.cc: Source code for the
+       input binary below.
+       * tests/data/test-diff-dwarf/test5-v1.o: Test input binary.
+
+2014-04-05  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing tests for previous commits
+       * tests/data/test-diff-dwarf/test4-report.txt: Adjust.
+       * tests/test-diff-dwarf.cc: Run tests for
+       data/test-diff-dwarf/test3-report.txt" and
+       data/test-diff-dwarf/test4-report.txt.
+
+2014-04-05  Dodji Seketeli <dodji@redhat.com>
+
+       Categorize through compatible distinct type diffs
+       * src/abg-comparison.cc (report_size_and_alignment_changes): Split
+       this static function out of ...
+       (report_name_size_and_alignment_changes): ... this one.
+       (distinct_diff::report): If the typedef-stripped variants of the
+       diff subjects are of the same kind, display their diff.
+       Otherwise, tell explicitly is the distinct type diff involves a
+       type size change.
+       (distinct_diff::traverse): If the typedef-stripped variants of the
+       diff subjects are of the same kind, traverse that underlying diff
+       sub-tree and propagate the categorizing possibly resulting from
+       that traversal.
+       * tests/data/test-diff-dwarf/test4-v0.o: New test input binary.
+       * tests/data/test-diff-dwarf/test4-v0.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-dwarf/test4-v1.o: New test input binary.
+       * tests/data/test-diff-dwarf/test4-v1.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-dwarf/test4-report.txt: Reference report
+       for the difference between the two binaries above.
+       * tests/data/test-diff-filter/test5-v0.o: New test input binary.
+       * tests/data/test-diff-filter/test5-v0.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-filter/test5-v1.o: New test input binary.
+       * tests/data/test-diff-filter/test5-v1.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-filter/test5-report.txt: Reference report
+       for the difference between the two binaries above.
+       * tests/test-diff-filter.cc: Adjust to produce a filtered diff for
+       the two input binaries above.
+       * tests/Makefile.am: Adjust to add missing test files to the
+       distribution.
+
+2014-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Slight run-by fixes
+       * src/abg-comparison.cc
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats)
+       (corpus_diff::report): Use compute_diff for types which it has an
+       overload rather than going through the compute_diff_for_decls that
+       would use dynamic casting.
+
+2014-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Do not hook type diff nodes to a parent
+       * abg/comparison.cc (var_diff::var_diff): Do not set parent node
+       for the type diff of the var_diff.
+       (var_diff::traverse): Handle category propagation from the
+       type diff node to the var_diff node.
+       (pointer_diff::underlying_type_diff)
+       (reference_diff::underlying_type_diff)
+       (qualified_type_diff::underlying_type_diff, enum_diff::enum_diff)
+       (base_diff::get_underlying_class_diff)
+       (typedef_diff::underlying_type_diff): Do not set the parent node
+       here.
+       ({pointer_diff, reference_diff, qualified_type, enum_diff,
+       class_diff, base_diff, function_decl_diff,
+       typedef_diff}::traverse): Handle category propagation here.
+       * tests/data/test-diff-filter/test4-v0.o: New input binary.
+       * tests/data/test-diff-filter/test4-v0.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-filter/test4-v1.o: New input binary.
+       * tests/data/test-diff-filter/test4-v1.cc: Source code for the
+       input binary above.
+       * tests/data/test-diff-filter/test4-report.txt: Reference diff
+       report for the input binaries above.
+       * tests/test-diff-filter.cc:: Run bidiff --no-harmless on the
+       binaries above.
+
+2014-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Fix off-by one comparison bug in comparing function parameters
+       * src/abg-comparison.cc
+       (function_decl_diff::ensure_lookup_tables_populated): Function
+       parameters that are diff'ed start at the first non-implicit
+       parameter, not at the first parameter.  Oops.
+       * tests/data/test-diff-dwarf/test3-v0.o: New test input binary.
+       * tests/data/test-diff-dwarf/test3-v0.cc: Source code for the
+       binary above.
+       * tests/data/test-diff-dwarf/test3-v1.o: New test input binary.
+       * tests/data/test-diff-dwarf/test3-v1.cc: Source code for the
+       binary above.
+       * tests/data/test-diff-dwarf/test3-report.txt: Reference report
+       for the diff of the new test inputs.
+       * tests/test-diff-dwarf.cc: Use the test inputs above to run new
+       tests.
+
+2014-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget parm sub-type changes as opposed to parm changes
+       * src/abg-comparison.cc
+       (function_decl_diff::ensure_lookup_tables_populated): A parm
+       change is valid only when the added parm has a different name from
+       the removed parm.  Both have the same index, of course.  In that
+       case, do not try to remove the corresponding parm sub-type change.
+       * tests/data/test-bidiff/test-enum0-report.txt: Adjust.
+       * tests/data/test-bidiff/test-enum1-report.txt: Adjust.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
+       * tests/data/test-bidiff/test-struct0-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+       * tests/data/test-diff-dwarf/test1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test0-report.txt: Adjust.
+       * tests/data/test-diff-filter/test01-report.txt: Adjust.
+       * tests/data/test-diff-filter/test1-report.txt: Adjust.
+       * tests/data/test-diff-filter/test2-report.txt: Adjust.
+       * tests/data/test-diff-filter/test3-report.txt: Adjust.
+
+2014-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless white space
+       * src/abg-ir.cc (look_through_decl_only_class): Remove useless
+       white space.
+
+2014-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Use mangled name for decl comparison when it's present
+       * src/abg-ir.cc (decl_base::operator==(const decl_base& other)
+       const): Use the mangled name of the decl in priority.
+       * src/abg-hash.cc (struct decl_base::hash::operator()): Likewise.
+       * src/abg-comparison.cc (function_decl_diff::report): Do not
+       report a function name change if it doesn't involve a mangled name
+       change.  This might change when we start dealing with templates.
+
+2014-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       A change involving a decl-only class is not SIZE_OR_OFFSET_CHANGE_CATEGORY
+       * src/abg-comp-filter.cc (harmful_filter::visit): If a size change
+       involves a decl-only class, it certainly shouldn't trigger putting
+       the sub-tree into the SIZE_OR_OFFSET_CHANGE_CATEGORY category.
+
+2014-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Fix heuristics to detect function static-ness for DWARF < 3
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Make
+       the heuristics work for functions with no parameters.
+
+2014-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid emitting local filtered-out changes in more spots
+       * src/abg-comparison.cc (maybe_report_diff_for_member): Take the
+       diff_context in parameter.  Use that to check if local changes of
+       category ACCESS_CHANGE_CATEGORY are filtered-out and do not report
+       the change in that case.
+       ({var_diff, enum_diff, class_diff, base_diff,
+       function_decl_diff}::report): Adjust.
+
+2014-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Add a COMPATIBLE_TYPE_CHANGE_CATEGORY to bidiff --no-harmless
+       * include/abg-comparison.h
+       (diff_category::COMPATIBLE_TYPE_CHANGE_CATEGORY): New enumerator.
+       (operator|=(diff_category&, diff_category)): New declaration.
+       * include/abg-fwd.h (is_typedef, strip_typedef)
+       (types_are_compatible): New declarations.
+       * include/abg-ir.h (operator==(const decl_base_sptr, const
+       decl_base_sptr)): Added the consts here.
+       (operator==(const type_base_sptr, const type_base_sptr)): New
+       declaration.
+       * src/abg-comp-filter.cc (is_compatible_change): New static
+       function.
+       (harmless_filter::visit): Detect compatible changes and add the
+       sub-tree into the new COMPATIBLE_TYPE_CHANGE_CATEGORY if
+       applicable. Cleanup the logic.
+       * src/abg-comparison.cc (operator|=(diff_category&,
+       diff_category)): Define new function.
+       (operator==(const decl_base_sptr l, const decl_base_sptr r)): Add
+       consts.
+       (operator==(const type_base_sptr l, const type_base_sptr r)):
+       Define new operator.
+       (is_typedef, strip_typedef, types_are_compatible): New function
+       definitions.
+       * tests/data/test-diff-filter/test3-report.txt: New test report
+       reference.
+       * tests/data/test-diff-filter/test3-v0.cc: Source code for new
+       test input.
+       * tests/data/test-diff-filter/test3-v0.o: New test input.
+       * tests/data/test-diff-filter/test3-v1.cc: Source code for new
+       test input.
+       * tests/data/test-diff-filter/test3-v1.o: New test input.
+       * tests/test-diff-filter.cc: Adjust to consume the new tests
+       inputs above.
+       * tools/bidiff.cc: Add the new COMPATIBLE_TYPE_CHANGE_CATEGORY
+       into the --harmless group.
+
+2014-04-01  Dodji Seketeli <dodji@redhat.com>
+
+       Don't emit local filtered-out changes
+       * src/abg-comparison.cc (represent): For var_decl, do not emit
+       filtered-out local size/offset/access changes.
+       (report_name_size_and_alignment_changes): Take the diff context.
+       Do not report filtered-out local size/offset changes.
+       ({var_diff, enum_diff, class_diff, type_decl_diff}::report):
+       Adjust.
+       * test0-report.txt: Adjust.
+       * test01-report.txt: New reference report for the same inputs
+       test0-v{1,0}.o, but called without the --no-harmless command line.
+       * tests/data/test-diff-filter/test2-v0.cc: Source code for new test input.
+       * tests/data/test-diff-filter/test2-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test2-v0.o: New test input.
+       * tests/data/test-diff-filter/test2-v1.o: Likewise.
+       * tests/data/test-diff-filter/test2-report.txt: Reference report
+       for new test input.
+       * tests/test-diff-filter.cc: Consume the test inputs above.
+       * tests/Makefile.am: Add the new test inputs above to the
+       distribution.
+
+2014-04-01  Dodji Seketeli <dodji@redhat.com>
+
+       Compact & intuitive reporting for changed function parameters
+       * include/abg-comparison.h (unsigned_changed_parm_map)
+       (unsigned_parm_map): New typedefs.
+       * src/abg-comparison.cc
+       (function_decl_diff::subtype_changed_parms): Renamed this from
+       changed_parms.
+       (function_decl_diff::priv::subtype_changed_parms_}): Renamed this
+       from changed_parms_;
+       (function_decl_diff::priv::{deleted_parms_by_id_,
+       added_parms_by_id_, changed_parms_by_id_}): New members.
+       (function_decl_diff::ensure_lookup_tables_populated): Update the
+       new priv::changed_parms_by_id_ member to contain the parameters
+       that got changed, as opposed to the subtype_changed_parms_ member
+       that contain parameters that got a sub-type change.  The other
+       priv::*_by_id_ members are helpers for this.  Update them too.
+       (function_decl_diff::subtype_changed_parms): Renamed this from
+       ::changed_parms.
+       (function_decl_diff::report): Report separately about parameters
+       having a sub-type change, and parameters that got changed.  Note
+       that in both cases, the change is necessarily to a compatible
+       type.
+       * data/test-diff-dwarf/test2-v0.cc: New test file.
+       * data/test-diff-dwarf/test2-v0.o: Likewise.
+       * data/test-diff-dwarf/test2-v1.cc: Likewise.
+       * data/test-diff-dwarf/test2-v1.o: Likewise.
+       * data/test-diff-dwarf/test2-report.txt: Likewise.
+       * tests/Makefile.am: Add the new test files above to the
+       distribution.
+       * tests/test-diff-dwarf.cc: Consume the input files above to
+       actually perform a regression test.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix thinko class_diff traversing.
+       * src/abg-comparison.cc (class_diff::traverse): Fix thinking in
+       introduced by commit "6709478 Fix infinite loop when traversing
+       classes and their members"
+       * tests/data/test-diff-filter/test1-v{0,1}.o: New test binary input files.
+       * tests/data/test-diff-filter/test1-v{0,1}.cc: Source code for the
+       above.
+       * tests/data/test-diff-filter/test1-report.txt: Reference report
+       for the diffing of the two binary input files above.
+       * tests/test-diff-filter.cc: Make the test run on the new input above.
+       * tests/Makefile.am: Add the new material to the distribution.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Add forgotten test output adjustment
+       * tests/data/test-diff-filter/test0-report.txt: Adjust for the
+       commit "a8d5284 Fix diff report indentation issue"
+       * tests/data/test-diff-dwarf/test{0,1}-report.txt: Likewise.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Add forgotten source file for binary test input
+       * tests/data/test-diff-dwarf/test1-v0.cc: New file.
+       * tests/data/test-diff-dwarf/test1-v1.cc: Likewise.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix diff report indentation issue
+       * abg-comparison.cc (corpus_diff::report): Indent the details of
+       function changes.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix infinite loop when traversing classes and their members
+       * src/abg-comparison.cc (TRY_{PRE,POST}_VISIT_CLASS_DIFF): New
+       macros.
+       (class_diff::priv::traversing_): New flag.
+       (class_diff::priv::priv): New constructor to initialize the new
+       flag above.
+       (class_diff::traversing): Do not traverse the diff again if it's
+       being traversed already.
+
+2014-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix access_changed and data_member_offset_changed predicates
+       * src/abg-comp-filter.cc (access_changed)
+       (data_member_offset_changed): Fix detection of membership.
+
+2014-03-29  Dodji Seketeli <dodji@redhat.com>
+
+       Take filtering in account in diff stats & better categorizing
+       * include/abg-comparison.h
+       (diff_category::ACCESS_CHANGE_CATEGORY): Renamed
+       ACCESS_CHANGED_CATEGORY into this.
+       (diff_category::SIZE_OR_OFFSET_CHANGE_CATEGORY): Renamed
+       SIZE_CHANGED_CATEGORY into this.  Changed its semantics to
+       incorporate offset changes as well.
+       * src/abg-comparison.cc (struct noop_deleter): Move this up.
+       (represent): Do not report filtered out data members.
+       (report_mem_header): Add a new num_filtered parameter to take
+       filtered-out members in account in members report headers.
+       Adjust.
+       (class_diff::priv::{count_filtered_bases,
+       count_filtered_data_members, count_filtered_member_functions}):
+       New member functions.  When a member is filtered, do not report
+       it all.
+       ({enum_diff, class_diff}::report): Adjust.  Take filtered members
+       into account in headers.
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats): New
+       member function.
+       (corpus_diff::priv::emit_diff_stats): Renamed
+       emit_corpus_diff_stats into this.  Change it to take the stats in
+       parameter.
+       (corpus_diff::report): Adjust to re-use the above.  Filter
+       varibles as well.  Take the filtered functions & variables in
+       account in the stats.  Do not report filtered-out functions &
+       variables at all.
+       * src/abg-comp-filter.cc (type_size_changed, access_changed)
+       (data_member_offset_changed): New predicates.
+       ({harmless, harmful}_filter::visit): Adjust to use the new
+       predicates above.  Update the harmful variant for the new
+       SIZE_OR_OFFSET_CHANGE_CATEGORY category.
+       * tools/bidiff.cc (set_diff_context_from_opts): Adjust for the
+       categories name changes.
+       * tests/data/test-diff-filter/test0-report.txt: New test input.
+       * tests/data/test-diff-filter/test0-v0.cc: Likewise.
+       * tests/data/test-diff-filter/test0-v0.o: Likewise.
+       * tests/data/test-diff-filter/test0-v1.cc: Likewise.
+       * tests/data/test-diff-filter/test0-v1.o: Likewise.
+       * tests/test-diff-filter.cc: New test harness.
+       * tests/Makefile.am: Add the new test files above to the
+       distribution.
+
+2014-03-29  Dodji Seketeli <dodji@redhat.com>
+
+       Fix var_diff length determination
+       * src/abg-comparison.cc (var_diff::length):  Just compare the two
+       diff subjects.
+
+2014-03-29  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typos in the test-diff-dwarf.cc source code
+       * tests/test-diff-dwarf.cc: Fix various typos.
+
+2014-03-27  Dodji Seketeli <dodji@redhat.com>
+
+       Initial implementation of diff tree node filtering
+       * include/abg-comp-filter.h: New file.
+       * include/Makefile.am: Add the new include/abg-comp-filter.h to
+       the source distribution.
+       * include/abg-comparison.h (enum visiting_kind, diff_category): New enums.
+       (operator|): Declare new operator declaration for the new
+       visiting_kind enum.
+       (operator{|,^,&,~}): Declare new operator decl for the new
+       diff_category enum.
+       (diff_context::{get_allowed_category, set_allowed_category,
+       switch_categories_on, switch_categories_off, diff_filters,
+       add_diff_filter, maybe_apply_filters}): Declare new member functions.
+       (diff::{parent_, category_}): New members.
+       (diff::diff): Adjust.
+       (diff::{get_parent, set_parent, get_category, add_to_category,
+       is_filtered_out, to_be_reported}):  New members.
+       (diff_node_visitor::{get_visiting_kind, set_visiting_kind}): New
+       members.
+       (diff_node_visitor::visit): Add a new flag to saying if the
+       visitor is being called in post or pre children traversing mode.
+       * src/abg-comparison.cc (operator|): Declare new operator
+       declaration for the new visiting_kind enum.
+       (operator{|,^,&,~}): Declare new operator decl for the new
+       diff_category enum.
+       (diff_context::priv::{allowed_category_, filters_}): New members.
+       (diff_context::diff_context): Add all known filters.
+       (diff_context::{get_allowed_category, set_allowed_category,
+       switch_categories_on, switch_categories_off, diff_filters,
+       add_diff_filter, maybe_apply_filters}): Define new member
+       functions.
+       (diff::{is_filtered_out, to_be_reported}): Define new members.
+       (*::report): Use the new diff::to_be_reported function.
+       (*::traverse): Adjust for pre/post visiting.
+       (var_diff::var_diff): Chain the type diff node to its parent.
+       ({pointer_diff, reference_diff, qualified_type_diff,
+       typedef_diff}::underlying_type_diff): Chain the underlying type
+       diff node to its parent.
+       (enum_diff::enum_diff): Likewise.
+       (base_diff::underlying_class_diff): Likewise.
+       ({class_diff, corpus_diff}::report): Do not report changed
+       (member) functions that have been filtered out.  Rather report
+       that they have been filtered out.
+       ({function_decl_diff, class_diff}::traverse): Chain underlying
+       type diff nodes to their parent.
+       (diff_node_visitor::visit): Add a new flag to saying if the
+       visitor is being called in post or pre children traversing mode.
+       Make sure to call the default diff::visit overload.
+       * src/abg-comp-filter.cc: New file.
+       * src/Makefile.am: Add the new abg-comp-filter.cc to the source
+       distribution.
+       * tools/bidiff.cc (options::show_harm{ful,less}_changes): New
+       members.
+       (display_usage): Add usage strings for --no-harmless and
+       --no-harmful options.
+       (parse_command_line): Parse --no-harmless and --no-harmful command
+       line options.
+       (set_diff_context_from_opts): Populate the diff context
+       accordingly.
+
+2014-03-26  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing headers double inclusion guards
+       * include/abg-comparison.h: Add a missing double inclusion guard.
+       * include/abg-diff-utils.h: Likewise.
+
+2014-03-26  Dodji Seketeli <dodji@redhat.com>
+
+       Add a missing apostrophe to access reporting
+       * src/abg-comparison.cc (represent): For member var_decls, add a
+       missing apostrophe after the access.
+       * tests/data/test-diff-dwarf/test0-report.txt: Update test report.
+
+2014-03-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix diff emptiness detection for function_decl_diff nodes
+       * src/abg-comparison.cc (function_decl_diff::length): Just compare
+       the two functions here, damit.
+       * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
+
+2014-03-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fixlets in the bidiff regression testing harness
+       * tests/test-bidiff.cc (main): Fix a typo.  Fix the path to the
+       output path.
+
+2014-03-21  Dodji Seketeli <dodji@redhat.com>
+
+       Initial regression test for dwarf diffing
+       * tests/test-diff-dwarf.cc: New dwarf diffing regression test
+       harness.
+       * tests/data/test-diff-dwarf/test0-report.txt: New test input.
+       * tests/data/test-diff-dwarf/test0-v0.cc: Likewise.
+       * tests/data/test-diff-dwarf/test0-v0.o: Likewise.
+       * tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
+       * tests/data/test-diff-dwarf/test0-v1.o: Likewise.
+       * tests/Makefile.am: Add the new test inputs from
+       tests/test-diff-dwarf.cc and tests/data/test-diff-dwarf/* to
+       the build system.
+
+2014-03-21  Dodji Seketeli <dodji@redhat.com>
+
+       Rename test-walker.cc into test-ir-walker.cc
+       * tests/test-ir-walker.cc: Renamed test-walker.cc into this.
+       * tests/Makefile.am: Adjust.  The generated binary is now testirwalker.
+
+2014-03-21  Dodji Seketeli <dodji@redhat.com>
+
+       Initial diff tree traversal infrastructure
+       * include/abg-comparison.h (struct diff_traversable_base, struct
+       diff_node_visitor): New type.
+       (class diff): Extends the new diff_traversable_base.
+       ({diff, distinct_diff, var_diff, pointer_diff, reference_diff,
+       qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
+       function_decl_diff, type_decl_diff, typedef_diff,
+       translation_unit_diff, corpus_diff}::traverse): New methods.
+       (function_decl_diff::return_type_diff): New accessor.  Renamed
+       return_diff into this.
+       (translation_unit_diff::{first, second}_translation_unit): New
+       accessors.
+       (corpus_diff::{deleted, added, changed}_functions): New accessors.
+       * src/abg-comparison.cc ({distinct_diff, var_diff,
+       pointer_diff, reference_diff, qualified_type_diff, enum_diff,
+       class_diff, base_diff, scope_diff, function_decl_diff,
+       type_decl_diff, typedef_diff, translation_unit_diff,
+       corpus_diff}::traverse): New function implementations.
+       (maybe_report_diff_for_member): Renamed
+       maybe_report_diff_for_class_members into this.
+       (var_diff::report): Adjust.
+       (struct translation_unit_diff::priv): New private type.
+       (translation_unit_diff::translation_unit_diff): Instantiate the
+       new priv_ member.
+       (translation_unit_diff::{first,second}_translation_unit): New
+       accessors.
+       (corpus_diff::{deleted, added, changed}_functions): New function
+       implementations.
+       (diff_node_visitor::visit): New function implementations.
+
+2014-03-19  Dodji Seketeli <dodji@redhat.com>
+
+       Make tree walking preemptive
+       * include/abg-traverse.h (traversable_base::traversable): Change
+       the signature of this to return a boolean.
+       * include/abg-ir.h (ir_traversable_base::traverse): Change the
+       signature of this to return a boolean.
+       (*::traverse): Adjust.
+       (ir_node_visitor::visit): Change the signature of this to return a
+       boolean.
+       * src/abg-corpus.cc (symtab_build_visitor_type::visit): Adjust.
+       * src/abg-ir.cc (::traverse): Adjust.
+       * tests/test-walker.cc (name_printing_visitor::visit): Adjust.
+
+2014-03-26  Jonathan Wakely <jwakely@redhat.com>
+
+       Fix comment typos
+       * include/abg-diff-utils.h (compute_diff): Fix typo in apidoc
+       comment.
+
+2014-03-24  Dodji Seketeli <dodji@redhat.com>
+
+       Follow DW_AT_abstract_origin and add missing mangled name
+       * src/abg-dwarf-reader.cc (build_function_decl): Change signature
+       to take function_decl to which one shall add properties that got
+       added by subsequent DIEs later.
+       (build_class_type_and_add_to_ir): Adjust.
+       (build_function_decl): Allow adding new properties to an existing
+       function_decl.  Add the mangled name in particular.
+       * tests/data/test-read-dwarf/test1.abi: Update test.
+
+2014-03-20  Dodji Seketeli <dodji@redhat.com>
+
+       Fix destructor naming.
+       * src/abg-ir.cc (function_decl::get_pretty_representation): In
+       DWARF at least, the destructor function name already contains the
+       '~'.  No need to add it.
+
+2014-03-20  Dodji Seketeli <dodji@redhat.com>
+
+       Better static function determination heuristic
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Better
+       heuristic.
+
+2014-03-20  Dodji Seketeli <dodji@redhat.com>
+
+       Dynamically wire class_decl::base_spec hashing
+       * include/abg-ir.h (decl_base::get_hash): Make this virtual.
+       (class_decl::base_spec::get_hash): Declare a new virtual overload.
+       * src/abg-ir.cc (class_decl::base_spec::get_hash): Define.
+
+2014-03-20  Dodji Seketeli <dodji@redhat.com>
+
+       Slight indentation fix in the diff report
+       * src/abg-comparison.cc (class_diff::report): Indentation fix for
+       member function changes report.
+
+2014-03-20  Dodji Seketeli <dodji@redhat.com>
+
+       Get rid of class_decl::member_function
+       * include/abg-fwd.h (is_member_function)
+       (get_member_function_is_{ctor,dtor,const})
+       (get_member_function_vtable_offset): New function declarations.
+       * include/abg-ir.h (class_decl::member_function): Remove.
+       (class_decl::member_functions): Adjust.  This is now just a vector
+       of method_decl_sptr.
+       (class_decl::add_member_function): Remove the overload taking
+       class_decl::member_function.  Adjust the other overload to take a
+       method_decl_sptr.
+       (class mem_fn_context_rel): New class.
+       (class_decl::method_decl::set_scope): New virtual overload.
+       (class_decl::member_function): Remove.
+       (operator==): Remove the overload taking a
+       class_decl::member_function.
+       (class_decl::member_function::hash): Remove.
+       (ir_node_visitor::visit): Remove the overload taking a
+       class_decl::member_function.
+       * include/abg-comparison.h (changed_member_function_sptr)
+       (string_member_function_sptr_map): Adjust.
+       * src/abg-comparison.cc (represent): Adjust the overload taking a
+       class_decl::member_function to take a class_decl::method_decl.
+       (class_diff::{report, ensure_lookup_tables_populated}): Adjust.
+       * src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
+       overload taking a class_decl::member_function.
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
+       Adjust.
+       * src/abg-hash.cc (decl_base::hash::operator()): Use the fully
+       qualified name of the decl in the hash, to increase the likelihood
+       of avoiding hash collisions.
+       (method_type::hash::operator()): Likewise.
+       (function_decl::hash::operator()): Take member functions in
+       account.
+       (class_decl::member_function::hash::operator()): Remove.
+       (class_decl::hash::operator()): Adjust.
+       (type_base::dynamic_hash::operator()): Adjust.
+       * src/abg-ir.cc (is_member_function)
+       (get_member_function_is_{ctor,dtor,const})
+       (get_member_function_vtable_offset): New function definitions.
+       (function_decl::get_pretty_representation): Adjust.
+       (function_decl::operator): Take member functions in account here.
+       (class_decl::insert_member_decl): Adjust.
+       (mem_fn_context_rel::~mem_fn_context_rel): New definition.
+       (class_decl::member_function::*): Remove.
+       (class_decl::method_decl::set_scope): New definition.
+       (class_decl::get_num_virtual_functions): Adjust.
+       (class_decl::add_member_function): Remove overload taking a
+       class_decl::member_function.  Define a new overload taking a
+       class_decl::method_decl.
+       (ir_node_visitor::visit): Remove the overload taking a
+       class_decl::member_function.
+       * src/abg-reader.cc (build_class_decl): Adjust.
+       * src/abg-writer.cc (write_voffset, write_class_decl): Adjust.
+
+2014-03-19  Dodji Seketeli <dodji@redhat.com>
+
+       Get rid of class_decl::data_member
+       * include/abg-fwd.h (has_scope): Delete the overloads for
+       type_base.
+       (get_member_is_static): Add an overload for decl_base*.
+       ({is,get,set}_data_member,{get_,set}_data_member_is_laid_out)
+       ({get,set}_data_member_offset): New access declarations.
+       * include/abg-ir.h (class context_rel): Move up.
+       (decl_base::set_context_rel): New definition.
+       (class dm_context_rel): New type.
+       (decl_base::hash_as_member): Remove.
+       (var_decl::set_scope): Declare new virtual member.
+       (class_decl::data_member): Remove.
+       (ir_node_visitor::visit): Remove the overload for
+       class_decl::data_member.
+       (represent_data_member): Remove the represent overload for
+       class_decl::data_member into this.  Make it take a var_decl.
+       (represent): Change the overload that takes two
+       class_decl::data_member take two var_decl.  And adjust it.
+       (class_diff::report): Adjust.
+       * src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
+       overload that takes a class_decl::data_member*.  Adjust the
+       overload that takes a var_decl to recognize (static) data members.
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
+       (build_class_type_and_add_to_ir, build_ir_node_from_die):
+       Adjust.
+       * src/abg-hash.cc (var_decl::hash::operator()): Adjust.
+       (class_decl::data_member::hash::operator()): Remove.
+       (decl_base::hash::operator()): Take the context relationship in
+       account here.
+       (decl_base::hash_as_member::operator()): Remove.
+       ({enum_type_decl,typedef_decl}::hash::operator()): Adjust.
+       (class_decl::member_function::hash::operator()): Adjust.
+       (type_base::dynamic_hash::operator()): Adjust.
+       * src/abg-ir.cc (dm_context_rel::~dm_context_rel): New definition.
+       (has_scope): Remove overload for type_base.
+       (get_member_is_static): New overload for decl_base*.
+       (is_data_member): New function definition.
+       ({get,set}_data_member_{offset,is_laid_out}): Define new
+       accessors.
+       (var_decl::set_scope): Define new member function.  Make this set
+       a dm_context_rel as the context relationship.
+       (var_decl::operator==): Adjust to take in account the new data
+       member relationship.
+       (class_decl::class_decl): Adjust.
+       (class_decl::insert_member_decl): Adjust.
+       (class_decl::add_data_member): Remove the overload for
+       class_decl::data_member.
+       (class_decl::add_data_member): Adjust the overload for var_decl.
+       (operator==): Remove overload for class_decl::data_member*.
+       (class_decl::data_member::operator==): Likewise.
+       (ir_node_visitor::visit): Remove overload for
+       class_decl::data_member.
+       * src/abg-writer.cc (write_layout_offset, write_class_decl):
+       Adjust.
+       * tests/data/test-read-write/test20.xml: Adjust.
+
+2014-03-18  Dodji Seketeli <dodji@redhat.com>
+
+       Better base class diff reporting
+       * include/abg-comparison.h (class base_diff): New.
+       * include/abg-ir.h (function_decl::get_first_non_implicit_parm):
+       New member function.
+       (function_type::get_first_non_implicit_parm): Likewise.
+       * src/abg-comparison.cc (base_has_changed): Change parm to take
+       class_decl::base_spec_sptr.
+       (class_diff::ensure_lookup_tables_populated): Compare the base
+       specs not just the base classes.
+       (class_diff::report): Adjust.  Report sub-type changes in the
+       member functions.
+       (base_diff::*): Define member functions.
+       (compute_diff): Define an overload for base_diff_sptr.
+       * src/abg-hash.cc ({function_type,
+       method_type}::hash::operator()): Do not hash the implicit parm of
+       member functions.
+       (class_decl::hash::operator()):  Do not hash member types.
+       * src/abg-ir.cc (decl_base::decl_base): Initialize the
+       hashing_started_ member that got moved here from class_decl.
+       (decl_base::get_hash): Do not set the hash if it's being set b/c
+       we are in a class_decl.
+       (decl_base::operator==) Do not compare hashes for now.  Two decls
+       can have different hashes and compare equal; think about an
+       incomplete type foo, that compares equal with a complete foo.
+       Their hashes will be different though.  So for now, just avoid
+       comparing these.
+       (compare_function_types): Avoid comparing the implicit parameter
+       for member functions.
+       ({function, method}_type::get_first_non_implicit_parm): New
+       definition.
+       * tests/data/test-read-write/test20.xml: Update.
+
+2014-03-13  Dodji Seketeli <dodji@redhat.com>
+
+       Do not report change in typedef underlying type is there is none
+       * src/abg-comparison.cc (typedef_diff::report): Do not forget to
+       check the length of the diff of the underlying type before sending
+       its diff report down the wire.
+
+2014-03-13  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid hashing a access & static-ness of member types twice
+       * src/abg-hash.cc (class_decl::hash::operator()): Do hash the
+       'member' part of the member types here, it has been hashed
+       already.
+
+2014-03-13  Dodji Seketeli <dodji@redhat.com>
+
+       Set class {size,loc} when adding members to a decl-only class
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
+       forget to set class size and location when adding members to a
+       declaration-only class, turning it into a definition class.
+
+2014-03-13  Dodji Seketeli <dodji@redhat.com>
+
+       Use the same representation for member and non-member types
+       * include/abg-fwd.h (is_at_class_scope): Add new oveloads.
+       (as_non_member_type, as_non_member_class_decl): Remove.
+       (has_scope, is_member_decl, is_member_type): New function
+       declarations.  (get_member_is_static, set_member_is_static):
+       Likewise.  * include/abg-ir.h (enum access_specifier): Move to
+       the abigail:: namespace, from ...
+       (class_decl::access_specifier): ... here.  (class
+       context_rel): New type.  (decl_base::hash_as_member): New
+       hasher.  (decl_base::context_): Change the type of this to
+       context_rel_sptr.  (decl_base::get_context_rel): New protected
+       getter.  (decl_base::get_scope): Move this out-of-line.
+       (class_decl::member_type): Remove.
+       (class_decl::member_types): Adjust this typedef.
+       (class_decl::{insert,add}_member_type): Make these take a
+       type_base_sptr now.  (class_decl::add_member_type): Change the
+       overload that returned a member_type to return a
+       type_base_sptr.  (get_member_access_specifier,
+       set_member_access_specifier): New function declarations.  *
+       include/abg-comparison.h (class member_type_diff): Remove.
+       (compute_diff): Remove the overload for member_type_diff.  *
+       src/abg-comparison.cc (compute_diff_for_types): Adjust for the
+       removal of class_decl::member_type.
+       (maybe_report_diff_for_class_members): New static function.
+       (report_name_size_and_alignment_changes): Do not report a name
+       change just because of a struct -> class change.  ({var_diff,
+       enum_diff, function_decl_diff}::report): Use the new
+       maybe_report_diff_for_class_members.  (class_diff::report):
+       Adjust for the removal of class_decl::member_type.  Use the
+       new maybe_report_diff_for_class_members.  (class member_diff):
+       Remove.  * src/abg-dwarf-reader.cc (die_access_specifier)
+       (get_scope_for_die, build_translation_unit_and_add_to_ir)
+       (build_class_type_and_add_to_ir, build_function_decl)
+       (build_ir_node_from_die): Adjust.  * abg-hash.cc (struct
+       decl_base::hash_as_member): Define.  ({scope_type_decl,
+       enum_type_decl, typedef_decl}::hash::operator()): Use the
+       decl_base::hash_as_member.
+       * src/abg-ir.cc (decl_base::decl_base): Adjust.
+       (decl_base::get_scope): New out-of-line getter.
+       (decl_base::{operator==, set_scope): Adjust.
+       (has_scope, is_member_decl, is_member_type)
+       (get_member_access_specifier, set_member_access_specifier)
+       (get_member_is_static, set_member_is_static, is_at_class_scope):
+       New function definitions.
+       (as_non_member_type, as_non_member_class_decl): Remove.
+       (get_node_name): Adjust.
+       (class_decl::{class_decl, set_earlier_declaration,
+       insert_member_decl, insert_member_type, add_member_type):
+       Likewise.
+       (class_decl::member_type::*) Remove.
+       * src/abg-reader.cc (read_access, build_qualified_type_decl)
+       (build_reference_type_def, build_typedef_decl)
+       (build_class_decl): Adjust.
+       * src/abg-writer.cc (write_access, write_member_type)
+       (write_class_decl): Likewise.
+
+2014-03-12  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid more static_casts in the (comparison) code
+       * src/abg-ir.cc (class_decl::insert_member_type, operator==):
+       Remove static_casts.
+       (class_decl::member_type::operator==): Likewise.
+       (class_decl::member_class_template::operator==): Likewise.
+
+2014-03-12  Dodji Seketeli <dodji@redhat.com>
+
+       Allow adding members to decl-only classes making them defined classes
+       * include/abg-fwd.h (lookup_type_in_scope)
+       (lookup_var_decl_in_scope): New declarations.
+       * include/abg-ir.h (class_decl::get_is_declaration_only): Rename
+       is_declaration_only on this.
+       (class_decl::set_is_declaration_only):
+       * src/abg-comparison.cc (try_to_diff<class_decl>)
+       (class_diff::ensure_lookup_tables_populated)
+       (scope_diff::ensure_lookup_tables_populated): Update for the
+       get_is_declaration_only renaming.
+       * src/abg-dwarf-reader.cc (get_scope_for_die): Likewize.
+       (build_class_type_and_add_to_ir): Make sure that a member type or
+       data member is not already present in the class before adding it.
+       Also, if a decl-only class gets a data member, it's not a
+       decl-only class anymore.
+       * src/abg-hash.cc (class_decl::hash::operator()): Update for the
+       get_is_declaration_only renaming.
+       * src/abg-ir.cc (scope_decl::find_iterator_for_member)
+       (look_through_decl_only_class): Likewise.
+       (lookup_type_in_scope, lookup_var_decl_in_scope, get_node_name)
+       (convert_node_to_decl, lookup_node_in_scope)
+       (lookup_type_in_scope): New definitions.
+       (class_decl::{set_definition_of_declaration,
+       set_earlier_declaration, operator==}): Update for the
+       get_is_declaration_only renaming.
+       * src/abg-reader.cc (build_class_decl): Likewise.
+       * src/abg-writer.cc (write_class_is_declaration_only): Likewise.
+
+2014-03-12  Jonathan Wakely <jwakely@redhat.com>
+
+       Fixed typos in abg-diff-utils.h
+       * include/abg-diff-utils.h (compute_diff): Fix typos in the API
+       doc.
+
+2014-03-11  Dodji Seketeli <dodji@redhat.com>
+
+       Initialize a variable
+       * tools/bilint.cc (main): Initialize the 'r' variable.
+
+2014-03-11  Dodji Seketeli <dodji@redhat.com>
+
+       Do not declare classes before defining them anymore
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
+       declare classes before defining them because both the declaration
+       and the definition now compare equal.
+       * tests/data/test-read-dwarf/test1.abi: Update test.
+       * tests/data/test-read-write/test20.xml: Likewise.
+
+2014-03-11  Dodji Seketeli <dodji@redhat.com>
+
+       Little style fix
+       * src/abg-comparison.cc (class_diff::report): Slight style fix.
+
+2014-03-10  Dodji Seketeli <dodji@redhat.com>
+
+       Better support for decl-only classes in diffing and comparison
+       * include/abg-fwd.h (look_through_decl_only_class): New function
+       declaration.
+       * src/abg-comparison.cc (class_diff::length): Just compare the two
+       classes.
+       (compute_diff): Look through the two classes if they are
+       decl-only, and use their declaration for the diffing.
+       * src/abg-ir.cc (look_through_decl_only_class): Define this new
+       entry point.
+       (class_decl::set_definition_of_declaration): Allow setting a
+       definition that is itself a declaration-only.
+       * src/abg-writer.cc (write_class_decl): Declaration-only can now
+       have members, namely member types.
+
+2014-03-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix comparison wrt hash number
+       * src/abg-ir.cc (decl_base::operator==): Do not consider empty
+       hashes.
+       (class_decl::operator==): Better support for comparing decl-only
+       classes against non-decl-only classes.
+
+2014-03-10  Dodji Seketeli <dodji@redhat.com>
+
+       Better support of class DIEs with DW_AT_specification
+       * src/abg-dwarf-reader.cc (get_scope_for_die): The definition of a
+       declaration-only class can be NULL.  Do not look through in that
+       case.
+       (build_class_type_and_add_to_ir): Support adding class members to
+       an existing class.
+       (build_ir_node_from_die): If a class DIE has a DW_AT_specification,
+       get the specification DIE, get its matching IR node and add the
+       current members of the current DIE to that IR node.
+
+2014-03-10  Dodji Seketeli <dodji@redhat.com>
+
+       Tell struct and class apart
+       * include/abg-ir.h (class_decl::is_struct_): New member.
+       (class_decl::class_decl): Take an additional is_struct member.
+       (class_decl::is_struct): New getter.
+       * src/abg-ir.cc (class_decl::class_decl): Initialize the new
+       is_struct_ data member.
+       (class_decl::get_pretty_representation): Tell struct and class
+       apart.
+       * abg-reader.cc (read_is_struct): New static function.
+       (build_class_decl): Capture the struct-ness of the class.
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
+       Likewise.
+       * src/abg-writer.cc (write_is_struct): New static function.
+       (write_class_decl): Write the struct-ness of the class.
+       * tests/data/test-read-dwarf/test1.abi: Update test.
+
+2014-03-06  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typedef_diff emptyness detection
+       * src/abg-comparison.cc (typedef_diff::length): Do not mask away the
+       dynamic type of the typedef_decl before the comparison.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add --drop/--keep options to bidiff
+       * include/abg-sptr-utils.h: New file.
+       * include/Makefile.am: Add abg-sptr-utils. to the build system.
+       * include/abg-libxml-utils.h (reader_sptr, xml_char_sptr): Remove
+       these typedefs as there are now in abg-sptr-utils.
+       (build_sptr): Likewise for this template and its specializations
+       declarations.
+       * src/abg-libxml-utils.cc (sptr_utils::build_sptr): Mode the
+       definition of the specializations for xmlTextReader and xmlChar
+       into the sptr_utils namespace.
+       * include/abg-corpus.h
+       (corpus::{get_regex_patterns_of_fns_to_suppress,
+       get_regex_patterns_of_vars_to_suppress,
+       get_regex_patterns_of_fns_to_keep,
+       get_regex_patterns_of_vars_to_keep}): Declare new member
+       functions.
+       * src/abg-comparison.cc (sptr_utils::regex_t_deleter): Define new
+       functor.
+       (build_sptr) Define new specialization for regex_t.
+       (struct array_deleter): Remove unused functor.
+       (corpus::priv::regex_patterns_{fns,vars}_to_{suppress,keep}): New data
+       members.
+       (symtab_build_visitor_type::regex_patterns_{fns,vars}_to_{suppress,keep}):
+       Likewise.
+       (symtab_build_visitor_type::r_{fns,vars}_{suppress,keep})):
+       Likewise.
+       (symtab_build_visitor_type::symtab_build_visitor_type): Update the
+       signature of this constructor to take regex patterns for functions
+       and variables to suppress and to keep.  Also, initialize the data
+       members from these new parameters.
+       (symtab_build_visitor_type::regex_{fns,vars}_{suppress,keep}): New
+       member functions.
+       (symtab_build_visitor_type::{add_fn_to_wip_fns,
+       add_var_to_wip_vars}): Likewise.
+       (symtab_build_visitor_type::visit) Use either add_fn_to_wip_fns or
+       add_var_to_wip_vars depending on the overload of the visit()
+       member.
+       (corpus::priv::build_symbol_table): Update for the change of the
+       symtab_build_visitor_type constructor signature.
+       (corpus::get_regex_patterns_of_{fns,vars}_to_{suppress,keep}):
+       Define new member functions.
+       * tools/bidiff.cc (options::{drop,keep}_{fn,var}_regex_patterns}):
+       New data member.
+       (display_usage): Add help strings for --drop, --drop-fn,
+       --drop-var, --keep, --keep-fn, --keep-var
+       (parse_command_line): Parse the command lines above.
+       (set_corpus_keep_drop_regex_patterns): Define new static function.
+       (main): Use the new set_corpus_keep_drop_regex_patterns.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Style fix in the dwarf reader
+       * src/abg-dwarf-reader.cc (die_is_public_decl): Rename
+       is_public_decl into this.
+       (die_is_declaration_only): Rename is_declaration_only into this.
+       (build_class_type_and_add_to_ir, build_var_decl)
+       (build_function_decl): Adjust for the renames above.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Skip artificial (member) functions from DWARF
+       * src/abg-dwarf-reader.cc (die_is_artificial): New static
+       function.
+       (build_class_type_and_add_to_ir, build_ir_node_from_die): Use the
+       die_is_artificial function to test if the function DIE is
+       artificial and then skip it.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix function parameter addition/deletion/change detection
+       * include/abg-ir.h (function_decl::parameter::get_name_id):
+       Declare new entry point.
+       * src/abg-comparison.cc
+       (function_decl_diff::ensure_lookup_tables_populated): Use the new
+       function_decl::parameter::get_name_id() for the unique name of the
+       parameter.  Also, fix a little logic error: if a parm is deleted
+       and inserted, in all cases, consider it as not deleted.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add a --stat option to bidiff
+       * include/abg-comparison.h (diff_context::show_stats_only):
+       Declare new accessors.
+       * src/abg-comparison.cc
+       (diff_context::priv::show_stats_only_): New member.
+       (diff_context::show_stats_only): Define new accessors.
+       (corpus_diff::report): If showing stats only, quit right after
+       showing the summary.
+       * tools/bidiff.cc (options::show_stats_only): New data member.
+       (options::options): Initialize the new data member.
+       (display_usage): Add help string for --stat.
+       (parse_command_line): Parse the --stat option.
+       (set_diff_context_from_opts): Update to set the show_stats_only
+       onto the context.  Cleanup the logic to make it more compact.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Report about functions of different names
+       * src/abg-comparison.cc (function_decl_diff::report): Consider the
+       case of functions with different names.  This doesn't happen in
+       the current pipeline b/c they just show up as deleted/added
+       functions so the function reporter doesn't see them as they have
+       been already reported by now.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix length calculation for type diffs.
+       * src/abg-comparison.cc (diff_length_of_type_bases): Fix stupid
+       harmful thinko here.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix calculation of the length of distinct_diff
+       * src/abg-comparison.cc (distinct_diff::length): Also perform a
+       deep comparison here.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix diff length calculation for typedef diffs
+       * src/abg-comparison.cc (typedef_diff::length): Just use
+       comparison for this.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix layout of diff summary
+       * src/abg-comparison.cc
+       (corpus_diff::priv::emit_corpus_diff_stats): Remove useless
+       vertical and horizontal white spaces.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix indentation of pieces of class diff report
+       * src/abg-comparison.cc (represent, class_diff::report): Fix
+       indentation.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Fix detection of entities of different kinds for diff purposes
+       * src/abg-comparison.cc
+       (distinct_diff::entities_are_of_distinct_kinds): Consider two NULL
+       decls are distinct types for the purpose of diffing.  This is just
+       a shortcut to avoid creating a null_diff type for now.  But then,
+       stop considering same pointers as different.  This was a bug.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Constify function_decl::parameter::get_type_pretty_representation()
+       * include/abg-ir.h
+       (function_decl::parameter::get_type_pretty_representation): This
+       is now const.
+
+2014-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Improve API doc for the location machinery
+       * include/abg-ir.h (class location): Improve doc.
+       (decl_base::{get,set}_location): Likewise.
+
+2014-02-26  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless dynamic cast
+       * src/abg-ir.cc (class_decl::insert_member_decl): Remove useless
+       dynamic cast from here.
+
+2014-02-26  Dodji Seketeli <dodji@redhat.com>
+
+       Insert reference, pointers and qual types at their declaration point
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): Insert
+       reference, pointers and qualified types at the point where we see
+       them, in their scope, rather than under the scope of their
+       underlying type.  This is because their might be first declared as
+       member types and we don't want to loose that information.
+
+2014-02-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix documentation for the diff_utils namespace
+       * include/abg-diff-utils.h (namespace diff_utils): Add comment.
+       (compute_diff): Update comments for some overloads where they were
+       missing.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): use
+       as_non_member_class_decl rather that complicated casting.
+       src/abg-ir.cc (var_decl::get_pretty_representation): Use
+       get_type_declaration rather than casting.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a glitch in member data diff reporting
+       * src/abg-comparison.cc (represent): Do not forget the "'" around
+       the access specifier.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Proper support for diffing member types
+       * include/abg-comparison.h (class member_type_diff): New class.
+       (member_type_diff_sptr): New convenience typedef.
+       (compute_diff): New overload for member_type_diff.
+       * src/abg-comparison.cc (struct member_type_diff::priv): New
+       definition.
+       (member_type_diff::{first_member_type, second_member_type,
+       underlying_type_diff, length}): New member function definitions.
+       (compute_diff): New definition for member type diffs.
+       (compute_diff_for_types): Support diffing
+       member types.
+       (class_diff::report): Do not use strip member types now that we
+       can properly diff them.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix the support for printing cv-qualified names
+       * include/abg-ir.h (decl_base::{location_, name_,
+       qualified_parent_name_, qualified_name_}): Make these data members
+       protected rather than private.
+       (decl_base::get_qualified_parent_name): Declare new member
+       functions.
+       (decl_base::get_qualified_name): Make the core overload virtual.
+       Simplify the other overload that calls the core one.
+       (qualified_type_def::build_name): Declare new protected helper
+       function.
+       (qualified_type_def::{get_cv_quals_string_prefix,
+       get_qualified_name}): Declare new functions.
+       (pointer_type_def::{get_qualified_name}}): Likewise.
+       (class_decl::member_type::get_qualified_name): Likewise.
+       * src/abg-ir.cc (decl_base::get_qualified_parent_name): New
+       definition.
+       (decl_base::get_name): Make this out-of-line.
+       (decl_base::get_qualified_name): The signature of this got
+       simplified.  Make it use the new get_qualified_parent_name.
+       (qualified_type_def::{build_name, get_qualified_name,
+       get_cv_quals_string_prefix}): New definitions.
+       (qualified_type_def::qualified_type_def): Update the constructor
+       to use the new build_name function above.
+       (pointer_type_def::get_qualified_name): New definitions.
+       (reference_type_def::get_qualified_name): Likewise.
+       (class_decl::member_type::get_qualified_name): Likewise.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fix
+       * src/abg-comparison.cc (represent): Remove useless curly braces
+       and vertical spaces.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Support DW_AT_specification on class/struct DIEs
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): Support
+       DW_AT_specification on DW_TAG_{class,structure}type.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid comparing member types and class templates
+       * src/abg-comparison.h (compute_diff): For class_decl_sptr, do not
+       compare member types and member class templates.  This adds a lots
+       of noise that is not necessarily useful for now.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Update tests.
+       * tests/data/test-bidiff/test-struct0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct1-report.txt: Likewise.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix the report of added/removed function parameters
+       * src/abg-comparison.cc
+       (function_decl_diff::priv::{inserted_parms_, removed_parms_}):
+       Remove these.
+       (function_decl_diff::ensure_lookup_tables_populated): Fix thinko.
+       Avoid using the members removed above.  Use one less loop to
+       update the changed params.
+       (function_decl_diff::report): Avoid using the removed_parms_
+       data member that was removed above.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Put the setter of access specifiers in class_decl::member_base
+       * include/abg-ir.h
+       (class_decl::member_base::set_access_specifier): Put the setter
+       for access specifier here, where it belongs ...
+       (class_decl::member_type::set_access_specifier): ... not here.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       First approach to avoid duplication of IR nodes for forward-declared classes
+       * src/abg-dwarf-reader.cc (is_declaration_only): Put this back (I
+       removed it earlier).
+       (build_class_type_and_add_to_ir): If the class is a
+       declaration-only (a forward declaration), do not add a new
+       declaration only IR node.
+
+2014-02-21  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget to set the indexes of fn parms
+       * include/abg-ir.h (function_type::function_type): In the
+       constructor that takes a vector of parms, walk the vector and set
+       the indexes of the parms.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Misc diff reporting output cleanup
+       * src/abg-comparison.cc (function_decl_diff::report): Do not talk
+       about changed function anymore.  Rather, say that some indirect
+       sub-types changed in the function.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget some member types/functions we built IR nodes for
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
+       Associate the member type IR node to the offset of the die of the
+       member type.
+       (build_ir_node_from_die): For a DW_TAG_subprogram DIE that has a
+       DW_AT_specification pointing to another subprogram DIE, associate
+       the offset of this DIE to the IR node of that other DIE.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Better support of static member variables
+       * include/abg-fwd.h (fqn_to_components)
+       (lookup_type_in_translation_unit, demangle_cplus_mangled_name):
+       Declare new public entry points
+       * src/abg-comparison.cc (corpus_diff::report): Report stuff about
+       global variables using their mangled name, and demangle them.  If
+       there is no mangled name for the variable, then use its pretty
+       representation.
+       (compute_diff): For the corpus overload, compare global variables
+       using their mangled name, if its available; otherwise, fall back
+       to using their pretty representation.
+       * src/abg-corpus.cc (var_comp::operator()(const var_decl*,
+       const_var_decl*)): Compare variables using their mangled name in
+       priority.  If it's not available then use their pretty
+       representation.
+       * src/abg-dwarf-reader.cc
+       (read_context::var_decls_to_re_add_to_tree): New accessor.
+       (build_translation_unit_and_add_to_ir): If there is what appears
+       to be a definition of a static member variable variable -- this is
+       in case this definition lacks the DW_AT_specification attribute
+       that links it to the DW_TAG_member or DW_TAG_variable DIE that is
+       a child of the right class/structure DIE -- that is not at the
+       right place in the DIE tree, remove it from the its current place
+       in the tree and try to hang it off of the right DIE.  To do this,
+       de-mangle its mangled name, look at what is supposed to be the
+       parent class name, look it up in the translation unit IR, and if
+       found, stick the variable IR node in there, as a static member
+       variable.  If not found, then bad luck.
+       (build_class_type_and_add_to_ir): Do not try to see if a member
+       variable is static here as the way I was doing it was unreliable.
+       Build the data member node directly w/o going through building a
+       variable node first.  Register the data member in the die offset
+       -> IR node map.
+       (build_ir_node_from_die): When seeing DW_TAG_variable, look for a
+       DW_AT_specification attribute.  If there is one, then it points to
+       a the DIE of a data member and means that data member is static.
+       Flag the IR node of that data member as static thus.  Update the
+       die offset -> IR node map.  If there is no DW_AT_specification
+       attribute or if it doesn't point to a data member DIE, schedule
+       this variable tag for a stage when after the whole IR is built for
+       the translation unit, the variable's mangled named is inspected,
+       its hypothetical parent struct/class is looked up and the variable
+       IR node is put into the node of the right struct/class IR node.
+       * src/abg-ir.cc (enum lookup_entity_kind): New.
+       (fqn_to_components, iterator, lookup_type_in_translation_unit)
+       (lookup_node_in_translation_unit, lookup_type_in_translation_unit)
+       (demangle_cplus_mangled_name): New function definitions.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Shorten an accessor name in the DWARF reader
+       * src/abg-dwarf-reader.cc (read_context::cur_tu): Rename
+       read_context::current_translation_unit into this.
+       (read_context::current_scope, die_location)
+       (build_translation_unit_and_add_to_ir, build_enum_type)
+       (build_function_decl): Adjust wrt the change above.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Unset decl scope when removing the decl from its scope
+       * src/abg-ir.cc (remove_decl_from_scope): Unset the scope of the
+       decl.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Support adding data member from var_decl
+       * src/abg-ir.cc (class_decl::insert_member_decl):  Support taking
+       a var_decl.
+       (class_decl::add_data_member): Do not insert a data member twice.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Fix qualified type pretty printing
+       * src/abg-ir.cc (qualified_type_def::qualified_type_def): Remove
+       useless white space.
+
+2014-02-19  Dodji Seketeli <dodji@redhat.com>
+
+       Add class_decl::member_base::set_is_static() accessor
+       * include/abg-ir.h (class_decl::member_base::get_is_static):
+       Rename is_static into get_is_static.
+       (class_decl::member_base::set_is_static): New accessor.
+       * src/abg-comparison.cc (represent): Adjust for
+       class_decl::member_base::is_static -> get_is_static.
+       * src/abg-corpus.cc (symtab_build_visitor_type::visit): Likewise.
+       src/abg-hash.cc (class_decl::member_function::hash::operator()):
+       Likewise.
+       * src/abg-ir.cc (class_decl::member_base::operator==): Likewise.
+       * src/abg-writer.cc (write_class_decl): Likewise.
+
+2014-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Fixes needed to diff libstdc++ v4_4 against master
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): Support several
+       instances of the same member function being deleted.  That can
+       happen when the same member function was present in the initial
+       class several times.  Yeah, I've seen that in dwarf.
+       * src/abg-corpus.cc (corpus::priv::build_symbol_table): Do not add
+       the same variable (identified by its mangled name) twice in the
+       variable symbol table.
+
+2014-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Fix wrong deleted functions count when diffing corpora
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): If a function
+       has changed, deleted it from the list the removed functions.
+
+2014-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Several fixes needed to read libstdc++.so
+       * src/abg-reader.cc (read_context::map_id_and_node): Allow
+       duplicated class and basic type declarations.
+       (build_type_decl): Allow duplicated type decls.
+       (build_qualified_type_decl, build_pointer_type_def)
+       (build_reference_type_def): As there can be several distinct
+       duplicated types, compare them by value.
+       (build_class_decl): There can be duplicated class decls.
+       * src/abg-writer.cc (write_enum_type_decl): The name of the enum
+       needs to be xml-escaped.
+
+2014-02-12  Dodji Seketeli <dodji@redhat.com>
+
+       qualified, pointer and reference types can be member types
+       * src/abg-reader.cc (build_qualified_type_decl)
+       (build_pointer_type_def, build_reference_type_def): Consider that
+       these types can be member types.
+
+2014-02-12  Dodji Seketeli <dodji@redhat.com>
+
+       Consider two typedefs with different names to be different
+       * src/abg-ir.cc (typedef_decl::operator==): Consider two typedefs
+       with different names to be different.
+
+2014-02-12  Dodji Seketeli <dodji@redhat.com>
+
+       Really Avoid trying to build IR nodes for non-public functions
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
+       DW_TAG_subprogram case, bail out early if the current function is
+       non-public.
+
+2014-02-12  Dodji Seketeli <dodji@redhat.com>
+
+       Add --{changed,deleted,added}-{fns,vars} options to bidiff
+       * include/abg-comparison.h
+       (diff_context::{show_{deleted,changed_added}_{fns,vars}}): Declare
+       new accessors.
+       (corpus_diff::context): Declare new getter.
+       * src/abg-comparison.cc
+       (diff_context::{show_{deleted,changed_added}_{fns,vars}}): Define
+       these new accessors.
+       (corpus_diff::priv::emit_corpus_diff_stats): Define new function.
+       (corpus_diff::context()): Define new getter.
+       (corpus_diff::report): Use the new
+       corpus_diff::priv::emit_corpus_diff_stats to emit diff stats at
+       the beginning of the report.  Conditionalise emitting the
+       different parts of the reports (changed,deleted,added stuff) on
+       the values of the new properties that were just added.
+       * tools/bidiff.cc
+       (options::{show_{deleted,changed,added}_{fns,vars}): New
+       properties.
+       (display_usage, parse_command_line): Update for the newly added
+       --{changed,deleted,added}-{fns,vars} command line options.
+       (set_diff_context_from_opts): Define new static function.
+       (main): Create a diff context, initialize it from the options
+       (using set_diff_context_from_opts) and pass it to compute_diff.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       Add --show-symtabs to bidiff
+       * tools/bidiff.cc (display_usage): Update usage string.
+       (parse_command_line): Recognize the --show-symtab cmdline option.
+       (display_symtabs): New static function.
+       (main): Call the new display_symtabs.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       Harden class_decl node traversal code
+       * src/abg-ir.cc (class_decl::traverse): Add a few asserts here and there.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       Fix the pretty representation for member functions
+       * src/abg-ir.cc (function_decl::get_pretty_representation): Fix
+       this to properly display the representation of member functions.
+       * tests/data/test-bidiff/test-enum0-report.txt: Update this.
+       * tests/data/test-bidiff/test-enum1-report.txt: Likewise.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct1-report.txt: Likewise.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget to traverse member types
+       * include/abg-ir.h (class_decl::member_type::traverse): Declare new virtual
+       function.
+       (ir_node_visitor::visit): Declare new virtual function
+       * src/abg-ir.cc (class_decl::member_type::traverse): Implement the
+       traversal of a member type.
+       (ir_node_visitor::visit): Provide a default implementation for the
+       visitor of member type.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       From DWARD, avoid adding IR nodes for member functions twice
+       * include/abg-fwd.h (as_non_member_class_decl): Declare new overload.
+       * src/abg-ir.cc (as_non_member_class_decl): Define new overload.
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Add
+       member functions to the DIE -> IR Node map.
+       (build_ir_node_from_die): Assert that DW_TAG_subprogram cannot be
+       for a member function here because getting the scope of the member
+       function would have constructed the entire class that contains it,
+       including the member function.  Then, calling
+       build_ir_node_from_die for the DIE of the member function would
+       find the already IR Node in the DIE -> IR Node map.
+
+2014-02-11  Dodji Seketeli <dodji@redhat.com>
+
+       Fix access specifiers value
+       * include/abg-ir.h (class_decl::enum access_specifier): Give the enumerators
+       the same values as what the DWARF spec says.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Misc diff report cleanups
+       * include/abg-ir.h (function_decl::parameter::get_type_name): Add
+       comment.
+       (function_decl::parameter::get_type_pretty_representation): New
+       member fn.
+       * src/abg-comparison.cc (represent): When representing changed
+       members, use their pretty representation.
+       (function_decl_diff::{ensure_lookup_tables_populated, report}): Use the
+       pretty representation of parameters type.
+       (typedef_diff::report): Enclose the underlying type in "'".
+       (corpus_diff::report): Add proper spacing.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Re-organize the output of diffing two corpora
+       * src/abg-comparison.cc (corpus_diff::report): Emit
+       information about the number of added/removed/changed
+       functions.  If the report is big, prefix any added
+       function with '[A]' deleted function with '[B]'.  Also,
+       fix indentation.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Support diffing entities of different kinds.
+       * include/abg-comparison.h (class distinct_diff): Declare new
+       type.
+       (compute_diff_for_distinct_kinds): Declare new function.
+       * src/abg-comparison.cc (distinct_diff::{distinct_diff, first,
+       second, entities_are_of_distinct_kinds, length, report}): Define
+       new member functions.
+       (compute_diff_for_distinct_kinds, try_to_diff_distinct_kinds):
+       Define new function.
+       (compute_diff_for_types, compute_diff_for_decls): Support diffing
+       entities of different kinds.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid recursive comparison on class_decl & perform some optimizations
+       * src/abg-ir.cc (class_decl::operator==(const decl_base& other)
+       const): Bail out early in case of recursive comparison, or if type
+       hashes are different.  Do not try to compute qualified name unless
+       it's really necessary.  The optimizations part of this change were
+       hinted by profiling.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Handle the DIE for a fn that has a 'specification' attribute
+       * src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
+       DW_TAG_subprogram case, if the function has a DW_AT_specification
+       attribute, build the IR node for the specification DIE instead.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Add an assert in the dwarf reader
+       * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
+       Assert that the result of build_function_decl on a member function
+       is a method_decl.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget that build_ir_node_from_die can return member types
+       * src/abg-dwarf-reader.cc (get_scope_for_die): Handle member class
+       types.
+       (build_function_decl): Likewise.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       A member function can have an empty mangled name
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): If a member function
+       has an empty mangling name, use its pretty representation.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Remove too eager asserts
+       * src/abg-comparison.cc
+       (class_diff::ensure_lookup_tables_populated): Do not assert that
+       the same member type cannot be deleted/inserted twice.  It
+       actually can for, pointers, references, typedefs, etc.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some new line handling in diff reports
+       * src/abg-comparison.cc (represent): Remove extra new line after
+       reporting virtual function number.
+       (class_diff::report): Do not forget to emit a new line between two
+       inserted functions.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Perform the diff of changed functions and variables in the right order
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): In a changed
+       function or variable, do not mix up the new and old value.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in report
+       * src/abg-comparison.cc (reference_diff::report): Fix typo
+       refereneced -> referenced.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix various crashes
+       * src/abg-comparison.cc (decls_equal::operator()(const decls_type,
+       const decls_type) const): Do not crash when of the decl_types is
+       NULL.
+       ({pointer_diff, reference_diff, enum_diff}::length): Avoid
+       crashing if the underlying type is NULL.
+       * abg-ir.cc (function_decl::get_pretty_representation): Avoid
+       crashing on member functions with empty parameter set.
+       signed-off-by: Dodji Seketeli <dodji@redhat.com>
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       More optimizations hinted by profiling
+       * include/abg-ir.h (decl_base::qualified_name_): New member.
+       (decl_base::get_qualified_name): Cache the qualified name.
+       (decl_base::get_type): Return a reference on the shared pointer.
+       (method_type::get_class_type): Likewise.
+       (class_decl::get_definition_of_declaration): Likewise.
+       (class_decl::member_type::get_underlying_type): Likewise.
+       (class_decl::base_spec::get_base_class): Likewise.
+       * src/abg-ir.cc (decl_base::get_qualified_name): Implement the
+       caching.
+       (class_decl::member_type::get_qualified_name): Return a reference
+       on the shared pointer.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid crashing when getting function parm type name
+       * include/abg-ir.h (function_decl::parameter::get_type_name): New
+       member function.
+       * src/abg-comparison.cc
+       (function_decl_diff::ensure_lookup_tables_populated): Use the new
+       member function above.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Small optimization hinted by profiling
+       * include/abg-diff-utils.h (d_path_vec::max_d): Avoid using member
+       functions.  This is relevant only when compiling w/o optimization.
+
+2014-02-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix allocation of diff_utils::d_path_vec
+       * include/abg-diff-utils.h (d_path_vec::d_path_vec):  Do not
+       forget to allocate enough data for reverse vectors as well.  The
+       comment of the constructor is accurate.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-hash.h (combine_hashes): Remove trailing white
+       spaces.
+       * include/abg-ir.h (class function_decl): Add end-of-class
+       comment.
+       (struct type_base::cached_hash): Fix comment.
+       * src/abg-comparison.cc: Remove useless new line.
+       * src/abg-corpus.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Support looking through decl-only classes and update diff reports accordingly
+       * include/abg-comparison.h (class diff_context): New class.
+       (class diff::{ctxt_, reported_once_, currently_reporting_}): New
+       data members.
+       (diff::diff): Initialize the new data members above.
+       (diff::{context, currently_reporting, reported_once}): New
+       accessors.
+       (compute_diff, var_diff::var_diff, pointer_diff::pointer_diff)
+       (reference_diff::reference_diff, qualified_type_diff)
+       (enum_diff:enum_diff, class_diff::class_diff)
+       (scope_diff::scope_diff, function_decl_diff::function_decl_diff)
+       (type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
+       (translation_unit_diff::translation_unit_diff, corpus_diff::corpus_diff):
+       Take an additional pointer to diff_context.
+       * abg-comparison.cc (diff_context::{has_diff_for,
+       has_diff_for_types, add_diff}): New methods.
+       (try_to_diff, compute_diff_for_types, compute_diff_for_decls)
+       (represent): Take an additional pointer to
+       diff_context in argument.  In the later function, do not re-report
+       a diff if it has already been reported, or if it's being reported
+       already.
+       (var_diff::var_diff, pointer_diff::pointer_diff)
+       (reference_diff::reference_diff)
+       (qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
+       (class_diff::class_diff, scope_diff::scope_diff)
+       (function_decl_diff::function_decl_diff, type_decl::type_decl)
+       (typedef_diff::typedef_diff)
+       (translation_unit_diff::translation_unit_diff)
+       (corpus_diff::corpus_diff): Take an additional pointer to
+       diff_context in argument.
+       ({pointer_diff, qualified_type_diff,
+       reference_type_diff}::report): do not re-report a diff about the
+       underlying type if it has already been reported, or if it's being
+       reported already.
+       (enum_diff::report): Fix this to properly use the populated lookup
+       tables.
+       (compute_diff): take an additional pointer to diff_context in
+       argument. For the var_decl, pointer_diff reference_type_diff,
+       qualified_type_diff enum_diff, scope_diff, function_decl_diff,
+       type_decl_diff and typedef_diff overloads, do not re-build a diff
+       object, if one exits already.  Otherwise, record the new diff
+       object created so that it can be re-used later.
+       (enum_diff::ensure_lookup_tables_populated): Fix logic to avoid
+       one loop.
+       (class_decl::priv::{deleted_member_functions_,
+       inserted_member_functions_, changed_member_function_}): New
+       members to support reporting about member functions changes.
+       (class_decl::{lookup_tables_empty, clear_lookup_tables, length):
+       Update for the new additions above.
+       (class_decl::ensure_lookup_tables_populated): Likewise.  Fix to
+       properly use the lookup tables and also avoid a going through
+       several loops to compute the changed members.
+       (class_decl::report): Flip a switch to make the beginning and end
+       of the reporting, in the context.  Also, do not try to report
+       again, if we were already reporting this diff.  Fix quite some
+       spots to properly use the lookup tables.
+       (scope_diff::ensure_lookup_tables_populated): Skip decl-only
+       classes during comparison. Fix some thinkos.  Fix logic to avoid a
+       loop.
+       (scope_diff::report): Adjust to pass a context to
+       compute_diff_for_types.
+       (function_decl_diff::ensure_lookup_tables_populated): Fix logic to
+       avoid a loop.
+       (function_decl_diff::report): Adjust call to
+       compute_diff_for_types to pass the context.
+       (typedef::report): Avoid re-reporting the diff of the underlying
+       types, if we are already reporting it.
+       (corpus_diff::priv::ensure_lookup_tables_populated): Use the
+       pretty representation of the function rather than its name to key
+       the maps of deleted and added functions. Fix logic to avoid going
+       through an additional loop for the changed functions.
+       (corpus_diff::report): Add a title for removed/added/changed
+       functions.  Fix indentation for added/removed/changed functions.
+       * include/abg-ir.h (class_decl::comparison_started_): New member
+       * src/abg-dwarf-reader.cc (is_public_decl): Style fix.
+       (is_declaration_only_): New static function.
+       (build_class_type_and_add_to_ir): Create decl-only classes (IR) for
+       classes flagged as declaration-only in the DWARF.
+       * src/abg-hash.cc (class_decl::hash::operator()): Do not forget to
+       include the "is_declaration_only" flag into the hashing.
+       * src/abg-ir.cc (class_decl::operator==): Look through decl-only
+       classes to get their definitions and compare the definitions
+       instead.  Avoid comparing member types and fns if the comparison
+       of this type has already started.
+       * src/abg-reader.cc (build_class_decl): Set the definition of a
+       declaration, when we see it.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Update.
+       * tests/data/test-bidiff/test-struct0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct1-report.txt: Likewise.
+       signed-off-by: Dodji Seketeli <dodji@redhat.com>
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Support reading *.bi input with duplicated qualified type ids.
+       * src/abg-reader.cc (read_context::map_id_and_node): Support
+       qualified types with duplicated ids.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Fix comparison of member types
+       * src/abg-ir.cc (class_decl::member_type::operator==): Compare the
+       underlying type of the member type.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid duplicated entries in the symbol tables of the corpus
+       * include/abg-ir.h ({var_decl, function_decl}::ptr_equal): New
+       equality functor for pointers to var_decl and function_decl.
+       ({function_decl, var_decl}::hash): Make these hashing functors
+       public.
+       * include/abg-hash.cc (struct var_decl::hash, struct
+       function_decl::hash): Remove these from here.  There are now in
+       the public abg-ir.h.
+       ({var_decl, function_decl}::hash::operator()): Define these here.
+       * src/abg-corpus.cc (symtab_build_visitor_type::{fns_map,
+       fn_is_in_map, add_fn_to_map, vars_map, var_is_in_map,
+       add_var_to_map}): New accessors.
+       (corpus::priv::build_symbol_table): Avoid duplicated entries in
+       variables and functions symbols tables.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Ease debugging of abigail::diff_utils::compute_diff
+       * include/abg-diff-utils.h (compute_diff): Add asserts on for the
+       length of the shortest edit script during the divide and conquer
+       part of the diff algorithm.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Fix further reaching reverse path calculation in core diff algo
+       * include/abg-diff-utils.h (end_of_frr_d_path_in_k_plus_delta):
+       Favour moving left when the two abscissas at the previous steps
+       are equal.
+       (compute_diff): Update the length of the shortest edit script when
+       the size of one of the inputs is zero.
+       * tests/test-core-diff.cc (in_out_spec): Add a new input to diff
+       two sequences for regression testing.
+       * tests/data/test-core-diff/report13.txt: New reference for
+       the comparison of the new regression test above.
+
+2014-02-07  Dodji Seketeli <dodji@redhat.com>
+
+       Add debugging facilities for core diffing issues
+       * include/abg-ir.h (fns_to_str): Declare new fn.
+       * src/abg-ir.cc (get_next_string, fn_to_str, fns_to_str): New
+       static functions.
+       (fns_to_str): Define new fn.
+       * tools/abg-tools-utils.cc (dump_functions_as_string)
+       (dump_function_names, compare_functions): New functions.
+
+2014-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Fix apidoc comment
+       * src/abg-ir.cc (decl_base::operator==): Fix comment.
+
+2014-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Fix bilint outputting for translation units & corpus
+       * tools/bilint.cc (main): Fix logic.
+
+2014-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Remove debugging assertion when diffing
+       * include/abg-diff-utils.h (d_path_vec::at): Do not check for
+       bounds.
+
+2014-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Do not use exceptions in dynamic_cast
+       * src/abg-ir.cc (class_decl::member_function::operator==)
+       (class_decl::member_function::operator==): Do not use the
+       exception path for dynamic casting.  This was near the top of many
+       profiles.
+
+2014-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Just add decls sequentially when reading from DWARF
+       * src/abg-dwarf-reader.cc (insert_decl_into_ir_under_scope)
+       (build_namespace_decl_and_add_to_ir, build_enum_type)
+       (build_class_type_and_add_to_ir, build_ir_node_from_die)
+       (build_ir_node_from_die): Remove.
+       * tests/data/test-read-dwarf/test0.abi: Update because now type
+       IDs can be used before they are defined.
+       * tests/data/test-read-dwarf/test1.abi: Likewise.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Misc Doxygen API doc fixes
+       * include/abg-comparison.h: Various doxygen api doc string fixes.
+       * include/abg-diff-utils.h: Likewise.
+       * include/abg-dwarf-reader.h: Likewise.
+       * include/abg-ir.h: Likewise.
+       * include/abg-reader.h: Likewise.
+       * include/abg-writer.h: Likewise.
+       * src/abg-comparison.cc: Likewise.
+       * src/abg-corpus.cc: Likewise.
+       * src/abg-dwarf-reader.cc: Likewise.
+       * src/abg-ir.cc: Likewise.
+       * src/abg-libxml-utils.cc: Likewise.
+       * src/abg-reader.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix bilint --noout, add --diff option
+       * tools/bilint.cc (options::options): Initialize ...
+       (options::{diff, bidiff}): ... new members.
+       (display_usage): Update the display usage string for --diff &
+       --bidiff options.
+       (parse_command_line): Support the --diff and --bidiff options.
+       (main): Require the --diff option to actually diff the emitted
+       output with input.  Make --noout really work for when reading
+       from dwarf.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Read .abi files with types used before being defined & lots of fixes
+       * src/abg-reader.cc (read_context::m_decls_stack): Make this is a
+       std::deque, rather than a std::stack.
+       (read_context::{get_id_xml_node_map,
+       clear_id_xml_node_map, get_xml_node_decl_map,
+       map_xml_node_to_decl, get_decl_for_xml_node,
+       clear_xml_node_decl_map, map_id_and_node, get_xml_node_from_id,
+       get_scope_for_node, build_or_get_type_decl}): New member
+       functions.
+       (read_context::{get_cur_decl, push_decl, pop_decl}): Update this
+       now that the decl stack uses a std::deque.
+       (read_context::clear_decls_stack): New.
+       (read_context::get_translation_unit):  Use the first decl of the
+       decl stack, that is most certainly the global scope of the current
+       translation unit, to get the translation unit.
+       (read_context::key_type_decl): Take a new flag to force the
+       re-keying; that is set an id to a new type, even if the id was
+       already set to a type.
+       (read_context::push_and_key_type_decl): Assert that a type must
+       have a declaration.
+       (handle_*): Make these return the decl_base_sptr resulting from
+       the parsing of the xml node, rather than just a bool.
+       (walk_xml_node_to_map_type_ids): New static function.
+       (read_translation_unit_from_input): Read the abi-instr xml
+       sub-tree once, just to build an id->xml node map.  That way, when a
+       declaration needs a type what is not yet defined, it can just get
+       its XML node, build the type from it and use it.  Do not forget to
+       advance the xml reader cursor when the reading of the 'abi-instr'
+       sub-tree is read.  Clear all the new maps we have used for the
+       current translation unit.
+       (handle_element_node): Cleanup logic.
+       (build_namespace_decl): Update the new xml node -> decl map, and
+       use it to avoid building the same namespace twice.
+       (build_function_parameter): Do not even try to get the type of a
+       variadic parameter.
+       (build_function_decl, build_var_decl): Support types that are defined later.
+       (build_type_decl): Do not build the same type twice.  But there
+       can be several 'unnamed-enum-underlying-type' node.  In that case
+       just return the previous one.
+       (build_qualified_type_decl, build_pointer_type_def)
+       (build_reference_type_def, build_enum_type_decl)
+       (build_typedef_decl): Support underlying type defined later.
+       (build_class_decl): Support declaration-only related cases where
+       we can have several xml nodes with the same id.  Update the new
+       xml node -> IR node maps.  Fix member type adding.
+       (build_type_tparameter, build_non_type_tparameter)
+       (build_template_tparameter): Support used types defined later.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix member class template creation
+       * src/abg-ir.cc (class_decl::add_member_class_template): Do not
+       forget the scope of the member class template itself.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid endless loop in unescape_xml_string
+       * src/abg-libxml-utils.cc (unescape_xml_string): Avoid and endless
+       loop for strings containing an '&' but that are not pre-defined
+       entities.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a potential crash
+       * src/abg-ir.cc (decl_base::get_qualified_name): Do not crash if
+       the scope is empty.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Do not loose the member type information when reading them from DWARF
+       * include/abg-ir.h (class_decl::declaration_):  Make this be a
+       decl_base_sptr so that it can actually be a
+       class_decl::member_type which underlying type is a class decl.
+       (class_decl::{set, get}_earlier_declaration): Take or return a
+       decl_base_sptr rather than a class_decl_sptr.
+       * src/abg-ir.cc (class_decl::set_earlier_declaration): Take a
+       decl_base_sptr rather than a class_decl_sptr.
+       * src/abg-dwarf-reader.cc (die_class_map_type): Make this map take
+       decl_base_sptr rather than a class_decl_sptr.
+       (build_class_type_and_add_to_ir): If the class being currently
+       built is a member class, do not loose that information after it
+       has been added to its scope.  Also, base types and types of member
+       variables can be member types and should retain that information.
+       (build_qualified_type): Likewise, the underlying type of a
+       qualified type shouldn't loose the information about its
+       potentially being a member type.
+       (build_pointer_type_def, build_reference_type, build_typedef_type)
+       (build_var_decl, build_function_decl): Likewise.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix hashing of member types
+       * include/abg-ir.h (class_decl::{member_function_template,
+       member_class_template}):  Make these inherit from decl_base, to
+       comply with class_decl::member_type.
+       (class_decl_base_spec::{base_spec, member_type, member_function,
+       member_function_template, member_class_template}::hash): Declare
+       these hashing functors in the header here.
+       (class_decl::{member_base, member_type, data_member,
+       member_function, member_function_template,
+       member_class_template}::hash::operator()): define these out of
+       line here.
+       (type_base::dynamic_hash::operator()): Update this to hash member
+       things.
+       * src/abg-writer.cc (write_qualified_type_def)
+       (write_pointer_type_def, write_class_decl)
+       (write_reference_type_def, write_enum_type_decl): Add an overload
+       that takes the type ID to use in the serialization.
+       (write_member_type): New implementation.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       A Member class can also be a scope for other decls in DWARF
+       * include/abg-fwd.h (as_non_member_class_decl): Declare ...
+       * src/abg-ir.cc (as_non_member_class_decl): ... this new function.
+       * include/abg-ir.h (class class_decl::member_type): Add more
+       comments about member types.
+       * src/abg-dwarf-reader.cc (get_scope_for_die): Use the new
+       as_non_member_class_decl here.
+
+2014-01-17  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-ir.h (location_manager::_Impl): Rename this type
+       into priv.
+       * src/abg-ir.cc b/src/abg-ir.cc (location_manager::_Impl):
+       Likewise.
+       (location_manager::location_manager): Update for the renaming
+       above.
+       * src/abg-reader.cc (build_type_decl): Remove useless white space.
+       (build_enum_type_decl, build_class_decl): Use the _sptr typedef in
+       the return type.
+
+2014-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Update namespace comments
+       * src/abg-dwarf-reader.cc (namespace dwarf_reader): Add apidoc comment.
+       * src/abg-reader.cc (namespace xml_reader): Update apidoc comment.
+
+2014-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Expand 'abi-instr' XML element nodes during de-serialization
+       * src/abg-reader.cc (update_read_context)
+       (update_depth_info_of_read_context): Remove.
+       (read_context::{pop_scope, pop_scope_or_abort): New.
+       (read_context::{push_decl_to_current_scope,
+       push_and_key_type_decl}): Remove the overloads that take the
+       'update_depth_info' boolean.
+       (build_namespace_decl): New static function.
+       (build_function_decl, build_var_decl, build_type_decl)
+       (build_qualified_type_decl, build_pointer_type_def)
+       (build_reference_type_def, build_enum_type_decl, build_type_decl)
+       (build_class_decl, build_function_tdecl, build_class_tdecl)
+       (build_type_tparameter, build_type_composition)
+       (build_non_type_tparameter, build_template_tparameter)
+       (build_template_parameter, build_type): Remove the
+       'update_depth_info' boolean from parameters.
+       (handle_element_node): Renamed handle_element into this.  Take an
+       xml node and a boolean to add the resulting IR node to the IR.
+       (handle_type_decl, handle_namespace_decl)
+       (handle_qualified_type_decl, handle_pointer_type_def)
+       (handle_reference_type_def, handle_enum_type_decl)
+       (handle_typedef_decl, handle_var_decl, handle_function_decl)
+       (handle_class_decl, handle_function_tdecl, handle_class_tdecl):
+       Take an xml node and a boolean to add the resulting IR node to the
+       IR.
+       (advance_cursor): No more need to call update_read_context.
+       (read_translation_unit_from_input): Expand the 'abi-instr' node
+       into memory so that we walk its XML nodes and build the IR nodes
+       from them.
+       (read_location): Remove the overload that was using the xml reader.
+       ():
+
+2014-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-reader.cc (read_context::{get_cur_decl, pop_decl}): Return
+       decl_base_sptr rather than shared_ptr<decl_base>.
+       (read_context::push_decl): Take a decl_base_sptr rather than
+       shared_ptr<decl_base>.
+
+2014-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Fix apidoc markup
+       * include/abg-comparison.h (class var_diff): @ref var_decls ->
+       @ref var_decl.
+       * src/abg-comparison.cc (function_decl_diff::first_function_decl):
+       @Return -> @return.
+
+2014-01-14  Jonathan Wakely <jwakely@redhat.com>
+
+       Fix checkout & build instructions
+       * CONTRIBUTING: Fix Git repository url.
+       * doc/website/mainpage.txt: Add elfutils into the dependencies
+       list and fix the repository directory name.  Also use autoreconf
+       -i.
+       * include/abg-fwd.h: Fix Git repository URL.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Tweak dwarf reading test to detect more namespace linking-fu
+       * tests/data/test-read-dwarf/test0.cc: Define a member function
+       out-of-line, outside of its namespace.
+       * tests/data/test-read-dwarf/test0.abi: Update the .abi file.
+       * tests/data/test-read-dwarf/test0: Update the resulting binary.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Add asserts to detect type id mis-management in native format
+       * read_translation_unit_from_input
+       (read_translation_unit_from_input): Abort when an element could
+       not be handled.
+       (build_function_parameter, build_type_decl, qualified_type_def)
+       (build_pointer_type_def, build_reference_type_def)
+       (build_enum_type_decl, build_typedef_decl, build_class_decl)
+       (build_type_tparameter, build_template_tparameter)
+       (handle_qualified_type_decl, handle_pointer_type_def)
+       (handle_reference_type_def, handle_typedef_decl):
+       Abort when a referred-to type is not found or if a type is defined twice.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-hash.cc
+       (class_decl::member_function_template::hash::operator()): Remove
+       useless vertical space.
+       * src/abg-ir.cc (class_decl::class_decl): Properly indent.
+       * src/abg-writer.cc (fn_tmpl_shared_ptr_map)
+       (class_tmpl_shared_ptr_map): Properly indent these typedefs.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Optimize comparison & underlying type accessing
+       * include/abg-ir.h (qualified_type::get_underlying_type)
+       (pointer_type_def::get_pointed_to_type)
+       (reference_type_def::get_pointed_to_type)
+       (typedef_decl::get_underlying_type): Avoid triggering refcount
+       counter increasing/decreasing here, by returning a reference to
+       the underlying type.  This showed up high on a profile.
+       ({scope_decl, type_decl, scope_type_decl, namespace_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       enum_type_decl, typedef_decl, var_decl, class_decl}::operator==):
+       Avoid taking the exception-using path of dynamic_cast.  This
+       showed up very high on a profile.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Fix reading/writing native xml corpus files
+       * src/abg-reader.cc (read_context::clear_type_map): New member
+       function.
+       (read_translation_unit_from_input): Read up to the next element
+       node if we are not on an element node already.  Clear the type
+       map.  Realize that we might be on the next 'abi-instr' node upon
+       completion.
+       (read_corpus_from_input): Read up to the next element node if we
+       are not on an element node already.  It must be an "abi-corpus"
+       node.  THen Advance to the next 'abi-instr' element node before
+       handing it to read_translation_unit_from_input.
+       * src/abg-writer.cc (write_context::clear_type_id_map): New member
+       function.
+       (write_translation_unit): Call it.
+       * tools/abg-tools-utils.cc (guess_file_type): Read enough bytes to
+       detect abi-corpus files magic bytes.
+       * tools/bilint.cc (main): Do not write the corpus file to the
+       output stream if --noout has been provided.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Escape xml pre-defined entities in native (de-)serialization.
+       * include/abg-libxml-utils.h (escape_xml_string)
+       (unescape_xml_string): Declare new functions.
+       * src/abg-libxml-utils.cc (escape_xml_string)
+       (unescape_xml_string): Define them.
+       * src/abg-reader.cc (build_function_decl, build_var_decl)
+       (build_type_decl, build_enum_type_decl, build_class_decl)
+       (build_type_tparameter, build_non_type_tparameter)
+       (build_template_tparameter, handle_namespace_decl)
+       (handle_typedef_decl): Use unescape_xml_string.
+       * src/abg-writer.cc (write_type_decl, write_function_decl)
+       (write_class_decl, write_type_tparameter)
+       (write_non_type_tparameter, write_template_tparameter): Use
+       escape_xml_string.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Implement hash caching
+       * include/abg-ir.h (decl_base::hash_): New member.
+       (decl_base::{g,s}et_hash): New accessors.
+       (type_base_::cached_hash): Forward-declare new hasher.
+       (struct type_ptr_equal): New equality predicate.
+       (type_shared_ptr_equal::operator()): Do not forget to test pointer
+       equality.
+       (type_base::cached_hash): Declare new hasher.
+       * src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
+       qualified_type_def, pointer_type_def, reference_type_def,
+       enum_type_decl, typedef_decl, var_decl, function_decl,
+       function_decl::parameter, class_decl::data_member,
+       class_decl::member_function, class_decl, }::hash::operator()):
+       Implement caching.
+       (type_base::cached_hash::operator()(const type_base*)): Define.
+       (type_base::cached_hash::operator() (const type_base_sptr):
+       Define.
+       * src/abg-ir.cc (type_ptr_map): Make this map use
+       type_base::cached_hash instead of type_base::ptr_hash now.
+       (decl_base::decl_base): Initialize the new
+       decl_base::hash_. member.
+       (decl_base::{s,g}et_hash): Define.
+       (decl_base::operator==(const decl_base& other)): Take the hash in
+       account to speed up inequality detection.
+       * src/abg-writer.cc (type_ptr_map): Renamed type_shared_ptr_map
+       into this.  Make it use type_base::cached_hash and type_ptr_equal
+       instead of type_base::shared_ptr_hash and type_shared_ptr_equal.
+       (get_id_for_type): Add overload for type_base*.  Re-write the
+       previous overload in terms of this one.
+       (write_context::m_type_id_map): Use type_ptr_map as the type for
+       this.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Do not canonicalize types anymore; it's slow and luckily not needed
+       * src/abg-ir.h (translation_unit::canonicalize_type): Remove.
+       * src/abg-dwarf-reader.cc (canonicalize_and_add_type_to_ir)
+       (canonicalize_and_insert_type_into_ir)
+       (canonicalize_and_insert_type_into_ir_under_scope): Remove.
+       (build_enum_type, build_class_type, build_ir_node_from_die):
+       Update for removal of type canonicalization.
+       * src/abg-ir.cc (translation_unit::canonicalize_type): Remove.
+
+2014-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Fix class scope setting & member type de-serializing from dwarf
+       * include/abg-fwd.h (add_decl_to_scope, insert_decl_into_scope):
+       return the decl added to the scope.
+       (as_non_member_type, get_type_declaration): Declare new entry
+       points.
+       * include/abg-ir.h (class decl_base::insert_decl_into_scope):
+       Update this friend declaration.
+       (class scope_decl, class_decl): Update the friend add_decl_to_scope
+       declaration.
+       (scope_decl::add_member_decl): Return the added decl.
+       (class_decl_sptr): Move this typedef befoer the class_decl class
+       declaration.
+       (class_decl::definition_of_declaration_): New member.
+       (class_decl::{set_definition_of_declaration,
+       get_definition_of_declaration}): New accessors.
+       (class_decl::add_member_decl): Return the added member.
+       (class_decl::insert_member_type): New member.
+       (class_decl::member_base::access_specifier): Make this protected.
+       (class_decl::member_type): Make this inherit from type_vase.
+       (class_decl::member_type::type_): Remove this member.
+       (class_decl::member_type::as_type): Remove this accessor.
+       (class_decl::member_type::operator==(const type_base&)): New.
+       (class_decl::member_type::operator shared_ptr<type_base>() const):
+       Remove.
+       (class_decl::member_type::get_underlying_type): New.
+       (class_decl::member_type::operator==(const member_type&) const):
+       New.
+       * src/abg-comparison.cc
+       (class_diff::{ensure_lookup_tables_populated, report}): Adjust for
+       the removal of class_decl::member_type::as_type.
+       * src/abg-dwarf-reader.cc (scope_stack_type): Change this as a
+       typedef to stack<scope_decl*>.
+       (current_scope): Change return type from scope_decl_sptr to
+       scope_decl*.
+       (insert_decl_into_scope): New.
+       (build_namespace_decl_and_add_to_ir): Use insert_decl_into_scope
+       in lieu of add_decl_to_scope.
+       (build_class_type_and_add_to_ir): likewise.  Link a class
+       definition to its declaration.  Push the current scope on the
+       scope stack.  Use as_non_member_type.  Fix setting member types.
+       (get_scope_for_die): Look through declaration-only classe to get
+       its definition.
+       (build_qualified_type, build_pointer_type_def)
+       (build_reference_type, build_typedef_type, build_var_decl)
+       (build_function_decl): Use as_non_member_type.
+       (build_ir_node_from_die): Fix member variable & function adding.
+       * src/abg-ir.cc (scope_decl::{add_member_decl,
+       insert_member_decl}): Return the added member.
+       (add_decl_to_scope): Likewise.
+       (insert_decl_into_scope): Likewise.
+       (get_top_most_scope_under): Fix logic.
+       (get_type_declaration): New overload that return a decl_base*.
+       (as_non_member_type): New definition.
+       (class_decl::{get_definition_of_declaration,
+       set_definition_of_declaration, insert_member_decl}): Likewise.
+       (class_decl::add_member_decl): Re-write in terms of
+       class::insert_member_decl.
+       (class_decl::insert_member_type): New definition.
+       (class_decl::add_member_type): Re-write in terms of
+       class_decl::insert_member_type.
+       (class_decl::remove_member_type): Update for the
+       class_decl::member_type::as_type removal.
+       (class_decl::{add_data_member, add_member_function,
+       add_member_function_template, add_member_class_template}): Call
+       scope_decl::add_member_decl.
+       (class_decl::member_type::member_type): Update as the type now
+       virtually inherits from type_base.
+       (class_decl::member_type::{set,get}_access_specifier): New
+       definitions.
+       (class_decl::member_type::get_underlying_type): Likewise.
+       (class_decl::member_type::set_scope): Update wrt
+       class_decl::member_type::as_type -> get_underlying_type rename.
+       (class_decl::member_type::operator==(const decl_base& other)):
+       There is no more class_decl::member_type::as_type.
+       (class_decl::member_type::operator==(const type_base& other)):
+       New.
+       (class_decl::member_type::get_pretty_representation): Update wrt
+       class_decl::member_type::as_type -> get_underlying_type rename.
+       * src/abg-reader.cc (build_class_decl): New that add
+       add_member_decl adds even member types, no need to add it
+       explicitly anymore.
+
+2014-01-07  Dodji Seketeli <dodji@redhat.com>
+
+       Add regression tests for dwarf reading
+       * tests/test-read-dwarf.cc: New dwarf reading regression test.
+       * tests/data/test-read-dwarf/test0: New test input.
+       * data/test-read-dwarf/test0: Likewise.
+       * data/test-read-dwarf/test0.abi: Likewise.
+       * data/test-read-dwarf/test0.cc: Likewise.
+       * data/test-read-dwarf/test1: Likewise.
+       * data/test-read-dwarf/test1.abi: Likewise.
+       * data/test-read-dwarf/test1.cc: Likewise.
+       * tests/Makefile.am: Build the new tests/test-read-dwarf.cc file.
+
+2014-01-07  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless dependencies in tests/Makefile.am
+       * tests/Makefile.am: Remove useless *_DEPENDENCIES variables.
+
+2014-01-07  Dodji Seketeli <dodji@redhat.com>
+
+       Support new 'abi-corpus' native XML format (.abi)
+       * include/abg-reader.h (read_corpus_from_native_xml)
+       (read_corpus_from_native_xml_file): Declare new entry points.
+       * include/abg-writer.h (write_corpus_to_native_xml)
+       (write_corpus_to_native_xml_file): Likewise.
+       * src/abg-reader.cc (read_translation_unit_from_input): Renamed
+       read_input into this.  Support new 'path' attribute for
+       'abi-instr' XML element.
+       (read_corpus_from_input): New static function.
+       (read_translation_unit_from_file)
+       (read_translation_unit_from_buffer)
+       (read_translation_unit_from_istream): Update wrt read_input ->
+       read_translation_unit_from_input.
+       (read_corpus_from_native_xml, read_corpus_from_native_xml)
+       (read_corpus_from_native_xml_file): Define new entry points.
+       * src/abg-writer.cc (write_translation_unit): Write 'path'
+       attribute into the 'abi-instr' xml element.
+       (write_corpus_to_native_xml, write_corpus_to_native_xml_file):
+       Define new entry points.
+       * tools/abg-tools-utils.h (file_type::{FILE_TYPE_XML_CORPUS,
+       FILE_TYPE_ZIP_CORPUS}): New enumerators.
+       * tools/abg-tools-utils.cc (guess_file_type): Support detection of
+       the new xml file format containing a document root 'abi-corpus'
+       root element.
+       * tools/bidiff.cc (main): Support diffing xml corpus-es and zip
+       corpus-es.
+       * tools/bidw.cc (main): Recognize elf files before reading them.
+       * tools/bilint.cc (main): Support reading xml/zip corpus-es too.
+       * tests/data/test-read-write/test[0-23].xml: Update 'path'
+       attribute.
+
+2014-01-07  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-writer.h (write_translation_unit): Re-indent parms.
+       * src/abg-writer.cc (write_translation_unit): Likewise.
+       * test/test-read-write.cc (main): Fix white space.
+
+2014-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Fix global variables diff reporting in corpus-es
+       * src/abg-comparison.cc
+       (corpus_diff::priv::ensure_lookup_tables_populated): Fix a wrong
+       assert, resulting from a copy paste typo.
+
+2014-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Add support for global variables in corpus diffing
+       * include/abg-comparison.h (string_var_ptr_map, changed_var_ptr)
+       (string_changed_var_ptr_map): New convenience typedefs.
+       * src/abg-comparison.cc
+       (corpus_diff::priv::{deleted_vars_,added_vars_,changed_vars_}):
+       New members.
+       (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
+       Update wrt the new variables related lookup tables.
+       (corpus_diff::ensure_lookup_tables_populated): Update to populate
+       variables related lookup tables.
+       (corpus_diff::report): Update to display added/removed/changed
+       variables.
+
+2014-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixlets
+       * include/abg-comparison.h (changed_function_ptr): Fix comment.
+       * src/abg-comparison.cc (corpus_diff::report): Likewise.
+       * src/abg-corpus.cc (corpus::is_empty): Likewise.
+
+2013-12-23  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for diffing ABI corpus files
+       * include/abg-comparison.h (string_function_ptr_map)
+       (changed_function_ptr, string_changed_function_ptr_map)
+       (corpus_diff_sptr): New convenience typedefs.
+       (translation_unit_diff): Add comments.
+       (class corpus_diff): New type.
+       (compute_diff): New overload for corpus_diff.
+       * include/abg-corpus.h (corpus::{functions, variables}): New
+       typedefs.
+       (corpus::{operator==, get_functions, get_variables}): New members.
+       * include/abg-diff-utils.h (struct deep_ptr_eq_functor): New
+       functor.
+       * include/abg-ir.h (translation_unit::operator==): New member
+       equality operator.
+       * src/abg-comparison.cc (struct corpus_diff::priv): New private
+       struct holding the private members of corpus_diff.
+       (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables,
+       ensure_lookup_tables_populated}): Define new private member functions.
+       (corpus_diff::{corpus_diff, first_corpus, second_corpus,
+       function_changes, variable_changes, length, report}): New public members.
+       (struct noop_deleter): New struct.
+       (compute_diff): New implementation for corpus_diff.
+       * src/abg-corpus.cc (struct corpus::priv): Renamed corpus::impl
+       into this.  Add new fns, vars and is_symbol_table_built data
+       members.
+       (corpus::priv::build_symbol_table): New member function.
+       (class symtab_build_visitor_type): New visitor type to build the
+       symbol table.
+       (struct func_comp, struct var_comp): New comparison functors.
+       (corpus::priv::build_symbol_table): Define new member function.
+       (corpus::{corpus, add, get_translation_units, operator==,
+       get_functions, get_variables}): Define new members.
+       * src/abg-ir.cc (translation_unit::operator==): Define new member
+       equality operator.
+       (operator==(translation_unit_sptr l, translation_unit_sptr r)):
+       Define new equality operator.
+       * tools/abg-tools-utils.h (enum file_type): New enum.
+       (guess_file_type): Declare new function.
+       * tools/abg-tools-utils.cc (guess_file_type): define new function.
+       * tools/bidiff.cc (main): Guess the type of the files given in
+       input and support elf files reading and diffing.
+
+2013-12-23  Dodji Seketeli <dodji@redhat.com>
+
+       Generalize use of equality operator in core diff algorithms
+       * include/abg-diff-utils.h (struct default_eq_functor): New
+       equality functor.
+       (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Add a
+       new equality functor template parameter and document it.  Use it
+       to compare the elements of the sequences given in argument.
+       (compute_middle_snake, ses_len, compute_diff): Add a new equality
+       functor template parameter and document it.  Adjust call to
+       end_of_frr_d_path_in_k_plus_delta, end_of_fr_d_path_in_k and
+       compute_middle_snake.
+       (ses_len, compute_diff): Add a new overload that uses a
+       default_eq_functor as comparison functor, to avoid breaking
+       existing client code.
+       * src/abg-diff-utils.cc (compute_middle_snake): Adjust the call to
+       the compute_middle_snake.
+
+2013-12-23  Dodji Seketeli <dodji@redhat.com>
+
+       Change ir node visitor interface work on pointer to nodes
+       * include/abg-ir.h (ir_traversable_base): New type to be the base
+       of IR nodes that are to be traversed.  Extends traversable_base.
+       Its ir_traversable_base::traversable() method takes an
+       ir_node_visitor&.
+       (ir_node_visitor::visit): Change these virtual overloads to take
+       pointers to IR nodes, rather than references.  This will be useful
+       to e.g, store these IR nodes in containers on the side for some
+       algorithms to work.  That is going to be useful later to,
+       e.g. build symbol tables on the side, using the visitor interface.
+       (class decl_base): Make this inherit ir_traversable_base.
+       * src/abg-ir.cc (*::traverse): Adjust comments and the call the
+       ir_node_visitor::visit call.  Use the ir_traversable_base type
+       rather than traversable_base.
+       (ir_traversable_base::traverse): Define.
+       (ir_node_visitor::visit): Change these overloads to take pointers
+       rather than reference to ir nodes.
+       * tests/test-walker.cc (name_printing_visitor::visit): Adjust to
+       take pointers rather than references.
+
+2013-12-23  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget to read function parms
+       * src/abg-dwarf-reader.cc (build_function_decl): Do not forget the
+       the function parameters.  Oops.
+
+2013-12-20  Dodji Seketeli <dodji@redhat.com>
+
+       Support reading member functions and member types from DWARF
+       * include/abg-ir.h (method_type_sptr): New convenience typedef.
+       * src/abg-dwarf-reader.cc (read_context::{dwarf_version,
+       die_wip_classes_map}): New accessors.
+       (die_is_virtual): Rename is_virtual into this.
+       (is_type_tag, is_type_die, die_virtual_function_index): Define new
+       static functions.
+       (die_member_offset): Fix comment.
+       (get_scope_for_die): Take the read context as argument.
+       (canonicalize_and_add_type_to_ir): Likewise.  On NULL scope, get
+       the current translation unit from the read context.
+       (canonicalize_and_insert_type_into_ir_under_scope): Handle NULL
+       context.
+       (build_function_decl): Support creating method_decls from here
+       when necessary.
+       (build_class_type_and_add_to_ir): Rename build_class_type into
+       this.  Handle adding the class to the IR and to the relevant maps.
+       During the creation of the class, arrange for
+       build_ir_node_from_die on the current DIE to return a
+       declaration-only class, representing the declaration for the class
+       that is being constructed.  This breaks circular dependencies
+       induced by decls/types that refer to the class being built, before
+       the class is fully built and has a (logical) type ID.  Once the
+       class is created, make it refer to the class declaration that was
+       previously handed for the requests to the class DIE.  Now requests
+       to the class DIE will just yield the newly built class.  Add
+       support for member functions and member types.
+       (build_corpus): Support reading the dwarf version and stick it
+       into the context.
+       (build_ir_node_from_die): Adjust for change in
+       canonicalize_and_add_type_to_ir and build_class_type signature
+       change.
+       * src/abg-ir.cc (class_decl::method_decl::get_type): Support
+       returning NULL type.
+
+2013-12-20  Dodji Seketeli <dodji@redhat.com>
+
+       Don't crash in get_global_scope on empty decls
+       * src/abg-ir.cc (get_global_scope): Don't crash when given a NULL
+       decl.
+
+2013-12-20  Dodji Seketeli <dodji@redhat.com>
+
+       Make decl_base::set_scope virtual, to work on class_decl::member_type
+       * include/abg-ir.h (decl_base::set_scope): Make this virtual.
+       (class_decl::member_type::set_scope): Declare an overload here.
+       * src/abg-ir.cc (class_decl::member_type::set_scope): Define new
+       overload.  Make this set the scope of the underlying type of the
+       member type as well.
+
+2013-12-20  Dodji Seketeli <dodji@redhat.com>
+
+       Support artificial parameters
+       * include/abg-ir.h (function_decl::parameter::{get,
+       set}_artificial): Add new accessors for an "artificial" flag.
+       * src/abg-reader.cc (build_function_parameter): Support reading
+       the artificial parameter flag.
+       * src/abg-writer.cc (write_function_decl): Support writing the
+       artificial parameter flag.
+
+2013-12-19  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for reading struct/class
+       * src/abg-dwarf-reader.cc (enum virtuality): New enum.
+       (class expr_result, struct dwarf_expr_eval_context): New types.
+       (die_size_in_bits)
+       (die_access_specifier, die_virtuality, is_virtual)
+       (die_location_expr, op_pushes_constant_value)
+       (op_pushes_non_constant_value, op_manipulates_stack)
+       (op_is_arith_logic, op_is_control_flow)
+       (eval_last_constant_dwarf_sub_expr, die_member_offset)
+       (build_class_type): New static functions.
+       (build_ir_node_from_die<DW_TAG_{class, structure}_type>): Support
+       creating IR node for class and struct by calling the new
+       build_class_type.
+
+2013-12-19  Dodji Seketeli <dodji@redhat.com>
+
+       Slight style fix
+       * src/abg-dwarf-reader.cc (build_qualified_type): Fix indentation.
+
+2013-12-19  Dodji Seketeli <dodji@redhat.com>
+
+       Be more forgiving when parsing xml from stdin
+       * src/abg-libxml-utils.cc (xml_istream_input_read): Return the
+       byte read count even when the stream seems to be borked.  In that
+       case it should be zero.
+
+2013-12-19  Dodji Seketeli <dodji@redhat.com>
+
+       Don't crash if building pointer/reference yields NULL
+       * src/abg-dwarf-reader.cc
+       (build_ir_node_from_die<DW_TAG_pointer_type)
+       (DW_TAG_rvalue{0,1}_reference_type>): Do not crash if building the
+       IR node for the underlying type yields NULL.
+
+2013-12-19  Dodji Seketeli <dodji@redhat.com>
+
+       Use dwarf_attr_integrate() rather than dwarf_attr()
+       * src/abg-dwarf-reader.cc (die_string_attribute)
+       (die_unsigned_constant_attribute, die_signed_constant_attribute)
+       (die_flag_attribute, die_die_attribute): Use dwarf_attr_integrate
+       rather than dwarf_attr to look through DW_AT_abstract_origin.
+
+2013-12-14  Dodji Seketeli <dodji@redhat.com>
+
+       Support enums
+       * src/abg-dwarf-reader.cc (build_enum_type): New function.
+       (build_ir_node_from_die): Call the new build_enum_type here to
+       Handle DW_TAG_enumeration_type DIEs.
+
+2013-12-14  Dodji Seketeli <dodji@redhat.com>
+
+       Build & use a DIE -> parent map to avoid emitting useless types
+       * include/abg-ir.h (translation_unit::{mark_type_as_used,
+       prune_unused_types}): Remove these declarations.
+       * src/abg-ir.cc (translation_unit::priv::used_types_): Remove.
+       (class subtype_marking_visitor): Likewise.
+       (translation_unit::{mark_type_as_used, prune_unused_types):
+       Likewise.
+       (get_top_most_scope_under): Fix logic and add comment.
+       * src/abg-dwarf-reader.cc (die_tu_map_type, offset_offset_map):
+       New convenience typedefs.
+       (read_context::{die_tu_map_, die_parent_map_}): New context
+       members.
+       (read_context::{die_tu_map, die_parent_map}): New accessors.
+       (build_ir_node_from_die): New overload that takes the scope of the
+       ir node in parameter.
+       (die_signed_constant_attribute): Un-comment this.
+       (build_die_parent_relations_under, build_die_parent_map)
+       (get_parent_die, get_scope_for_die): New static functions.
+       (build_translation_unit_and_add_to_ir): Renamed
+       build_translation_unit into this. Populate the new
+       read_context::die_tu_map() here.
+       (canonicalize_and_add_type_to_ir)
+       (canonicalize_and_insert_type_into_ir)
+       (canonicalize_and_insert_type_into_ir_under_scope): Move these
+       overloads over the top of the file.
+       (build_namespace_decl_and_add_to_ir): Fix this by adding the
+       namespace to the IR scope of the DIE (using the new
+       get_scope_for_die()).  Update the read_context::die_decl_map()
+       map.
+       (build_function_decl): Support functions that return void.  Also,
+       skip parameters that don't have type set.
+       (build_corpus): Walk all the DIEs to build a DIE -> parent map.
+       Adjust for the rename to build_translation_unit_and_add_to_ir.
+       (build_ir_node_from_die): Add a scope parm.  Adjust back to
+       building IR nodes only for public decls, unless the
+       'called_from_public_decl' flag is set.  Adjust to stick the resulting
+       IR node into the scope given in parameter.
+
+2013-12-14  Dodji Seketeli <dodji@redhat.com>
+
+       Mark sub-types as part of general type marking
+       * src/abg-ir.cc (subtype_marking_visitor): New visitor.
+       (translation_unit::mark_type_as_used): When marking a composite
+       type as used, mark its sub-types as well.
+
+2013-12-14  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing virtual keywords for traverse() method
+       * include/abg-ir.h ({translation_unit, decl_base, scope_decl,
+       type_decl, namespace_decl, qualified_type_decl, pointer_type_def,
+       reference_type_def, enum_type_decl, typedef_decl, var_decl,
+       function_tdecl, class_decl, class_decl::data_member,
+       class_decl::member_function, class_decl::member_function_template,
+       class_decl::member_class_template}::traverse): Add a virtual
+       keyword at least to "document" that this method is virtual -- and
+       thus remind the user that it overrides the
+       traversable_base::traverse().
+
+2013-12-14  Dodji Seketeli <dodji@redhat.com>
+
+       Add a is_type overload
+       * include/abg-fwd.h (is_type): Declare new overload that takes a
+       type reference.
+       * src/abg-ir.cc (is_type): Define.
+
+2013-12-13  Dodji Seketeli <dodji@redhat.com>
+
+       Prune types that are not ref'ed by public decls
+       * include/abg-fwd.h (remove_decl_from_scope): Declare new
+       function.
+       * include/abg-ir.h (type_base_sptr, decl_base_sptr): Move these
+       convenience typedef before the translation_unit declaration.
+       (translation_unit::{mark_type_as_used, prune_unused_types}):
+       Declare new methods.
+       (decl_base::remove_member_decl): Likewise.
+       (class_decl::{remove_member_decl, remove_member_type): Likewise.
+       * src/abg-dwarf-reader.cc (die_decl_map_type): Change this map
+       type so that the value is now a DIE offset, rather than a DIE.
+       This is because many times the lifetime of DIEs is shorter than
+       the one of the reader_context.  Also, the die offset uniquely
+       designates a physical DIE even if several different instances of
+       logical DIE might point to it.
+       (struct die_hash): Remove this as it's useless now that we store
+       DIE offsets in the map.
+       (build_translation_unit): Call build_ir_node_from_die w/o setting
+       the called_from_public_decl flag.  Prune the types that are not
+       used by any public decls.
+       (build_namespace_decl_and_add_to_ir): all build_ir_node_from_die
+       w/o setting the called_from_public_decl flag.
+       (build_ir_node_from_die): Change the only_public_decl flag into a
+       called_from_public_decl flag.  Mark types used by public decls as
+       such.  Adjust for the parm changes of build_qualified_type
+       build_pointer_type_def, build_reference_type, and
+       build_typedef_type.
+       (build_qualified_type, build_pointer_type_def)
+       (build_reference_type, build_typedef_type): Take a new
+       called_from_public_decl.  Pass it to build_ir_node_from_die.
+       (build_var_decl): Call build_ir_node_from_die with the
+       called_from_public_decl flag set to true to flag the types
+       referenced by this variable as being used.
+       (build_function_decl): Take a called_from_public_decl flag as
+       well, as this function can now call build_function_decl itself to
+       build a function decl out of the value of the DW_AT_specification
+       attribute, for DIEs representing function definitions.  Also, flag
+       the types referenced by public functions are being used.
+       * src/abg-ir.cc (translation_unit::priv::used_types_): New map for
+       the used types.
+       (translation_unit::{mark_type_as_used, prune_unused_types}):
+       Define new methods.
+       (scope_decl::remove_member_decl): Likewise.
+       (remove_decl_from_scope): Define new function.
+       (class_decl::{remove_member_decl, remove_member_type}): Define new
+       methods.
+
+2013-12-12  Dodji Seketeli <dodji@redhat.com>
+
+       Support reading namespaces
+       * include/abg-fwd.h (get_global_scope): Return a const
+       global_scope.  Add a new overload that takes a naked pointer as
+       parm.
+       (insert_decl_into_scope, get_top_most_scope_under): Declare new
+       entry points.
+       * include/abg-ir.h (class decl_base, class scope_decl): Add
+       insert_decl_into_scope as a friend of these classes.
+       (scope_decl::{insert_decl_into_scope, find_iterator_for_member}):
+       Declare new member.
+       (scope_decl::get_member_decls): New non-const overload.
+       * src/abg-dwarf-reader.cc (build_translation_unit): Remove the
+       "recurse" parameter.  Adjust the call to build_ir_node_from_die to
+       read just public decls that are at namespace scope.  Anything else
+       should be dropped unless it's needed to emitting the public
+       namespace-level decls.
+       (build_namespace_decl_and_add_to_ir)
+       (canonicalize_and_insert_type_into_ir): Define new static
+       functions.
+       (build_corpus): Adjust ad build_translation_unit doesn't have the
+       "recurse" parameter anymore.
+       (canonicalize_and_add_type_to_ir): Make this static.  Fix
+       comments.
+       (build_ir_node_from_die): Take a new "only_public_decl"
+       parameter. For DW_TAG_base_type case, use the new
+       canonicalize_and_insert_type_into_ir to insert the type at the
+       right place in the global scope making sure it is seen before the
+       current scope.  For pointer, references and qualified types, use
+       canonicalize_and_insert_type_into_ir to add the type at the same
+       scope as its underlying type.  Handle DW_TAG_{namespace,module}
+       using the new build_namespace_decl_and_add_to_ir function.  Add
+       some vertical spaces and some assertions.
+       * src/abg-ir.cc (scope_decl::add_member_decl): Use scope_decl_sptr
+       typedef.
+       (scope_decl::{insert_member_decl,find_iterator_for_member}):
+       Define new methods.
+       (insert_decl_into_scope, get_top_most_scope_under): Define new
+       functions.
+       (get_global_scope): Constify the return type.
+       (get_translation_unit): Adjust as get_global_scope now returns a
+       const.
+       * src/abg-reader.cc (get_translation_unit): Likewise.
+
+2013-12-12  Dodji Seketeli <dodji@redhat.com>
+
+       Fix function_decl::parameter::operator==
+       * include/abg-ir.h (function_decl::parameter::operator==): Support
+       empty type, e.g, in presence of a variadic parameter.
+
+2013-12-12  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-ir.h (decl_base::set_visibility): Remove useless
+       white space.
+       (class scope_decl): Remove useless white space.
+       (scope_decl::add_member_decl): Use decl_base_sptr convenience
+       typedef.
+       (global_scope_sptr, namespace_decl_sptr): New convenience typedef.
+       (class global_scope): Remove useless white space.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-dwarf-reader.cc (die_string_attribute, is_public_decl)
+       (build_translation_unit, build_ir_node_from_die): Fix comments.
+       (die_unsigned_constant_attribute, die_signed_constant_attribute)
+       (die_loc_and_name): Align parms.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support typedef types
+       * src/abg-dwarf-reader.cc (build_typedef_type): Define new static
+       function.
+       (canonicalize_and_add_type_to_ir): Do not crash on NULL input
+       type.  Also, add a new overload for smart pointer on scope.
+       (build_ir_node_from_die): For DW_TAG_base_type case, adjust as
+       canonicalize_and_add_type_to_ir now takes smart pointers on
+       scopes.  Support the DW_TAG_typedef case by calling the new
+       build_typedef_type.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support reference types
+       * src/abg-dwarf-reader.cc (build_pointer_type_def): Do not forget
+       to get the proper size of the pointer type.
+       (build_reference_type): Define new static function.
+       (build_ir_node_from_die): Call build_reference_type for the
+       DW_TAG_reference_type and DW_TAG_rvalue_reference_type cases.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support pointer types
+       * include/abg-fwd.h (get_translation_unit, get_global_scope):
+       Declare new overloads that act on a naked pointer to decl_base.
+       * src/abg-dwarf-reader.cc (build_pointer_type_def): Define new
+       static function.
+       (canonicalize_and_add_type_to_ir): Take a naked pointer to
+       scope_decl rather than a smart pointer.
+       (build_ir_node_from_die): For DW_TAG_base_type, adjust.  Support
+       DW_TAG_pointer_type case.  For DW_TAG_{const,volatile}_type case,
+       make sure the qualified type is in the same scope as its
+       underlying type.
+       * src/abg-ir.cc (get_global_scope, get_translation_unit): Define
+       new overloads that acts on a naked decl_base.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support qualified types
+       * src/abg-dwarf-reader.cc (build_qualified_type)
+       (canonicalize_and_add_type_to_ir): Define new static functions.
+       (build_ir_node_from_die): In the DW_TAG_base_type case, use the
+       new canonicalize_and_add_type_to_ir which is a factorization of
+       this code.  In the DW_TAG_{const,volatile}_type, use the new
+       build_qualified_type and canonicalize_and_add_type_to_ir
+       functions.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support reading public functions from DWARF
+       * src/abg-dwarf-reader.cc (read_context::dwarf_): New member.
+       (read_context::load_debug_info): Move the content of
+       load_debug_info_from_elf here.
+       (read_context::dwarf): New accessor for the dwarf_ member above.
+       (die_flag_attribute, die_loc_and_name, is_public_decl)
+       (build_function_decl): New static functions.
+       (die_location): Do not try to create a location object when the
+       location has empty file or empty line number.
+       (build_translation_unit): Take a new address_size parameter.
+       (build_type_decl): Really take a context parameter.  Use the new
+       die_loc_and_name() here.
+       (build_var_decl): Skip non-public vars.
+       (build_corpus): Use dwarf_nextcu instead of dwfl_nextcu, so that
+       we can get the address_size used in the current CU.  Note that for
+       this we are getting the Dwarf* pointer from the context thanks to
+       the new read_context::dwarf() getter.  Adjust the call to
+       build_translation_unit to pass it the new address_size.
+       (build_ir_node_from_die): Shorten lines a little bit.  Call the
+       new build_function_decl to support reading DW_TAG_subprogram DIEs.
+       (read_corpus_from_elf): Adjust to create the read context earlier
+       and use its read_context::load_debug_info method to load the debug
+       info.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Make bilint read input from stdin
+       * include/abg-libxml-utils.h (new_reader_from_istream): Declare
+       new public entry point.
+       * src/abg-libxml-utils.cc (xml_istream_input_read)
+       (xml_istream_input_close): New static functions.
+       (new_reader_from_istream): Define new public input function.
+       * include/abg-reader.h (read_translation_unit_from_istream):
+       Declare new entry points.
+       * src/abg-reader.cc (read_translation_unit_from_istream): Define
+       new entry points.
+       * tools/bilint.cc (options::{read_from_stdin, noout}): New
+       members.
+       (display_usage): Document --stdin and --noout.
+       (parse_command_line): Adjust to consider that no option on the
+       command line means reading from stdin, just like --stdin.  Support
+       the --noout option as well.
+       (main): Support Read the abi instr from stdin; in that case, what
+       was read is just serialized back to stdout, unless --noout was
+       supplied.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support the "address-size" attribute for <abi-instr> elements
+       * include/abg-ir.h (translation_unit::translation_unit): Take an
+       address_size parameter.
+       (translation_unit::{get_address_size, set_address_size}): New
+       accessors.
+       * src/abg-ir.cc (translation_unit::priv::address_size_): New
+       private member.
+       (translation_unit::translation_unit): Take an address_size
+       parameter.
+       (translation_unit::{get_address_size, set_address_size}): Define
+       these new methods.
+       * src/abg-reader.cc (read_input): Read the "address-size"
+       attribute from the abi-instr element.
+       * src/abg-writer.cc (write_translation_unit): Write the
+       "address-size" attribute.
+       * tests/data/test-read-write/test23.xml: New test input.
+       * tests/test-read-write.cc (in_out_specs): Add the new test above
+       to the list of files to read and write back.
+
+2013-12-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support variadic arguments in function decls
+       * src/abg-reader.cc (build_function_parameter): Support reading
+       the "is-variadic" attribute.
+       * src/abg-writer.cc (write_function_decl): Support writing the
+       "is-variadic" attribute.
+       * tests/data/test-read-write/test22.xml: New test input.
+       * tests/test-read-write.cc (in_out_specs): Add the new test to the
+       list of files to read and write back.
+
+2013-12-07  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support of reading an ABI Corpus from DWARF
+       * configure.ac: Check the presence of libdw.so and
+       elfutils/libdwfl.h headers from elfutils and define the necessary
+       linking flags.
+       * include/abg-dwarf-reader.h: New header file
+       * include/Makefile.am: Add the new header file to the source
+       distribution.
+       * src/abg-dwarf-reader.cc:: New file.
+       * src/Makefile.am: Add the new file to the source distribution.
+       * include/abg-fwd.h (dump): Add declarations for several overloads
+       to allow dumping to a given output stream.
+       * include/abg-ir.h (class translation_unit): Use a pimpl idiom for
+       this now.
+       (translation_unit::canonicalize_type): Declare new method.
+       * src/abg-ir.cc (struct translation_unit::priv): New private type
+       for the pimpl idiom for translation_unit.
+       (translation_unit::{translation_unit, get_global_scope, get_path,
+       set_path, get_loc_mgr}): Adjust for pimpl idiom.
+       (translation_unit::canonicalize_type): Define this new method and
+       one overload.
+       * src/abg-writer.cc (dump): Define several overloads to dump IR
+       nodes to given output streams.
+       * tools/bidw.cc: New file for the new bidw tool.
+       * tools/Makefile.am: Define rules to build the new bidw tools.
+
+2013-12-07  Dodji Seketeli <dodji@redhat.com>
+
+       Pass a string by reference rather than by value
+       * tools/bilint.cc (display_usage): Pass program name by reference.
+
+2013-12-07  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-ir.cc (location_manager::location_manager)
+       (translation_unit::{is_empty, traverse, ~translation_unit): Remove
+       useless vertical white spaces.
+       * tools/bilint.cc (parse_command_line): Fix indentation.
+
+2013-12-04  Dodji Seketeli <dodji@redhat.com>
+
+       Prepare serialization API for multiple backends
+       * include/abg-reader.h: New file with abigail::xml_reader APIs.
+       * include/abg-writer.h: New file with abigail::xml_writer APIs.
+       * include/Makefile.am: Add the new files above to the source
+       distribution.
+       * src/abg-reader.cc: Update top-file comments.
+       (namespace xml_reader): Rename namespace
+       reader into this.
+       (read_to_translation_unit, read_corpus_from_archive): New static
+       functions.
+       (read_translation_unit_from_file)
+       (read_translation_unit_from_file, read_corpus_from_file): New
+       entry points.
+       (struct array_deleter): New functor.
+       (translation_unit::read): Remove this.
+       * src/abg-writer.cc: Update top file comments.
+       (namespace xml_writer): Rename namespace
+       writer into this.
+       (struct archive_write_ctxt): New internal type.
+       (create_archive_write_context, write_translation_unit_to_archive)
+       (write_translation_unit, write_corpus_to_archive): New low level
+       static functions overloads.
+       (write_corpus_to_archive, write_translation_unit): Public higher
+       level overloads.
+       (translation_unit::write): Remove.
+       (dump): Update for new xml_writer namespace.
+       * include/abg-ir.h (translation_unit::{read, write}): Remove these
+       serialization methods.
+       * include/abg-corpus.h (corpus_sptr): New convenience typedef.
+       (corpus::{read, write}): Remove these methods.
+       * src/abg-corpus.cc (corpus::{read, write})
+       (corpus::impl::{serialized_tus, archive}): Remove these members.
+       (corpus::impl::{get_archive, close_archive, write_tu_to_archive,
+       read_to_translation_unit}): Remove these methods.
+       * tests/test-bidiff.cc (main): Update for usage of the new
+       xml_reader API.
+       * tests/test-read-write.cc (main): Likewise. Update for the usage
+       of the new xml_writer API, too.
+       * tests/test-walker.cc (main): Update for the usage of the new
+       xml_reader API.
+       * tests/test-write-read-archive.cc (main): Likewise.  And for the
+       xml_writer API, too.
+       * tools/biar.cc (add_tus_to_archive, extract_tus_from_archive): Likewise.
+       * tools/bidiff.cc (main): Likewise, for xml_reader APIs.
+       * tools/bilint.cc (main): Likewise, for xml_writer APIs, too.
+
+2013-11-29  Dodji Seketeli <dodji@redhat.com>
+
+       Add support for bidiff regression testing
+       * tests/data/test-bidiff/test-enum0-v0.cc.bi: New input file.
+       * tests/data/test-bidiff/test-enum0-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-enum0-report.diff: Likewise.
+       * tests/data/test-bidiff/test-enum1-v0.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-enum1-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-enum1-report.txt: Likewise.
+       * tests/data/test-bidiff/test-qual-type0-v0.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-qual-type0-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct0-v0.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-struct0-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-struct0-report.txt: Likewise.
+       * tests/data/test-bidiff/test-struct1-v0.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-struct1-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-struct1-report.txt: Likewise.
+       * tests/data/test-bidiff/test-var0-v0.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-var0-v1.cc.bi: Likewise.
+       * tests/data/test-bidiff/test-var0-report.txt: Likewise.
+       * tests/test-bidiff.cc: New file.
+       * tests/Makefile.am: Build the new runtestbidiff regression test
+       and add the above to the source distribution.
+
+2013-11-29  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing test inputs to source distribution
+       * tests/Makefile.am (data/test-read-write/test{17, 18, 19, 20,
+       21}.xml): Add these test input files to the source distribution.
+
+2013-11-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add diff support for var_decl
+       * include/abg-comparison.h (class var_diff): New declaration.
+       (var_diff_sptr): New convenience typedef.
+       (compute_diff): New overloads for var_diff, decl_base and
+       type_base.
+       * src/abg-comparison.cc (try_to_diff): Renamed try_to_diff_types
+       into this.
+       (compute_diff_for_types): Adjust for the try_to_diff_types
+       renaming.  Fix comments.
+       (compute_diff_for_decls): Re-use try_to_diff.  Update for
+       var_decl.
+       (compute_diff): Define overloads for decl_base, type_base and
+       var_decl.
+       (diff_length_of_decl_bases, diff_length_of_type_bases): New static
+       help functions.
+       (report_name_size_and_alignment_changes): Renamed
+       report_size_and_alignment_changes into this.  Make it report name
+       changes as well.
+       (var_diff::priv): New struct.
+       (var_diff::{var_diff, first_var, second_var, type_diff, length,
+       report}): Define methods.
+       ({qualified_type_diff, enum_diff, class_diff, scope_diff,
+       function_decl_diff}::report): Do not report
+       anything if the diff is empty.
+       (type_decl_diff::length): Fix this.
+       (type_decl_diff::report): Adjust for renaming to
+       report_name_size_and_alignment_changes.
+
+2013-11-28  Dodji Seketeli <dodji@redhat.com>
+
+       Add enum_type_decl::get_pretty_representation()
+       * include/abg-ir.h (enum_type_decl::get_pretty_representation):
+       Declare new virtual method override.
+       * src/abg-ir.cc (enum_type_decl::get_pretty_representation):
+       Define it.
+
+2013-11-28  Dodji Seketeli <dodji@redhat.com>
+
+       Change return type of abigail::is_type()
+       * include/abg-fwd.h (is_type): Change the return type from bool to
+       type_base_sptr.
+
+2013-11-27  Dodji Seketeli <dodji@redhat.com>
+
+       Support diff for enum_type_decl
+       * include/abg-ir.h (enum_type_decl_sptr): New typedef.
+       (enum_type_decl::enumerator::enumerator): Make default constructor
+       public so that enumerators can be stored in vectors.  Maybe I
+       should have made stored pointers to enumerators instead ...
+       (enum_type_decl::enumerator::get_qualified_name): Define new
+       method.
+       * include/abg-comparison.h (string_enumerator_map)
+       (changed_enumerator, string_changed_enumerator_map)
+       (enum_diff_sptr): New convenience typedefs.
+       (class enum_diff): Declare new class.
+       (compute_diff): New overload for enum_type_decl.
+       * src/abg-comparison.cc (enum diff_kind, report_mem_header): Move
+       these at the beginning of the file.
+       (struct enum_diff::priv): Define this.
+       (enum_diff::{clear_lookup_tables, lookup_tables_empty,
+       ensure_lookup_tables_populated, enum_diff, first_enum,
+       second_enum, underlying_type_diff, deleted_enumerators,
+       inserted_enumerators, changed_enumerators, length, report}):
+       Define these new methods.
+       (compute_diff): New overload for enum_diff.
+       (compute_diff_for_types): Add support enum_type_decl here.
+
+2013-11-27  Dodji Seketeli <dodji@redhat.com>
+
+       Fix equality operator for enum_type_decl
+       * src/abg-ir.cc (enum_type_decl::operator==(const type_base& o)):
+       This was comparing just the decl_base and type_base part of the
+       enum.  Now re-use the enum_type_decl::operator==(const decl_base)
+       that compares the entirety of the types.
+
+2013-11-27  Dodji Seketeli <dodji@redhat.com>
+
+       Fix indentation and wording of some existing diff reports
+       * src/abg-comparison.cc (class_diff::report): Fix report wording.
+       Change indentation space from 4 white spaces to two.
+       (scope_diff::report): Fix logic indentation generation.
+
+2013-11-26  Dodji Seketeli <dodji@redhat.com>
+
+       Change enum_type_decl::enumerators from a list to a vector
+       * include/abg-ir.h (enum_type_decl::enumerators): Change this from
+       a list to a vector.
+       * src/abg-hash.cc (enum_type_decl::hash::operator()): Use the
+       typedef enum_type_decl::enumerators rather than std::list<blah>.
+       * src/abg-ir.cc (enum_type_decl::get_enumerators): Use
+       the enum_type_decl::enumerators typedef.
+       (enum_type_decl::operator==): Likewise.
+       * src/abg-reader.cc (build_enum_type_decl): Likewise.
+       * src/abg-writer.cc (write_enum_type_decl): Likewise.
+
+2013-11-25  Dodji Seketeli <dodji@redhat.com>
+
+       Fix thinko in qualified_type_diff::length
+       * src/abg-comparison.cc (qualified_type_diff::length): Fix thinko.
+
+2013-11-25  Dodji Seketeli <dodji@redhat.com>
+
+       Support diff between qualified types
+       * include/abg-ir.h (qualified_type_def_sptr): Declare new typedef.
+       (class qualified_type_def): Add comment at the end.
+       (operator<<(std::ostream&, qualified_type_def::CV)): Declare new
+       streaming operator.
+       * src/abg-ir.cc (operator<<(std::ostream&,
+       qualified_type_def::CV)): Define this new streaming operator.
+       * include/abg-comparison.h (class qualified_type): Declare new
+       class.
+       (compute_diff): Declare new overload for qualified_type_def_sptr.
+       * src/abg-comparison.cc (struct qualified_type_diff::priv): Define
+       new type.
+       (qualified_type_diff::{qualified_type_diff, first_qualified_type,
+       second_qualified_type, underlying_type_diff, length}):
+       Define new methods.
+       (get_leaf_type): Define new static function.
+       (compute_diff): Define overload for qualified_type_def_sptr.
+       (compute_diff_for_types): Add support for
+       diffing qualified_type_def here.
+
+2013-11-25  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup header of changes of underlying types of pointers/references
+       * src/abg-comparison.cc ({pointer_diff, reference_diff}::report):
+       Unify header of changes in the referenced type.
+       * src/abg-ir.cc (decl_base::get_pretty_representation): By
+       default, do not prefix types with "type ", for consistency sake.
+
+2013-11-25  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure diff types can only be created by compute_diff
+       * include/abg-comparison.h (diff::diff): Make constructor
+       protected.
+       (pointer_diff::pointer_diff): Likewise.
+       (pointer_diff::{first_pointer, second_pointer}): Constify the
+       return type.
+       (compute_diff): Make this a friend of class pointer_diff.
+       (reference_diff::reference_diff): Make this constructor protected.
+       (compute_diff): Make this a friend of class reference_diff.
+       (class_diff::class_diff): Make this constructor protected.
+       (compute_diff): Make this a friend of class class_diff.
+       (scope_diff::scope_diff): Make this constructor protected.
+       (compute_diff): Make this a friend of class scope_diff.
+       (function_decl_diff::function_decl_diff): Make this constructor
+       protected.
+       (type_decl_diff::type_decl_diff): Likewise.
+       (typedef_diff::typedef_diff): Likewise.
+       (translation_unit_diff::translation_unit_diff): Likewise.
+       (compute_diff): Make this a friend of class translation_unit_diff.
+       * src/abg-comparison.cc (pointer_diff::{first_pointer,
+       second_pointer}): Constify return type.
+
+2013-11-21  Dodji Seketeli <dodji@redhat.com>
+
+       Add size/alignment info to class diff report
+       * src/abg-comparison.cc (represent): Move these static overloads
+       to the beginning of the file.
+       (report_size_and_alignment_changes): New function.  It has been
+       factorized out of ...
+       (type_decl_diff::report): ... this.
+       (class_diff::report): Use the new
+       report_size_and_alignment_changes to report size/alignment info
+       for classes.
+
+2013-11-21  Dodji Seketeli <dodji@redhat.com>
+
+       Style fix
+       * src/abg-comparison.cc (class_diff::report): Rename first_class
+       into first and second_class into second.
+
+2013-11-21  Dodji Seketeli <dodji@redhat.com>
+
+       Misc diff reporting nits
+       * include/abg-ir.h (type_decl::get_pretty_representation): New
+       overload.
+       * abg-ir.cc (type_decl::get_pretty_representation): Implement it.
+       * src/abg-comparison.cc (represent, class_diff::report): Quote the
+       pretty representation of abi artifacts in the report.
+       (type_decl_diff::report): Better wording to express type_decl
+       change.
+
+2013-11-20  Dodji Seketeli <dodji@redhat.com>
+
+       Support reporting changed data member in class
+       * include/abg-ir.h (operator<<(std::ostream&, decl_base::binding))
+       (operator<<(std::ostream&, class_decl::access_specifier)): Declare
+       new streaming operators.
+       (class_decl::member_type::get_pretty_representation): New virtual
+       overload.
+       * src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
+       (operator<<(std::ostream&, class_decl::access_specifier)): Define
+       new streaming operators.
+       (class_decl::member_type::get_pretty_representation): Define new method.
+       * src/abg-comparison.cc (represent): Make the existing overloads
+       end by a newline. Add a new overload that represents the changes
+       that happened a given data member.
+       (enum diff_kind): New.
+       (report_mem_header): Renamed report_num_dels_or_ins into this.
+       Make it support introducing changed members as well as
+       deletions/insertions.
+       (class_diff::report): Adjust for the report_num_dels_or_ins ->
+       report_mem_header change.  Use the new represent() overload to
+       report about changed data members.  Adjust logic now that
+       represent() emits a newline at its end.  Also adjust logic as far
+       as representing base classes and member types changes is
+       concerned.
+       (type_decl_diff::report): Remove useless white space.
+
+2013-11-20  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure that *::report adds just one empty line to its content
+       * include/abg-comparison.h (diff::report): Add a comment saying
+       that each the diff::report interface must leave one empty line at
+       the end of the report.
+       * src/abg-comparison.cc ({pointer_diff, reference_diff,
+       class_diff, scope_diff, function_decl_diff, type_decl_diff,
+       typedef_diff}::report): Leave just one
+       empty line after content.
+
+2013-11-20  Dodji Seketeli <dodji@redhat.com>
+
+       Various doxygen doc additions and fixes
+       * include/abg-comparison.h: Lots of doc string additions & fixes,
+       especially for typedefs.
+       * include/abg-ir.h: Likewise.
+       * src/abg-comparison.cc: Likewise.
+       * src/abg-ir.cc: Likewise.
+
+2013-11-20  Dodji Seketeli <dodji@redhat.com>
+
+       Better support changed base classes and member types
+       * include/abg-comparison.h (class_diff::{clear_lookup_tables,
+       lookup_tables_empty, ensure_lookup_tables_populated}): Declare new
+       methods.
+       (compute_diff): Make this a friend of class_diff.
+       * src/abg-comparison.cc (class_diff::priv::{deleted_bases_,
+       inserted_bases_, changed_bases_, deleted_member_types_,
+       inserted_member_types_, changed_member_types_,
+       deleted_data_members_, inserted_data_members_,
+       changed_data_members_, deleted_member_class_tmpls_,
+       inserted_member_class_tmpls_, changed_member_class_tmpls_}):
+       Define new members.
+       (class_diff::priv::{base_has_changed, member_type_has_changed,
+       data_member_has_changed}): Declare and define new methods.
+       (class_diff::{clear_lookup_tables, lookup_tables_empty,
+       ensure_lookup_tables_populated}): Define new methods.
+       (class_diff::report): Detect and report when a base class or a
+       member type has changed, as opposed to just saying that it has
+       been removed and inserted.  Fix the rest of the function to avoid
+       emitting useless vertical space and avoid saying that the class
+       has "zero" insertion/deletion of a given kind of member.
+       (scope_diff::report): avoid saying that the scope has "zero"
+       insertion/deletion of a given kind of member.  Avoid useless
+       vertical spaces.
+       (type_decl_diff::report): Avoid useless vertical spaces.
+
+2013-11-19  Dodji Seketeli <dodji@redhat.com>
+
+       Add bilint tool to validate bi files somewhat.
+       * tools/bilint.cc: New file.
+       * tools/Makefile.am: Build and install the new file above.
+
+2013-11-19  Dodji Seketeli <dodji@redhat.com>
+
+       Add diff support for typedef_decl and type_decl
+       * include/abg-ir.h (operator<<(std::ostream&,
+       decl_base::visibility)): Declare new streaming operator.
+       * src/abg-ir.cc (operator<<(std::ostream&,
+       decl_base::visibility)): Define it.
+       (type_decl::{operator==, get_pretty_representation}): Likewise,
+       define these new overloads.
+       (decl_base::{operator==, get_pretty_representation}): New overloads.
+       * include/abg-comparison.h (type_decl_diff type_decl_diff_sptr,
+       typedef_diff, typedef_diff_sptr): Declare new classes and
+       typedefs.
+       * src/abg-comparison.cc (type_decl_diff::{type_decl_diff,
+       first_type_decl, second_type_decl, length, report}): New methods
+       definitions.
+       (compute_diff): New function definition that takes pointers of
+       type_decl.
+       (typedef_diff::{typedef_diff, first_typedef_decl,
+       second_typedef_decl, underlying_type_diff, length, report}): New
+       methods.
+       (compute_diff): New function definition that takes pointers of
+       typedef_decl.
+       (try_to_diff_types): New template function, factorized out of ...
+       (compute_diff_for_types): ... this.  Add support diffing type_decl
+       and typedef_decl.
+       (pointer_diff::report): Fix indentation of emitted report.
+       * tools/bidiff.cc (parse_command_line): Fix style.
+
+2013-11-19  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid missing member types while reading bi files
+       * include/abg-fwd.h (get_type_declaration): Declare function.
+       * include/abg-ir.h (class decl_base): Add class_decl as a friend.
+       This to be able to call decl_base::set_scope from class_decl.
+       (scope_decl::add_member_decl): Make this virtual protected, so
+       that it can be called (virtually) from e.g, class_decl.
+       (type_decl_sptr, typedef_decl_sptr): New convenience typedefs.
+       (class_decl::add_member_decl): New virtual overload for
+       scope_decl::add_member_decl.
+       (class_decl::{add_member_type, add_data_member,
+       add_member_function}): New overloads.
+       * src/abg-ir.cc (add_decl_to_scope): Benign style cleanup.
+       (get_type_declaration): Define new function.
+       (class_decl::add_member_decl): New method.
+       (class_decl::add_member_type): Avoid silently added a new member
+       type when that member type has already been (perhaps
+       inadvertently) added to a scope already.  Rather, put a strict
+       assert in place there.  Also add a new overload that constructs
+       the member type out of a classic type and adds it to the class.
+       (class_decl::{add_data_member, add_member_function}): Likewise.
+       (class_decl::{add_member_function_template,
+       add_member_class_template}): Avoid silently added a new member
+       template when that template has already been (perhaps
+       inadvertently) added to a scope already.  Rather, put a strict
+       assert in place there.
+       * src/abg-reader.cc (push_decl_to_current_scope): Take a an extra
+       flag saying if the current decl should be added to the current
+       scope as well (in addition to being pushed onto the stack of
+       scopes maintained in the reader context).
+       (push_and_key_type_decl): Likewise, take that extra flag and pass
+       it to push_decl_to_current_scope.
+       (build_function_decl, build_var_decl, build_type_decl)
+       (build_qualified_type_decl, build_pointer_type_def)
+       (build_reference_type_def, build_enum_type_decl, build_typedef_decl)
+       (build_function_tdecl, build_class_tdecl): Likewise.
+       (build_class_decl): Likewise.  When building member data, types,
+       and functions, make sure /not/ to add the data, type of function to
+       the current scope before adding it to the class_decl.  This was
+       making the member not being added to the class because it already
+       had a scope.
+       (build_type_tparameter, build_type_composition)
+       (build_non_type_tparameter, build_template_tparameter)
+       (build_type): Adjust to add the template parm to the current scope
+       explicitly, like previously.
+       (handle_type_decl): Use build_type_decl function. Add the
+       type_decl to the current scope, like previously.
+       (handle_namespace_decl, handle_qualified_type_decl)
+       (handle_pointer_type_def, handle_reference_type_def)
+       (handle_enum_type_decl, handle_typedef_decl, handle_var_decl)
+       (handle_function_decl, handle_class_decl, handle_function_tdecl)
+       (handle_class_tdecl): Adjust to add the decl to the current scope,
+       like previously.
+       * tests/data/test-read-write/test21.xml: New test input with
+       member type(def).
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid tabs and add const/virtual/offsets to class member diff reports
+       * include/abg-ir.h (class_decl::get_num_virtual_functions): New
+       declaration.
+       * src/abg-ir.cc (class_decl::get_num_virtual_functions): New
+       definition.
+       (function_decl::get_pretty_representation): Represent
+       destructors and const member functions.
+       * src/abg-writer.cc (write_cdtor_const_static): Take a new bool
+       parm for constness and serialize it.
+       (write_class_decl): Serialize member functions & function template
+       const-ness.
+       * src/abg-reader.cc (read_cdtor_const): Read the "const" xml
+       attribute, rather than "is_const".
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix num insertions reporting in member functions
+       * src/abg-comparison.cc (class_diff::report): Fix num insertions
+       reporting.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Serialize vtable offset for virtual functions
+       * include/abg-ir.h
+       (class_decl::member_function::get_vtable_offset): Renamed
+       class_decl::member_function::get_vtable_offset_in_bits into this.
+       The offset is an index into a table; it's not a value in bits.
+       * src/abg-hash.cc (class_decl::member_function::hash): Update wrt
+       function name change above.
+       * src/abg-ir.cc (class_decl::member_function::operator==):
+       Likewise.
+       * src/abg-reader.cc (build_class_decl): Rename the attribute
+       vtable-offset-in-bits into vtable-offset.
+       * src/abg-writer.cc (write_voffset): New function.
+       (write_class_decl): Use the new write_voffset.  Cleanup.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       White space and style fixes
+       * include/abg-ir.h (class_decl::member_function::member_function):
+       Align function parameters.
+       * src/abg-ir.cc (type_decl::operator==): Remove useless white spaces
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Do not report added/removed type_decls
+       * src/abg-comparison.cc (scope_diff::report): Do not report
+       added/removed type_decls.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix string representation for variables and methods
+       * src/abg-ir.cc (var_decl::get_pretty_representation): Don't use
+       the pretty representation for the type of the variable; just use
+       its qualified name.
+       (method_type::set_class_type): I wonder what I was thinking when
+       setting the first parameter's type to being the type of the
+       class.  Remove this.
+       (function_decl::get_pretty_representation): Use the "method "
+       prefix for methods.  Avoid printing the first parameter of
+       methods.  Use the qualified name of the parameter type, rather
+       than its pretty representation.
+       * src/abg-writer.cc (write_class_decl): Do not skip the first
+       function parameter when serializing the method.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Support reporting removed types/decls
+       * include/abg-comparison.h (scope_diff::{removed_types,
+       removed_decls, added_types, added_decls}): New accessor methods
+       declarations.
+       * src/abg-comparison.cc (scope_diff::{removed_types,
+       removed_decls, added_types, added_decls}): New accessor methods
+       definitions.
+       (scope_diff::report): Report removed & added types/decls.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix erratic reporting of changed types & decls in scopes
+       * src/abg-comparison.cc
+       (scope_diff::ensure_lookup_tables_populated): A changed type/decl
+       is not only one that has been both deleted and inserted (as is a
+       type/decl with a given name N has been deleted and a type/decl
+       with that same name N has been inserted), but we must also ensure
+       that both inserted and deleted type/decl are not the same.
+       Otherwise, it might has been a type/decl that has been shuffled
+       around.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some class & scope diff reports formatting glitchs
+       * src/abg-comparison.cc (class_diff::report): Quote data members.
+       (scope_diff::report): Simplify how we report changed types. Avoid
+       unnecessary vertical spaces.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Pretty representation for variables and types by default
+       * include/abg-ir.h (var_decl::get_pretty_representation): New
+       method declaration.
+       * src/abg-ir.cc (decl_base::get_pretty_representation): Prefix
+       types with the "type " string.
+       (var_decl::get_pretty_representation): New method definition.
+
+2013-10-24  Dodji Seketeli <dodji@redhat.com>
+
+       Re-write middle snakes management in core diff algorithms
+       * include/abg-diff-utils.h (point::set): New overload..
+       (point::{add, operator<, operator>, operator<=, operator>=}): New
+       methods.
+       (point::operator!=): Constify.
+       (point::operator==): Constify. Cleanup.
+       (point::operator=): Keep emptiness.
+       (class snake): New class definition
+       (d_path_vec::{over_bounds, offset}): New methods.
+       (d_path_vec::check_index_against_bound): Don't take a bound
+       parameter anymore.  Use the new over_bound method above.  Fix up
+       error reporting.
+       (d_path_vec::d_path_vec): Fix d_path_vec size allocation.
+       (d_path_vec::operator[]): Use the d_path_vec::at method to check
+       all accesses against the bounds.  This is slower, but at least we
+       can expect to have something that is more robust.  We can remove
+       the bound checking later when we are sure the code has been tested
+       enough.  Also use the new offset() method.
+       (d_path_vec::at): Take long long.
+       (ends_of_furthest_d_paths_overlap): Constify input parameters.
+       (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Take
+       an instance of the new snake in parameter, rather than a bare end
+       point that wasn't carrying enough information about the snake.
+       Record the snake which consists of up to four points: a begin
+       point, an intermediate point, a diagonal start point and an end
+       point.  Return that snake upon successful completion.
+       (compute_middle_snake): Take an instance of snake, rather than the
+       two points that were supposed to represent a snake and with which
+       we were loosing information before.  Revisit/simplify the logic of
+       this function; this literally goes forward or in reverse, gets the
+       resulting snake returned by the end_of_fr_d_path_in_k and
+       end_of_frr_d_path_in_k_plus_delta functions, detect if these snakes
+       overlap and just return the current snake.  Much simpler.  The
+       caller now gets a snake, which has much more information than the
+       previous snake approximation made of just two points.  Bonus
+       point, this follows almost to the word, what the paper says.
+       (maybe_record_match_point, find_snake_start_point): Remove these
+       as there are not used by compute_middle_snake anymore.
+       (print_snake, ses_len): Update these to take/handle a snake.
+       (snake_end_points): New declaration.
+       (compute_diff): When we are getting an empty first sequence, this
+       means that we are inserting the second sequence *before* the
+       beginning of the first sequence; keep this information by setting
+       the insertion point index to -1, rather than zero.  Update this to
+       get/handle snakes, rather than free points vaguely representing
+       snakes.  Now that compute_middle_snake returns real snakes, handle
+       the information we are getting.  Basically for edit scripts of
+       length equal to 1, as the snake carries all the necessary
+       information about the non-diagonal edge (as well as the diagonal
+       edges), we (can) now precisely update the current edit script (as
+       well as the longest common sub-sequence).  For edit scripts of
+       length greater than 1, better at which points to divide the
+       problem and consequently, at which points to conquer it back --
+       better following The Paper to the letter.
+       (display_edit_script): Update this for the use of instances of
+       snake.
+       * src/abg-diff-utils.cc (ends_of_furthest_d_paths_overlap): Update
+       for constification of inputs.
+       (snake_end_points): Define new function.
+       (compute_middle_snake): Adapt for the taking an instance of snake.
+       * tests/test-diff2.cc (main): Update for using instances of snake.
+       * tests/test-core-diff.cc: Add new tests.
+       * tests/data/test-core-diff/report0.txt: Update for output
+       adaptation.
+       * tests/data/test-core-diff/report6.txt: Likewise.
+       * tests/data/test-core-diff/report7.txt: Likewise.
+       * tests/data/test-core-diff/report8.txt: New test data.
+       * tests/data/test-core-diff/report9.txt: Likewise.
+       * tests/data/test-core-diff/report10.txt: Likewise.
+       * tests/data/test-core-diff/report11.txt: Likewise.
+       * tests/data/test-core-diff/report12.txt: Likewise.
+       * tests/data/test-core-diff/report3.txt: Likewise.
+
+2013-10-19  Dodji Seketeli <dodji@redhat.com>
+
+       Support diff/reporting for functions & better diff/report in general
+       * include/abg-ir.h ({decl_base, class_decl,
+       function_decl}::get_pretty_representation): New virtual member to
+       get a pretty string name for decls & types.
+       (class_decl::parameter): Add an index to the parameter type.
+       (class_decl::parameter::parameter): Update the constructor for the
+       change above.
+       (class_decl::parameter::{get_index, set_index}): Accessors for the
+       new index.
+       (class_decl::parameter::operator==): Take in account the index.
+       (function_type::append_parameter): Set the index of the parameter
+       here.
+       * include/abg-fwd.h (get_type_name): New declaration.
+       * src/abg-ir.cc (get_type_name): New definition.
+       ({decl_base, function_decl,
+       class_decl}::get_pretty_representation): New implementations.
+       (method_type::set_class_type): Update this to set function
+       parameter's index by default.
+       (function_decl::append_parameters): Use the append_parameter
+       method from function_type.
+       * include/abg-comparison.h (class function_decl_diff): New type
+       declaration.
+       * src/abg-comparison.cc (compute_diff_for_decls, compute_diff):
+       New definitions.
+       ({pointer_diff, class_diff, scope_diff}::report): Use the new
+       get_pretty_representation.  Output a prettier report.
+       (function_decl_diff::priv): New type.
+       (function_decl_diff::{deleted_parameter_at, inserted_parameter_at,
+       ensure_lookup_tables_populated, function_decl_diff,
+       first_function_decl, second_function_decl, changed_parms,
+       removed_parms, added_parms, length, report}): New member function
+       definitions.
+       * src/abg-hash.cc (function_decl::parameter::hash): Update this to
+       take the index in account.
+
+2013-10-19  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style & white space fixes
+       * include/abg-fwd.h (is_global_scope, is_at_global_scope)
+       (is_at_class_scope, is_at_template_scope, is_template_parameter)
+       (is_type, is_var_decl, is_template_parm_composition_type)
+       (is_template_decl, is_function_template_pattern)
+       (add_decl_to_scope, get_global_scope, get_translation_unit):
+       Remove parameter names from declarations.
+       * include/abg-ir.h (decl_base::set_location): Remove useless white
+       space.
+       (struct type_shared_ptr_equal): Fix comment filling.
+
+2013-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid useless hashing during serialization
+       * src/abg-writer.cc (write_context::get_id_for_type): Avoid the
+       useless hashing incurred by the [] operator on the map, when we
+       already have the value we want.
+
+2013-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Add more IR nodes dumping routines
+       * include/abg-fwd.h (dump): Declare 4 overloads for the dumping
+       routines.
+       * include/abg-ir.h (var_decl_sptr): New typedef.
+       * src/abg-writer.cc (dump(const decl_base_sptr)): Add comments.
+       (dump(const type_base_sptr)): New dumping routines.
+       (dump(const var_decl_sptr)): Likewise.
+
+2013-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Fix IR node comparison bugs
+       * include/abg-ir.h (type_shared_ptr_equal::operator()): Fix thinko
+       in checking for the boolean value of the pointers to types.
+       * src/abg-ir.cc (type_decl::operator==(const decl_base&)): Do not
+       forget to compare the decl_base part of the type too.
+       (type_decl::operator==(const type_base&)): To ease maintenance,
+       re-use the equality operator that takes a decl_base.
+       (scope_type_decl::operator==(const type_base&)): Likewise.
+       (qualified_type_def::operator==(const type_base&)): Likewise.
+       (compare_function_types): New sub-routine to compare function
+       types.  It fixes an infinite recursion when comparing two methods
+       of the same class.
+       (function_type::operator==(const type_base&)): Use the new
+       compare_function_types function.
+       (class_decl::operator==(const decl_base&)): Fix a thinko in the
+       first test of the function.  Use a dedicated scope for each class
+       section comparison; that way, there won't be any chance to misuse
+       the variables pertaining to a different section.  Fix the member
+       function sections; we were mistakenly using the variables for the
+       *data* section there.
+       (class_decl::operator==(const type_base&)): Re-use the operator
+       that takes a decl_base.
+       (class_decl::operator==(const class_decl&)): Don't remove
+       const-ness during the static cast.
+       (class_decl::member_function::operator==(const member_function&)):
+       Do not remove the reference from the static cast.
+       (class_decl::member_class_template::operator==(const
+       member_base&)): Likewise.
+       (type_tparameter::operator==(const template_parameter&)):
+       Likewise.
+       (template_tparameter::operator==(const template_parameter&)):
+       Likewise.
+       (function_tdecl::operator==(const template_decl&)): Likewise.
+       (class_tdecl::operator==(const template_decl&)): Likewise.
+       (class_tdecl::operator==(const class_tdecl&)): Likewise.
+       * tests/data/test-read-write/test12.xml: Update this because the
+       test now correctly considers two type template parameters at the
+       same index as being equivalent.
+       * tests/data/test-read-write/test13.xml: Likewise.
+
+2013-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       On going white space cleanups
+       * include/abg-ir.h: Remove useless white spaces.
+       * src/abg-ir.cc: Likewise.
+       * src/abg-reader.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2013-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       Finish reporting about class_diff
+       * src/abg-comparison.cc (report_num_dels_or_ins): Factorize out
+       the header of each of inserted/deleted parts of the class into
+       this new function.
+       (class_diff::report): Use the new report_num_dels_or_ins.  Cleanup
+       the code.  Add support for reporting about member functions,
+       member function templates and member class templates.
+
+2013-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       White space cleanup in abg-ir.h
+       * include/abg-ir.h
+       (class_decl::member_function_template::member_function_template):
+       Remove useless white space.
+
+2013-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       Progress on diffing pointers, references and classes
+       * include/abg-comparison.h (diff::{first_subject,second_subject): Changed
+       first_scope/second_scope into these; so that this diff class now works on
+       stuff that are not scope.  Changed the type of these to
+       decl_base_sptr
+       (diff::diff): Update for the change above.
+       (diff::{length, report}): New virtual pure methods.
+       (class pointer_diff, reference_diff): New classes declarations.
+       (compute_diff): New overloads for the new classes above.  Make the
+       existing overloads take shared_pointers instead of references.
+       Also make them return shared pointers of the computed diff, rather
+       than just populating diff references passed in parameter.
+       (class class_diff): Renamed class class_decl_diff into this.
+       (report_changes): Change these functions into member functions.
+       * src/abg-comparison.cc (compute_diff_for_types): New static
+       function.
+       (pointer_diff::pointer_diff, pointer_diff::first_pointer)
+       (pointer_diff::second_pointer, pointer_diff::length)
+       (pointer_diff::underlying_type_diff)
+       (pointer_diff::underlying_type_diff, pointer_diff::report)
+       (pointer_diff::report, compute_diff)
+       (reference_diff::reference_diff, reference_diff::first_reference)
+       (reference_diff::second_reference)
+       (reference_diff::underlying_type_diff)
+       (reference_diff::underlying_type_diff, reference_diff::length)
+       (reference_diff::report, compute_diff): New functions.
+       (class_diff::class_diff, class_diff::length)
+       (class_diff::first_class_decl, class_diff::second_class_decl)
+       (class_diff::base_changes, class_diff::base_changes)
+       (class_diff::member_types_changes)
+       (class_diff::member_types_changes)
+       (class_diff::data_members_changes)
+       (class_diff::data_members_changes, class_diff::member_fns_changes)
+       (class_diff::member_fns_changes)
+       (class_diff::member_fn_tmpls_changes)
+       (class_diff::member_class_tmpls_changes)
+       Update wrt class_decl_diff -> class_diff renaming.
+       (class_diff::report): Make the report function be a member
+       function.  Add an indentation parameter. Add support for member
+       types and data members.
+       (compute_diff): New overload for class_decl_sptr.
+       (scope_diff::first_scope, scope_diff::second_scope)
+       (scope_diff::length, scope_diff::report): New member functions.
+       (scope_diff::{deleted_member_at, inserted_member_at}): Update wrt
+       first_scope -> first_subject change.
+       (compute_diff): New overload for scope_decl_sptr.
+       (translation_unit_diff::report): Change the report function into
+       this member function.
+       (compute_diff): Change the overload for translation_unit to take a
+       translation_unit_sptr rather than a reference.
+       * tools/bidiff.cc (main): Update this wrt the change of the
+       signature of compute_diff.
+
+2013-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       Fix construction of class_decl::member_type
+       * include/abg-ir.h (class_decl::member_type::member_type): Remove
+       inline body from here.
+       * src/abg-ir.cc (class_decl::member_type::member_type): Move
+       implementation here.  Also, properly set the name of the the
+       member_type at construction time.
+
+2013-10-15  Dodji Seketeli <dodji@redhat.com>
+
+       Few typedef additions to abg-ir.h
+       * include/abg-ir.h (pointer_type_def_sptr)
+       (reference_type_def_sptr): New typedefs.
+
+2013-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Add debugging routines for decl_base_sptr and translation_unit
+       * src/abg-writer.cc (dump): Add two version of this; on for
+       decl_base_sptr, one for translation_unit&.
+
+2013-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Initial implementation of tu diffing & bidiff cmd line program
+       * include/abg-comparison.h (class translation_unit_diff): New type.
+       (compute_diff): Make this take class_decl&, rather than
+       class_decl_sptr.  Add new overloads for scope_decl& and
+       translation_unit&.
+       (report_changes): New overload for scope_diff& and
+       translation_unit&.
+       * src/abg-comparison.cc (struct class_decl_diff::priv): New type.
+       (class class_decl_diff): Add comments to methods.
+       (class translation_unit_diff): Implement methods.
+       (compute_diff, report_changes): Implement the new overloads.
+       (scope_diff::ensure_lookup_tables_populated): Fix a thinko here.
+       * src/abg-ir.cc (is_var_decl): Add new predicate.
+       * tools/abg-tools-utils.h (file_exists, is_regular_file)
+       (check_file): Declare new functions.
+       * tools/abg-tools-utils.cc (get_stat, file_exists, check_file)
+       (is_regular_file): Define new functions.
+       (is_dir): Use the new get_stat.
+       * tools/bidiff.cc: New file.
+       * tools/Makefile.am: Add tools/bidiff.cc to the build system; make it
+       produce the bidiff tool.
+
+2013-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Fix inheritance of operator== on decl_base and type_base
+       * include/abg-ir.h (*lots of descendants of decl_base, type_decl)
+       (template_decl, class_decl::member_base): Replace the previous classical
+       *::operator==(*&) with an overload of decl_base::operator==(const
+       decl_base&), type_base::operator==(const type_base),
+       template_decl::operator==(const template_decl&) or
+       class_decl::member_base::operator==(const
+       class_decl::member_base&).  This makes the descendant operator be
+       the one called when a comparison involves references the parent
+       class.
+       * src/abg-ir.cc: Write the implementation of the above.  Remove
+       the useless static_casts from the previous operator== code.
+
+2013-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       On going misc white spaces and style fixes
+       * include/abg-ir.h: Add author.  Remove many useless white
+       spaces.  Add missing end-of-class comments.  Move function
+       declaration comments from here to their definition point.
+       * include/abg-fwd.h: Remove useless indentation.  Also move
+       doxygen comments to *definition* points in src/abg-ir.cc.
+       * src/abg-ir.cc: Remove many useless white spaces.  Move comments
+       from declaration points to here.
+
+2013-10-06  Dodji Seketeli <dodji@redhat.com>
+
+       Fix middle snake determination & ses len computation for d == 1
+       * include/abg-diff-utils.h (compute_middle_snake): After the
+       overlap determination happened, finding the middle snake can
+       require keep on building the current path until the "end".  The
+       end meaning reaching the max of D.  And that max is (M + N)/2 + 1.
+       In the extreme cases were middle snake was on the very last step
+       (M + N) + 1, we were not finding the middle snake.  Fix this.
+       (compute_diff): When d == 1 and the first edge on the edit graph
+       is a non-diagonal edge and when a_base != a_begin, we were failing
+       to properly initialize x,y to find that non-diagonal edge.  Also
+       we were failing to correctly compute the size of the sequence.
+       Fix these.
+       * tests/test-core-diff.cc: Add a new regression test for the two
+       cases above.
+       * tests/data/test-core-diff/report7.txt: New reference data for
+       the new regression test.
+
+2013-10-05  Dodji Seketeli <dodji@redhat.com>
+
+       Initial un-debugged implementation of scope diffing
+       * include/abg-comparison.h (class scope_diff): New type.
+       (compute_diff(scope_decl_sptr, scope_decl_sptr, scope_diff)): New
+       declaration.
+       (report_changes): New declaration.
+       * src/abg-comparison.cc (struct scope_diff::priv): Define.
+       (scope_diff::{clear_lookup_tables, lookup_tables_empty,
+       ensure_lookup_tables_populated, scope_diff, member_changes,
+       deleted_member_at, inserted_member_at, changed_types,
+       changed_decls}): Define these new member functions.
+       (compute_diff): Define.
+       * include/abg-ir.h (decl_base_sptr): New typedef.
+       (operator==(decl_base_sptr, decl_base_sptr)): Declare new
+       operator.
+       * src/abg-ir.cc (operator==(decl_base_sptr, decl_base_sptr)):
+       Define.
+       (scope_decl::{operator==, traverse}): Adjust for using vectors to
+       store scope members now, rather than lists.
+       (scope_decl::{declarations, scopes}): Make these types be vector.
+       This makes the members of a scopes be vector, rather than lists.
+       This enables them to be diffed.
+
+2013-10-05  Dodji Seketeli <dodji@redhat.com>
+
+       Simplify & cleanup compute_diff core api
+       * include/abg-diff-utils.h (insertion::inserted_): Changed the
+       type of this from vector<int> to vector<unsigned>.
+       (insertion::{insertion, inserted_indexes}): Adjust.
+       (compute_diff): Add two new simpler overloads.  Implement them in
+       term of the former more complex overload.
+       (compute_lcs): Adjust for the vector<int> -> vector<unsigned>
+       change.
+       * src/abg-diff-utils.cc (compute_lcs, compute_ses): Adjust for the
+       compute_diff change above.
+       * src/abg-comparison.cc (compute_diff, report_changes): Adjust for
+       the compute_diff & vector<unsigned> changes above..
+
+2013-10-05  Dodji Seketeli <dodji@redhat.com>
+
+       Misc white space, style and comments cleanup
+       * include/abg-ir.h (class scope_decl): Add end of class comment.
+       (class type_base): Add a _sptr typedef and end of class comment.
+       * src/abg-ir.cc (operator==(class_decl_sptr, class_decl_sptr)):
+       Fix comment.
+
+2013-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Un-debugged initial implementation of class diffing.
+       * include/abg-ir.h (decl_base::get_qualified_name): New
+       declaration.
+       (class_decl::{base_specs, member_types, data_members,
+       member_functions, member_function_templates,
+       member_class_templates}): Make all these containers be vectors,
+       rather than list.  This makes these containers (like
+       class_decl::base_specs, class_decl::member_types, etc) be suitable
+       to be used by the core diffing algorithms to diff their content.
+       (operator==(class_decl_sptr, class_decl_sptr))
+       (operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
+       (operator==(class_decl::base_spec_sptr,
+       class_decl::base_spec_sptr))
+       (operator==(class_decl::data_member_sptr,
+       class_decl::data_member_sptr))
+       (operator==(class_decl::member_function_sptr,
+       class_decl::member_function_sptr))
+       (operator==(class_decl::member_function_template_sptr,
+       class_decl::member_function_template_sptr))
+       (operator==(class_decl::member_class_template_sptr,
+       class_decl::member_class_template_sptr)): Declare
+       these new equality operators.  These are to be used by the core
+       diffing algorithms when comparing two vectors of shared pointers
+       of members of class_decls.
+       * src/abg-ir.cc (decl_base::get_qualified_name): Define.
+       (class_decl::class_decl, class_decl::operator==(class_decl&)): Adjust for the
+       containers type change to a vector.
+       (operator==(class_decl_sptr, class_decl_sptr))
+       (operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
+       (operator==(class_decl::base_spec_sptr,
+       class_decl::base_spec_sptr))
+       (operator==(class_decl::data_member_sptr,
+       class_decl::data_member_sptr))
+       (operator==(class_decl::member_function_sptr,
+       class_decl::member_function_sptr))
+       (operator==(class_decl::member_function_template_sptr,
+       class_decl::member_function_template_sptr))
+       (operator==(class_decl::member_class_template_sptr,
+       class_decl::member_class_template_sptr)): Define
+       these.
+       * include/abg-comparison.h (diff::scope_): Remove
+       (diff::{first_scope_, second_scope_}): New members.
+       (class_decl_diff::class_decl_diff): Pass the new scopes to this
+       constructor.
+       (class_decl_diff::{first_class_decl, second_class_decl})
+       (report_changes): New declarations.
+       * src/abg-comparison.cc (class_decl_diff::class_decl_diff): Update
+       as per the declaration.
+       (class_decl_diff::{first_class_decl, second_class_decl}): Define
+       as per the declaration.
+       (compute_diff): Initial implementation for this.
+       (report_changes): Define.
+
+2013-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Change the diff::changes_type back to just edit_script
+       * include/abg-comparison.h (diff::changes_type):
+       Remove this typedef.
+       (class_decl_diff::data_members_changes): Rename
+       class_decl_diff::data_member_changes into this.
+       (class_decl_diff::member_fn_tmpls_changes): Renamed
+       class_decl_diff::member_fn_tmpl_changes into this.
+       (class_decl_diff::member_class_tmpls_changes): Renamed
+       class_decl_diff::member_class_tmpl_changes into this.
+       (class_decl_diff::{base_changes, member_types_changes,
+       data_members_changes, member_fns_changes, member_fn_tmpls_changes,
+       member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
+       these declarations for the use of edit_script.
+       * src/abg-comparison.cc (class_decl_diff::priv::*): Likewise.
+       (class_decl_diff::{base_changes, member_types_changes,
+       data_members_changes, member_fns_changes, member_fn_tmpls_changes,
+       member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
+       these definitions for the above.
+
+2013-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Misc white space, style and comment fixes
+       * include/abg-ir.h: Lots of useless white space removals and
+       comments adding.
+       (class class_decl::member_base): Fix comment.
+       * src/abg-hash.cc: Lots of useless white space removals too.
+       * src/abg-ir.cc: Remove useless white space too.
+
+2013-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Fix middle snake determination
+       * include/abg-diff-utils.h (point::{operator!=,operator==}): New
+       operators.
+       (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Allow
+       the initial point (-1,-1) that is not a point addressing elements
+       of the input sequences, but that is the starting point of the
+       forward paths and the ending point of reverse paths in the "Linear
+       Refinement" of the algorithm.
+       (is_match_point, maybe_record_match_point)
+       (find_snake_start_point): New functions.
+       (find_last_snake_in_path): Remove this.  It's not used anymore.
+       (compute_middle_snake): Allow checking for overlapping paths even
+       on points that are outside of the edit graph boundaries.  Once the
+       overlap is detected, if a non-empty snake has been seen already,
+       report it as the middle snake.  Otherwise, keep building the path
+       until the end and report the last snake encountered as the middle
+       snake.  Add comments.
+       (compute_diff): For the d == 1 case, fix the logic of the finding
+       the non-diagonal edge.  Fix typos.  Add comments.
+       (display_edit_script): Fix report glitches.
+       * tests/data/test-core-diff/report3.txt: Update as per the report
+       glitch above.
+       * tests/data/test-core-diff/report4.txt: Likewise.
+       * tests/data/test-core-diff/report5.txt: Likewise.
+       * tests/data/test-core-diff/report6.txt: New reference report for
+       a new test.
+       * tests/test-core-diff.cc: Add a new test for negative delta.
+
+2013-10-03  Dodji Seketeli <dodji@redhat.com>
+
+       Initial regression test facility for core diff algorithms
+       * tests/data/test-core-diff/report0.txt: New test reference data.
+       * tests/data/test-core-diff/report1.txt: Likewise.
+       * tests/data/test-core-diff/report2.txt: Likewise.
+       * tests/data/test-core-diff/report3.txt: Likewise.
+       * tests/data/test-core-diff/report4.txt: Likewise.
+       * tests/data/test-core-diff/report5.txt: Likewise.
+       * tests/test-core-diff.cc: New regression test program.
+       * tests/Makefile.am: Add these new files to the build system.
+
+2013-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Initial command line testing facility for core diff algorithms
+       * tests/test-diff2.cc: New command line testing facility.
+       * tests/Makefile.am: Add this to the build system.
+
+2013-10-02  Dodji Seketeli <dodji@redhat.com>
+
+       Fix core diff algorithms for negative deltas
+       * diff2.h (point::point): New copy constructor.
+       (point::{operator+=, operator=}):  Use point::set.
+       (point::{operator--, operator++,}): New operators.
+       (d_path_vec::{a_size_, b_size_}): New members.
+       (d_path_vec::max_d_): Remove this member.
+       (d_path_vec::max_d): Compute this, now that max_d_ was removed.
+       (point_is_valid_in_graph): Declare this new function.
+       (end_of_fr_d_path_in_k, ): Return
+       a bool when the end of furthest reaching past found is within the
+       bounds of the edit graph.  Add comments.
+       (end_of_frr_d_path_in_k_plus_delta): Likewise.  Also, delta can be
+       negative; support that.  Do not cross the boundaries of the edit
+       graph when following a diagonal edge.
+       (find_last_snake_in_path): New function.
+       (compute_middle_snake): Make forward/reverse d_path_vec be big
+       enough to hold paths for M+N differences.  Normally M+N/2 should
+       be enough, but we were getting weird out of bound errors.  Let's
+       handle it this way for now.  Do not require that we check for
+       overlap only when we are on a diagonal edge.  Once we detected an
+       overlap, use the new find_last_snake_in_path to find the
+       boundaries of the snake.
+       (ses_len): Delta can be negative.
+       (display_edit): Small minor English nit.
+
+2013-09-28  Dodji Seketeli <dodji@redhat.com>
+
+       Lay down the foundations of computing the diff between two class_decl
+       * include/abg-diff-utils.h: New file.
+       * src/abg-diff-utils.cc: Likewise.  Implement the code diffing
+       algorithms from Eugene Myers.
+       * include/abg-comparison.h: New file. First short at defining the
+       basic APIs to compute the diff of two classes.
+       * src/abg-comparison.cc: New file.  Start the implementation of
+       the above header.
+
+2013-09-26  Dodji Seketeli <dodji@redhat.com>
+
+       Prepare node visitors to be usable on things other than IR nodes
+       * include/abg-fwd.h (node_visitor_base): Renamed ir_node_visitor
+       into this.
+       * include/abg-traverse.h (struct node_visitor_base): New base for
+       the visitors.
+       (struct traversable_base): Update comments.
+       (traversable_base::traverse): Change this into non-pure virtual.
+       Make it take a reference to node_visitor_base, rather than a
+       reference to ir_node_visitor.
+       * src/abg-traverse.cc (traversable_base::traverse): New empty
+       default implementation.
+       * include/abg-ir.h: Make ir_node_visitor inherit from new
+       node_visitor_base.
+
+2013-09-26  Dodji Seketeli <dodji@redhat.com>
+
+       Renamed data members from m_something to something_
+       * src/abg-ir.{cc,h}: Renamed data members from m_something to
+       something_ and update their usage.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Initial version of an archive manipulation program: biar
+       * tests/test-utils.h (is_dir, ensure_dir_path_created)
+       (ensure_parent_dir_created): Move these directories manipulation
+       utilities from here to ...
+       * tools/abg-tools-utils.h (is_dir, ensure_dir_path_created)
+       (ensure_parent_dir_created): ... here in this new file.
+       (dir_name, base_name): Declare these new functions.
+       * tests/test-utils.cc (is_dir, ensure_dir_path_created)
+       (ensure_parent_dir_created): Likewise, move these to ...
+       * tools/abg-tools-utils.cc (is_dir, ensure_dir_path_created)
+       (ensure_parent_dir_created): ... here in this new file.
+       (dir_name, base_name): Define these.
+       * tools/Makefile.am: New file.  Create a new libtoolsutils.la
+       static library with stuff from tools/abg-tools-utils.cc in it.
+       Also create a new 'biar' program with the stuff from the new
+       tools/biar.cc in it.
+       * tools/biar.cc: New file.  Contains the code for the new "biar"
+       archive manipulation command line utility.
+       * tests/test-read-write.cc (main): Adjust for the change about
+       ensure_parent_dir_created above.
+       * tests/test-write-read-archive.cc (main): Likewise.
+       * Makefile.am (SUBDIRS): Add the new tools/ sub-directory to the
+       build system.
+       * configure.ac (AC_CONFIG_FILES): Generate tools/Makefile.
+       * tests/Makefile.am: Make libtestutils.la link with the new
+       libtoolsutils.la.  Make sure to express the dependencies between
+       libtestutils.la and the binaries that depend on it.  Otherwise
+       parallel builds can go awry.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Define translation_unit{_sptr,s} types in abigail::
+       * include/abg-corpus.h (abigail::corpus::{translation_unit_sptr,
+       translation_units):  Do not define these typedefs here.  Rather)
+       (define them ...
+       * include/abg-ir.h
+       (abigail::{translation_units,translation_unit_sptr): ... here.
+       This is because a translation unit can be manipulated
+       independently from an abi corpus.
+       * src/abg-corpus.cc (corpus::get_translation_units): Adjust return
+       type to comply with the change above.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Fix header inclusion in abg-corpus.h
+       * include/abg-corpus.h: Drop incomplete abg-traverse.h and
+       abg-fwd.h.  Use abg-ir.h proper and be done with it.  Users of the
+       library will just have to use abg-corpus.h to manipulate and the
+       archives and the IR they contain.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Add error message to translation_unit::write
+       * src/abg-writer.cc (translation_unit::write): Add an error
+       message to stderr if something ultimately went wrong.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Rename abigail::corpus::{get_file_path --> get_path}
+       * include/abg-corpus.h (corpus::{get_path, set_path): Renamed
+       corpus::get_file_path and corpus::set_file_path into these as
+       get_path/set_path is what is used elsewhere as well.
+       * src/abg-corpus.cc (corpus::{get_path, set_path}): Likewise.
+       * tests/test-write-read-archive.cc (main): Adjust for the change
+       above.
+
+2013-08-29  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup src/Makefile.am
+       * src/Makefile.am: Fix library naming and remove useless trailing
+       space from directory path.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Initial writing/reading of an ABI corpus to an archive
+       * configure.ac: Support detection of libzip dependency. Define
+       new DEPS_CFLAGS and DEPS_LIBS variables for use in
+       Makefile.am to refer to the dependency headers and
+       libraries.
+       * doc/website/mainpage.txt: Update this to talk about the new
+       libzip dependency.
+       * include/Makefile.am: Add abg-libzip-utils.h to the build system.
+       * include/abg-corpus.h (corps): Hide abigail::corpus's private behind a
+       pimpl idiom.
+       (corpus::{drop_translation_units, get_file_path, set_file_path,
+       write, read}): New methods.
+       * include/abg-libxml-utils.h (new_reader_from_buffer): Declare new
+       function.
+       * include/abg-libzip-utils.h: New file.
+       * src/Makefile.am: Add abg-corpus.cc and abg-libzip-utils.cc to
+       the build system.  Refer to the library and headers dependencies
+       via the new DEPS_LIBS and DEPS_CFLAGS variables.
+       * src/abg-corpus.cc: New file.
+       * src/abg-ir.cc (translation::set_path): New method.
+       * src/abg-libxml-utils.cc (new_reader_from_buffer): Define new
+       function.
+       * src/abg-libzip-utils.cc: New file.
+       * src/abg-reader.cc (translation_unit::read): New overload.
+       * src/abg-writer.cc: Inject the names from the std namespace into
+       the abigail namespace, rather than into abigail::writer.
+       (abigail::translation_unit::write): New overload.  This can now
+       use ofstream and the other stuff from std that are injected in the
+       abigail:: namespace.
+       * tests/Makefile.am: Add tests/test-write-read-archive.cc to the
+       build system; use that to build runtestwritereadarchive.  Also add
+       the input test data from
+       tests/data/test-write-read-archive/test[0-4].xml.
+       * /tests/data/test-write-read-archive/test[0-4].xml: New test
+       input data files.
+       * tests/test-write-read-archive.cc: New test for this archive
+       write/read support.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Fix & add missing API documentation
+       * src/abg-ir.cc (location_manager::create_new_location): Fix
+       documentation comment.  (translation_unit::translation_unit)
+       (translation_uni::get_global_scope, translation_unit::get_path)
+       (translation_unit::traverse, translation_unit::get_loc_mgr)
+       (translation_unit::is_empty, translation_unit::traverse): Add
+       missing documentation comments.
+       * src/abg-libxml-utils.cc (new_reader_from_file): Fix comment.
+       * src/abg-reader.cc (translation_unit::read): Likewise.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless header inclusion
+       * include/abg-traverse.h: Remove useless #include <tr1/memory>
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Misc white space cleanups
+       * include/abg-corpus.h: Cleanup white spaces.
+       * include/abg-fwd.h: Likewise.
+       * include/abg-ir.h: Likewise.
+       * include/abg-libxml-utils.h: Likewise.
+       * src/abg-config.cc: Likewise.
+       * src/abg-ir.cc: Likewise.
+       * src/abg-reader.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Small cleanup in abg-config.cc
+       * src/abg-config.cc: Include auto-generated
+       $(top_builddir)/config.h file.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Pass absolute paths to the compiler during the build
+       * src/Makefile.am: Pass absolute file paths to the compiler during
+       the build.  This helps in e.g in emacs' compilation mode, when the
+       output shows an error reported by GCC's diagnostics, setting point
+       to the error line and hitting 'enter' transports the user to the
+       file location where the error happened; as the file path is nows
+       absolute, emacs can always find it.  Otherwise, finding it depends
+       on $PWD and whatnot.
+       * tests/Makefile.am: Likewise.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Misc cleanups in abg-fwd.h
+       * include/abg-fwd.h: Move location, location_manager and
+       translation_unit in the ir section.  Remove stuff that was
+       commented out anyway.
+
+2013-08-27  Dodji Seketeli <dodji@redhat.com>
+
+       Move location, location_manager & translation_unit back into abg-ir.h
+       * include/abg-corpus.h: Move location location_manager,
+       translation_unit from here ...
+       * include/abg-ir.h: ... to here.  The reason being that these are
+       really constructs of the Internal Representation of the ABI/API of
+       a translation unit.  What is left in abg-corpus is really
+       exclusively related to an ABI Corpus, which I see more as a
+       "packaging" construct that abstracts the bundling of several
+       translation units together.  Also, I fixed some comments about the
+       location/location_manger types; now a location is made specific to
+       a translation unit; to an abi corpus.  A location of a given
+       translation unit has to be decoded by the location manager of that
+       same translation unit.
+
+2013-08-22  Dodji Seketeli <dodji@redhat.com>
+
+       Make libxml2 a private dependency wrt pkconfig
+       * libabigail.pc.in: Libxml2 is not exposed to clients so make it
+       be a private dependency.
+
+2013-08-22  Dodji Seketeli <dodji@redhat.com>
+
+       White space fix in COMPILING
+       * COMPILING: White space fix.
+
+2013-08-22  Dodji Seketeli <dodji@redhat.com>
+
+       Add abg-version.h.in to the source distribution & cleanup
+       * include/Makefile.am:  Add abg-version.h.in to the source
+       distribution.
+       * configure.ac: Generate abg-version.h in using the existing
+       AC_CONFIG_FILES macro call.
+
+2013-08-22  Dodji Seketeli <dodji@redhat.com>
+
+       Support pkgconfig through a new libabigail.pc file
+       * libabigail.pc.in: New pkgconfig file.
+       * configure.ac: Define the LIBXML2_VERSION variable that is used
+       in the libabigail.pc.in file.  Generate the libabigail.pc file
+       from its libabigail.pc.in template.
+       * Makefile.am: Add libabigail.pc.in to the source distribution.
+       Install the generated libabigail.pc to the right destination.
+
+2013-08-21  Dodji Seketeli <dodji@redhat.com>
+
+       Tweak the apidoc mainpage
+       * include/abg-fwd.h<doxygen markup>: Fix link to the project web
+       page and for git check-out.
+
+2013-08-21  Dodji Seketeli <dodji@redhat.com>
+
+       Initial website generation-fu using Doxygen
+       * doc/website/mainpage.txt: New file representing the input for
+       the website.
+       * doc/website/libabigail-website.doxy: New file representing the
+       doxygen configuration for the website generation.
+       * doc/api/libabigail.doxy: Output doxygen generation warnings into
+       a file.
+       * doc/Makefile.am: Support generating the website from doxygen.
+       Update the api generation relevant macros names for better
+       consistency.  Make "make html" generate the website too.  Make
+       "make clean" erase the website bits too.  Add a 'website'
+       target to make the website.
+
+2013-08-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in CONTRIBUTING file
+       * CONTRIBUTING: Fix typo, courtesy of Mark Wielaard.
+
+2013-08-19  Dodji Seketeli <dodji@redhat.com>
+
+       Remove autotools-generated files
+       * Makefile.in: Remove this autotools-generated file.  I know that
+       people in the GCC-realm like storing these autotools-generated
+       files into the source control system, but I believe in this day
+       and age, this is annoying (to say the least) for the project
+       developers for no good reason.  Requiring (the ubiquitous)
+       autoconf for building from source is no big deal today, and typing
+       "autoreconf" is not hard to do, really.  And it saves the
+       developers for having to update a bunch of boilerplate
+       automatically generated files into the source control system; this
+       is really unnecessary noise and it is a commonly accepted good
+       practice to avoid doing it these days.  To help people who do not
+       know how to handle this, there is a COMPILING file in the source
+       tree that explains how to build the project from sources.
+       * aclocal.m4: Likewise.
+       * configure: Likewise.
+       * include/Makefile.in: Likewise.
+       * src/Makefile.in: Likewise.
+       * doc/Makefile.in: Likewise.
+       * tests/Makefile.in: Likewise.
+
+2013-08-19  Dodji Seketeli <dodji@redhat.com>
+
+       Add a new COMPILING file explaining how to build the package
+       * COMPILING: New file.
+
+2013-08-14  Dodji Seketeli <dodji@redhat.com>
+
+       Remove name of unused parameter in decl_base::traverse.
+       * src/abg-ir.c (decl_base::traverse): Remove name of unused parameter.
+
+2013-08-14  Dodji Seketeli <dodji@redhat.com>
+
+       install headers in $includedir/libabigail
+       * include/Makefile.am: Install headers in $includedir/libabigail
+
+2013-08-14  Dodji Seketeli <dodji@redhat.com>
+
+       For usage from within GCC set header path to $includedir/libabigail
+       * abigail.m4:  The include path used for compilation goes to
+       $includedir/libabigail.
+
+2013-08-08  Benjamin Kosnik <bkoz@redhat.com>
+
+       Separate out bits from the ir header.
+       * include/abg-irfwd.h: Move to...
+       * include/abg-fwd.h: ...this.
+       * include/abg-ir.h (traverse_base): Move to...
+       * include/abg-traverse.h: ...here. New.
+       * include/abg-ir.h (location, location_manager, translation_unit):
+       Move to...
+       * include/abg-corpus.h: ...here.
+       * include/Makefile.am: Adjust.
+       * include/Makefile.in: Regenerate.
+
+2013-08-07  Benjamin Kosnik <bkoz@redhat.com>
+
+       Template naming compression.
+       * include/abg-ir.h: Template naming compressions.
+       (class_template_decl): To class_tdecl.
+       (function_template_decl): To function_tdecl.
+       (template_type_parameter): To type_tparameter.
+       (template_non_type_parameter): To non_type_tparameter.
+       (template_template_parameter): To template_tparameter.
+       (tmpl_parm_type_composition): To type_composition.
+       * include/abg-irfwd.h: Same.
+       * src/abg-hash.cc: Same.
+       * src/abg-ir.cc: Same.
+       * src/abg-reader.cc: Same.
+
+2013-08-07  Benjamin Kosnik <bkoz@redhat.com>
+
+       Slight change to doxy config.
+       * doc/api/libabigail.doxy: Turn off namespace scopes, on all the viz.
+
+2013-08-07  Benjamin Kosnik <bkoz@redhat.com>
+
+       Move class_decl nested types out-of-line.
+       * include/abg-ir.h (class_decl): Move nested types out of line.
+
+2013-08-07  Benjamin Kosnik <bkoz@redhat.com>
+
+       Rename class_decl::method to class_decl::method_base.
+       * include/abg-ir.h (class_decl::member): To member_base.
+       * src/abg-hash.cc: Same.
+       * src/abg-ir.cc: Same.
+       * src/abg-writer.cc: Same.
+
+2013-08-07  Benjamin Kosnik <bkoz@redhat.com>
+
+       Nest hashers.
+       * include/abg-ir.h: Nest all hashers.
+       * include/abg-irfwd.h (abigail): Don't inject std::tr1::hash.
+       Remove hasher forward declarations.
+       * include/abg-hash.h: Tweak.
+       * src/abg-hash.cc: Define hashers here.
+       * src/abg-ir.cc: Adjust for above.
+       * src/abg-reader.cc: Same.
+       * src/abg-writer.cc: Same.
+
+2013-08-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       Rename abi_corpus to corpus
+       * include/abg-corpus.h (abi_corpus): Change to corpus.
+       * include/abg-hash.h: Tweaks.
+       * include/abg-libxml-utils.h: Same.
+
+2013-08-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       Simplify interface for serializing/deserializing translation_units.
+       * include/abg-ir.h (translation_unit::read): New member function.
+       (translation_unit::write): Same.
+       * src/abg-reader.cc (translation_unit::read): Define.
+       * src/abg-writer.cc (translation_unit::write): Define.
+       * include/abg-reader.h: Remove.
+       * include/abg-writer.h: Remove.
+       * include/Makefile.am (headers): Same.
+       * include/Makefile.in: Regenerate.
+
+2013-08-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       First pass clean reading API.
+       * include/abg-reader.h (read_file): Remove extraneous file parameter.
+       * src/abg-reader.cc: Same.
+       * tests/test-read-write.cc: Adjust.
+
+2013-08-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       Rename traversable to traversable_base, move up the _decl hierarchy via decl_base derivation.
+       * include/abg-ir.h (traversable): To traversable_base.
+       (decl_base): Inherit from traversable_base.
+       (decl_base::traverse): Null definition.
+       (function_decl, etc.): Remove traversable_base as base class.
+
+2013-08-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       Standardize typedef naming. Plural form is the container form, smart_ptr types are type + _sptr.
+       * include/abg-ir.h (scope_decl): Add declarations, scopes as types.
+       (function_type): Add parameter_sptr, parameters as types.
+       (enum_type_decl): Add type_sptr, enumerators as types.
+       (class_decl): Adjust typedefs for consistency.  Change
+       base_specs_type to base_specs, member_types_type to member_types,
+       data_members_type to data_members, member_functions_type to
+       member_functions, member_function_templates_type to
+       member_function_templates, member_class_templates_type to
+       member_class_templates.
+
+2013-08-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Doxygen markup fixes final.
+       * include/abg-config.h: Doxygen cleanups round two.
+       * include/abg-hash.h: Same.
+       * include/abg-ir.h: Same.
+       * include/abg-irfwd.h: Same.
+       * include/abg-libxml-utils.h: Same.
+       * src/abg-config.cc: Same.
+       * src/abg-hash.cc: Same.
+       * src/abg-ir.cc: Same.
+       * src/abg-reader.cc: Same.
+       * src/abg-writer.cc: Same.
+
+2013-08-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Forward decls for abg-ir.h, doxygen fixups, restyle.
+       * include/abg-irfwd.h: New file for forward declarations.
+       * include/Makefile.am: Add new header.
+       * include/Makefile.in: Regenerate.
+       * include/*: Forward declare, doxygen fixups, restyle.
+       * src/*: Same.
+       * src/abg-corpus.cc: Empty, removed.
+       * doc/api/libabigail.doxy: Tweak.
+
+2013-08-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add virtual dtor to translation_unit.
+       * include/abg-ir.h (translation_unit): Add virtual dtor.
+       * src/abg-ir.cc: Define.
+
+2013-08-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Adjust doxygen input path.
+       * doc/api/libabigail.doxy: Adjust include directory.
+
+2013-08-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Collapse subdir of include to include.
+       * include/libabigail/abg-*.h: Move to...
+       * include/abg-*.h
+       * include/libabigail: Remove.
+       * configure.ac: Adjust include location from libabigail/include to
+       include.
+       * Makefile.in: Same.
+       * aclocal.m4: Same.
+       * configure: Same.
+       * doc/Makefile.in: Same.
+       * include/Makefile.am: Same.
+       * src/Makefile.am: Same.
+       * src/Makefile.in: Same.
+       * tests/Makefile.am: Same.
+       * tests/Makefile.in: Same.
+
+2013-07-23  Dodji Seketeli <dodji@seketeli.org>
+
+       Update autotool auto-generated files
+       * Makefile.in: Updated.
+       * aclocal.m4: Likewise.
+       * configure: Likewise.
+       * doc/Makefile.in: Likewise.
+       * src/Makefile.in: Likewise.
+       * tests/Makefile.in: Likewise.
+
+2013-07-20  Dodji Seketeli <dodji@seketeli.org>
+
+       Implement a translation unit traversal API
+       * include/libabigail/abg-ir.h (struct ir_node_visitor, struct
+       traversable): New interfaces.
+       (translation_unit, scope_decl, type_decl, qualified_type_def)
+       (pointer_type_def, reference_type_def, enum_type_decl)
+       (typedef_decl, var_decl, function_decl, data_member)
+       (member_function, member_function_template)
+       (member_class_template): Implement the traversable interface,
+       overload the traversable::traverse pure virtual function.
+       * src/abg-ir.cc ({translation_unit, scope_decl, type_decl,
+       namespace_decl, qualified_type_def, pointer_type_def,
+       reference_type_def, enum_type_decl, typedef_decl, var_decl,
+       function_decl, class_decl::member_function, class_decl,
+       class_decl::data_member, class_decl::member_function_template,
+       class_decl::member_class_template, function_template_decl,
+       class_template_decl, }::traverse): Implement traversal.
+       (ir_node_visitor::visit): New method, overloaded for the types
+       above, which implement the traversable interface.
+       * tests/test-walker.cc: New test case program to showcase how to
+       use the new traversal API.
+       * tests/makefile.am: Add test-walker.cc to the build system.
+
+2013-07-19  Dodji Seketeli <dodji@seketeli.org>
+
+       By default, statically link libabigail with whoever uses abigail.m4
+       * abigail.m4: Make $abigaillibs statically link libabigail by default.
+
+2013-07-19  Dodji Seketeli <dodji@seketeli.org>
+
+       Move static member definition to abg-viz-dot.cc file
+       * include/libabigail/abg-viz-dot.h: Move definition of
+       node_base::_M_count_total to ...
+       * src/abg-viz-dot.cc: ... here.
+
+2013-07-19  Dodji Seketeli <dodji@seketeli.org>
+
+       Put headers in include/libabigail
+       * include/libabigail: New directory.
+       * include/Makefile.am:  New file.
+       * include/libabigail/Makefile.am: New file.
+       * src/abg-*.h: Move these in include/libabigail/*.h
+       * src/Makefile.am: Set -I option to look for headers in include/libabigail
+       * doc/api/libabigail.doxy: Look for headers in include/libabigail
+       * tests/Makefile.am: Set -I option to look for headers in include/libabigail
+       * abigail.m4: Set includedir to $prefix/include/libabigail for
+       library used as a dep, or to srcdir/libabigail/include/libabigail
+       in GCC source tree.
+       * configure.ac: Add Makefile.am in include and include/libabigail
+       * abigail.m4: Look for headers in include/libabigail when the
+       libabigail is in in the source tree and in $incdir/libabigail when
+       it is installed as a dependency.
+
+2013-07-18  Benjamin Kosnik <bkoz@redhat.com>
+
+       Install into docdir, turn off collaboration graphs.
+       * doc/Makefile.am (doc-install-html-doxygen): Install generated
+       files into docdir.
+       * doc/api/libabigail.doxy (COLLABORATION_GRAPH): Turn off.
+
+2013-07-18  Benjamin Kosnik <bkoz@redhat.com>
+
+       Fix dependencies for api/html output directory.
+       * doc/Makefile.am: Create abi output directory.
+
+2013-07-16  Dodji Seketeli <dodji@seketeli.org>
+
+       Prepare for publishing
+       * COMMIT-LOG-GUIDELINES: New file.
+       * CONTRIBUTING: New file.
+       * README: Amended to refer to the first files above.
+
+2013-07-16  Dodji Seketeli <dodji@seketeli.org>
+
+       LGPLv3 License the library
+       * COPYING-LGPLV3:  New file.
+       * abg-config.cc: License the file to LGPLv3.
+       * abg-config.h: Likewise.
+       * abg-corpus.cc: Likewise.
+       * abg-corpus.h: Likewise.
+       * abg-hash.cc: Likewise.
+       * abg-hash.h: Likewise.
+       * abg-ir.cc: Likewise.
+       * abg-ir.h: Likewise.
+       * abg-libxml-utils.cc: Likewise.
+       * abg-libxml-utils.h: Likewise.
+       * abg-reader.cc: Likewise.
+       * abg-reader.h: Likewise.
+       * abg-writer.cc: Likewise.
+       * abg-writer.h: Likewise.
+       * src/abg-viz-common.cc: Likewise.
+       * src/abg-viz-common.h: Likewise.
+       * src/abg-viz-dot.cc: Likewise.
+       * src/abg-viz-dot.h: Likewise.
+       * src/abg-viz-svg.cc: Likewise.
+       * src/abg-viz-svg.h: Likewise.
+       * tests/test-read-write.cc: Likewise.
+       * tests/test-utils.cc: Likewise.
+       * tests/test-utils.h: Likewise.
+
+2013-07-17  Dodji Seketeli <dodji@seketeli.org>
+
+       Add assert.h in abg-ir.cc
+       * src/abg-ir.cc: Add missing assert.h
+
+2013-07-17  Dodji Seketeli <dodji@seketeli.org>
+
+       Fix missing license blurbs
+       * src/abg-config.cc: Fix licensing blurb.
+       * src/abg-config.h: Likewise.
+       * src/abg-corpus.cc: Likewise.
+       * src/abg-corpus.h: Likewise.
+       * src/abg-ir.cc: Likewise.
+       * src/abg-ir.h: Likewise.
+       * src/abg-reader.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+
+2013-07-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Correct DOT merge.
+       * src/abg-viz-common.h: Use _M_attributes for attribute overflows.
+       * src/abg-viz-dot.h: Merge in correct node_base.
+       * src/abg-viz-dot.cc: Same.
+       * tests/test-dot.cc: Correct examples.
+       * tests/Makefile.am: Add .gv to CLEANFILES.
+       * tests/Makefile.in: Regenerate.
+
+2013-07-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Pull out common style type.
+       * src/abg-viz-common.h: Pull out common style type.
+       * src/abg-viz-dot.cc: Adjust scoping.
+       * src/abg-viz-common.cc: Same.
+       * src/abg-viz-dot.h: Use common style class.
+       * src/abg-viz-svg.h: Same.
+
+2013-07-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Commonize visualization support.
+       * src/abg-viz-svg.h: Move common code to...
+       * src/abg-viz-dot.h: Move common code to...
+       * src/abg-viz-common.h: ...here. New.
+       * src/abg-viz-svg.cc: Move common code to...
+       * src/abg-viz-common.cc: ...here. New.
+       * src/Makefile.am: Add abg-viz-common.cc, abg-viz-common.h
+       * src/Makefile.in: Regenerate.
+
+2013-07-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Initial DOT work.
+       * doc/vizualization/layout/scripts/
+       (inkscape_export_svg_to_plain_svg.sh): Move...
+       (inkscape_export_svg_to_png_and_pdf.sh): Move...
+       * scripts: ..here. New toplevel directory.
+       * scripts/scripts/dot_to_png.sh: New.
+       * scripts/scripts/dot_to_svg.sh: New.
+       * src/Makefile.am: Add abg-viz-dot.cc, abg-viz-dot.h.
+       * tests/Makefile.am: Add test-dot.cc.
+       * src/abg-viz-dot.cc: New.
+       * src/abg-viz-dot.h: New.
+       * tests/test-dot.cc: New.
+       * doc/vizualization/graph: New.
+       * doc/vizualization/graph/gv/sa-A.gv: New.
+       * doc/vizualization/graph/gv/sa-B.gv: New.
+       * doc/vizualization/graph/gv/sa-C1.gv: New.
+       * doc/vizualization/graph/gv/sa-C2.gv: New.
+       * doc/vizualization/graph/gv/sa-C3.gv: New.
+       * doc/vizualization/graph/gv/sa-C4.gv: New.
+       * doc/vizualization/graph/gv/sa-D1.gv: New.
+       * doc/vizualization/graph/gv/sa-D2.gv: New.
+       * doc/vizualization/graph/gv/sa-D2v.gv: New.
+       * doc/vizualization/graph/gv/sa-D3.gv: New.
+       * doc/vizualization/graph/gv/sa-D3v.gv: New.
+       * doc/vizualization/graph/gv/sa-D4v.gv: New.
+       * doc/vizualization/graph/gv/sa-D5v1.gv: New.
+       * doc/vizualization/graph/gv/sa-D5v2.gv: New.
+       * doc/vizualization/graph/gv/sa-DD1.gv: New.
+       * doc/vizualization/graph/gv/sa-DD2.gv: New.
+       * doc/vizualization/graph/gv/sa-DD3.gv: New.
+       * doc/vizualization/graph/gv/sa-DD4.gv: New.
+       * doc/vizualization/graph/gv/sa-DD5.gv: New.
+       * doc/vizualization/graph/gv/sa-base.gv: New.
+       * doc/vizualization/graph/png/sa-A.png: New.
+       * doc/vizualization/graph/png/sa-B.png: New.
+       * doc/vizualization/graph/png/sa-C1.png: New.
+       * doc/vizualization/graph/png/sa-C2.png: New.
+       * doc/vizualization/graph/png/sa-C3.png: New.
+       * doc/vizualization/graph/png/sa-C4.png: New.
+       * doc/vizualization/graph/png/sa-D1.png: New.
+       * doc/vizualization/graph/png/sa-D2.png: New.
+       * doc/vizualization/graph/png/sa-D2v.png: New.
+       * doc/vizualization/graph/png/sa-D3.png: New.
+       * doc/vizualization/graph/png/sa-D3v.png: New.
+       * doc/vizualization/graph/png/sa-D4v.png: New.
+       * doc/vizualization/graph/png/sa-D5v1.png: New.
+       * doc/vizualization/graph/png/sa-D5v2.png: New.
+       * doc/vizualization/graph/png/sa-DD1.png: New.
+       * doc/vizualization/graph/png/sa-DD2.png: New.
+       * doc/vizualization/graph/png/sa-DD3.png: New.
+       * doc/vizualization/graph/png/sa-DD4.png: New.
+       * doc/vizualization/graph/png/sa-DD5.png: New.
+       * doc/vizualization/graph/png/sa-base.png: New.
+       * doc/vizualization/graph/sources/sa-A.cc: New.
+       * doc/vizualization/graph/sources/sa-B.cc: New.
+       * doc/vizualization/graph/sources/sa-C.cc: New.
+       * doc/vizualization/graph/sources/sa-D.cc: New.
+       * doc/vizualization/graph/sources/sa-DD.cc: New.
+       * doc/vizualization/graph/sources/sa-base.cc: New.
+       * doc/vizualization/graph/svg/sa-A.svg: New.
+       * doc/vizualization/graph/svg/sa-B.svg: New.
+       * doc/vizualization/graph/svg/sa-C1.svg: New.
+       * doc/vizualization/graph/svg/sa-C2.svg: New.
+       * doc/vizualization/graph/svg/sa-C3.svg: New.
+       * doc/vizualization/graph/svg/sa-C4.svg: New.
+       * doc/vizualization/graph/svg/sa-D1.svg: New.
+       * doc/vizualization/graph/svg/sa-D2.svg: New.
+       * doc/vizualization/graph/svg/sa-D2v.svg: New.
+       * doc/vizualization/graph/svg/sa-D3.svg: New.
+       * doc/vizualization/graph/svg/sa-D3v.svg: New.
+       * doc/vizualization/graph/svg/sa-D4v.svg: New.
+       * doc/vizualization/graph/svg/sa-D5v1.svg: New.
+       * doc/vizualization/graph/svg/sa-D5v2.svg: New.
+       * doc/vizualization/graph/svg/sa-DD1.svg: New.
+       * doc/vizualization/graph/svg/sa-DD2.svg: New.
+       * doc/vizualization/graph/svg/sa-DD3.svg: New.
+       * doc/vizualization/graph/svg/sa-DD4.svg: New.
+       * doc/vizualization/graph/svg/sa-DD5.svg: New.
+       * doc/vizualization/graph/svg/sa-base.svg: New.
+
+2013-07-01  Benjamin Kosnik <bkoz@redhat.com>
+
+       Regenerate build/configure.
+       * aclocal.m4:
+       * configure:
+
+2013-06-06  Benjamin Kosnik <bkoz@redhat.com>
+
+       Regenerate configure files.
+       * Makefile.in:
+       * aclocal.m4:
+       * configure:
+       * doc/Makefile.in:
+       * src/Makefile.in:
+       * tests/Makefile.in:
+
+2013-05-28  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add svg generation.
+       * src/Makefile.am: Add abg-viz-svg.cc, abg-viz-svg.h.
+       * tests/Makefile.am: Add test-svg.cc.
+       * src/abg-viz-svg.cc: New.
+       * src/abg-viz-svg.h: New.
+       * tests/test-svg.cc: New.
+
+2013-05-22  Benjamin Kosnik <bkoz@redhat.com>
+
+       Remove ChangeLog
+       * ChangeLog: Remove content.
+
+2013-05-21  Benjamin Kosnik <bkoz@redhat.com>
+
+       Fixup abg-version.h merge duplicate.
+       * configure.ac: Remove src/abg-version.h merge duplicate.
+
+2013-05-20  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add doc/visualization/layout.
+       * doc/vizualization/layout: New.
+       * doc/vizualization/layout/pdf/sa-A.pdf: New.
+       * doc/vizualization/layout/pdf/sa-B.pdf: New.
+       * doc/vizualization/layout/pdf/sa-C1.pdf: New.
+       * doc/vizualization/layout/pdf/sa-C2.pdf: New.
+       * doc/vizualization/layout/pdf/sa-C3.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D1.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D2.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D2v.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D3.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D3v.pdf: New.
+       * doc/vizualization/layout/pdf/sa-D4v.pdf: New.
+       * doc/vizualization/layout/pdf/sa-DD1.pdf: New.
+       * doc/vizualization/layout/pdf/sa-DD2.pdf: New.
+       * doc/vizualization/layout/pdf/sa-DD3.pdf: New.
+       * doc/vizualization/layout/pdf/sa-DD4.pdf: New.
+       * doc/vizualization/layout/pdf/sa-DD5.pdf: New.
+       * doc/vizualization/layout/pdf/sa-base.pdf: New.
+       * doc/vizualization/layout/png/sa-A.png: New.
+       * doc/vizualization/layout/png/sa-B.png: New.
+       * doc/vizualization/layout/png/sa-C1.png: New.
+       * doc/vizualization/layout/png/sa-C2.png: New.
+       * doc/vizualization/layout/png/sa-C3.png: New.
+       * doc/vizualization/layout/png/sa-D1.png: New.
+       * doc/vizualization/layout/png/sa-D2.png: New.
+       * doc/vizualization/layout/png/sa-D2v.png: New.
+       * doc/vizualization/layout/png/sa-D3.png: New.
+       * doc/vizualization/layout/png/sa-D3v.png: New.
+       * doc/vizualization/layout/png/sa-D4v.png: New.
+       * doc/vizualization/layout/png/sa-DD1.png: New.
+       * doc/vizualization/layout/png/sa-DD2.png: New.
+       * doc/vizualization/layout/png/sa-DD3.png: New.
+       * doc/vizualization/layout/png/sa-DD4.png: New.
+       * doc/vizualization/layout/png/sa-DD5.png: New.
+       * doc/vizualization/layout/png/sa-base.png: New.
+       * doc/vizualization/layout/scripts/
+       (inkscape_export_svg_to_plain_svg.sh): New.
+       (inkscape_export_svg_to_png_and_pdf.sh): New.
+       * doc/vizualization/layout/sources/sa-A.cc: New.
+       * doc/vizualization/layout/sources/sa-B.cc: New.
+       * doc/vizualization/layout/sources/sa-C.cc: New.
+       * doc/vizualization/layout/sources/sa-D.cc: New.
+       * doc/vizualization/layout/sources/sa-DD.cc: New.
+       * doc/vizualization/layout/sources/sa-base.cc: New.
+       * doc/vizualization/layout/svg/sa-A.svg: New.
+       * doc/vizualization/layout/svg/sa-B.svg: New.
+       * doc/vizualization/layout/svg/sa-C1.svg: New.
+       * doc/vizualization/layout/svg/sa-C2.svg: New.
+       * doc/vizualization/layout/svg/sa-C3.svg: New.
+       * doc/vizualization/layout/svg/sa-D1.svg: New.
+       * doc/vizualization/layout/svg/sa-D2.svg: New.
+       * doc/vizualization/layout/svg/sa-D2v.svg: New.
+       * doc/vizualization/layout/svg/sa-D3.svg: New.
+       * doc/vizualization/layout/svg/sa-D3v.svg: New.
+       * doc/vizualization/layout/svg/sa-D4v.svg: New.
+       * doc/vizualization/layout/svg/sa-DD1.svg: New.
+       * doc/vizualization/layout/svg/sa-DD2.svg: New.
+       * doc/vizualization/layout/svg/sa-DD3.svg: New.
+       * doc/vizualization/layout/svg/sa-DD4.svg: New.
+       * doc/vizualization/layout/svg/sa-DD5.svg: New.
+       * doc/vizualization/layout/svg/sa-base.svg: New.
+
+2013-05-20  Benjamin Kosnik <bkoz@redhat.com>
+
+       Generate abg-version.h at configure time.
+       * configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
+       * src/Makefile.am: Remove abg-version.h generation rules.
+       * src/abg-version.h.in: New.
+
+2013-04-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add doc dir. Add Doxgen api generation rules.
+       * doc: Add.
+       * doc/Makefile.am (html, install-html): Add.
+       * doc/Makefile.in: Add.
+       * doc/api/libabigail.doxy: Add doxygen config.
+       * src/abg-*: Add @file markup.
+
+2013-03-27  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add configure to source control
+       * configure: Add.
+       * src/abg-corpus.cc: include stdexcept
+
+2013-06-25  Dodji Seketeli <dodji@redhat.com>
+
+       Support offsets and virtual attribute in base class specifiers
+       * src/abg-ir.h (class_decl::base_spec::base_spec): Take an offset
+       and a is_virtual flag.
+       (class_decl::base_spec::{get_is_virtual, get_offset_in_bits}): New
+       methods.
+       (class_decl::has_no_base_nor_member): New method declaration..
+       * src/abg-ir.cc (class_decl::base_spec::base_spec): Take an offset
+       and a is_virtual flag
+       (class_decl::has_no_base_nor_member): Define it.
+       * src/abg-reader.cc (read_offset_in_bits): Renamed
+       read_var_offset_in_bits into this.
+       (read_is_virtual): New static function.
+       (build_class_decl): Read the 'layout-offset-in-bits' and the
+       'is-virtual' of the base class specifier.  Adjust for the
+       read_var_offset_in_bits -> read_offset_in_bits rename.
+       * src/abg-writer.cc (write_layout_offset): New overload for the
+       base class specifiers.
+       (write_class_decl): If the class has no member or base class, make
+       it a proper empty xml element.  Write the offset and the
+       is-virtual attribute.
+       * tests/data/test-read-write/test20.xml: New test input data.
+       * tests/test-read-write.cc: De-serialize the test above, serialize
+       it back and compare that both versions are the same.
+
+2013-06-22  Dodji Seketeli <dodji@redhat.com>
+
+       Iron out support for simple base classes.
+       * src/abg-ir.h (class_decl::base_spec::base_spec): Move this
+       out-of-line.  Add a new constructor for clients compiled without
+       RTTI.
+       * src/abg-ir.cc (class_decl::base_spec::base_spec):  This is now
+       here out-of-line.  Define the new constructor for clients compiled
+       without RTTI.
+       * tests/data/test-read-write/test19.xml: New test case input for
+       base classes.
+       * tests/test-read-write.cc: De-serialize and serialize the new
+       test case input above.
+
+2013-06-21  Dodji Seketeli <dodji@redhat.com>
+
+       Fix handling of forward decl of classes
+       * abg-ir.h (class_decl::set_earlier_declaration): Move this
+       out-of-line and add an overload.
+       * src/abg-ir.cc (class_decl::set_earlier_declaration): Moved this
+       out-of-line here and add an overload.
+       * src/abg-reader.cc (build_class_decl): Really read the
+       'decl-of-decl-id' property.  Do not make the definition use the id
+       of the declaration.  Both have their id.
+       * src/abg-writer.cc (write_class_decl):  Put a space before the
+       property "def-of-decl-id".
+       * tests/data/test-read-write/test18.xml: New test input.
+       * tests/test-read-write.cc: De-serialize this new input, serialize
+       it back and make sure both versions are identical.
+
+2013-06-21  Dodji Seketeli <dodji@redhat.com>
+
+       Serialize the layout offset of class data members.
+       * src/abg-writer.cc (write_layout_offset): New function.
+       (write_class_decl): Serialize the layout offset.
+
+2013-06-21  Dodji Seketeli <dodji@redhat.com>
+
+       Support Bitwise OR for qualified_type_def::CV better
+       * src/abg-ir.h (qualified_type_def::CV_RESTRICT): New enumerator
+       for the qualified_type_def::CV enum.
+       (operator|(qualified_type_def::CV, qualified_type_def::CV)): New
+       declaration.
+       * src/abg-ir.cc (operator|(qualified_type_def::CV,
+       qualified_type_def::CV)): New definition.
+       * src/abg-reader.cc (build_qualified_type_decl): No need for
+       casting the result of bitwise or between instances of
+       qualified_type_def::CV.
+
+2013-06-14  Dodji Seketeli <dodji@seketeli.org>
+
+       Support method type/decl, variadic functions, class declarations-only
+       * src/abg-ir.h (function_decl::parameter::parameter): New
+       constructor with variadic parameter marker.
+       (function_decl::m_type): Make this protected to let method_decl
+       inheriting class to access it.
+       (function_decl::get_type): Move this out-of-line.
+       (class method_type, method_type_hash): New types.
+       (enum class_decl::access_specifier): Add no_access new enumerator.
+       (class_decl::data_member::data_member): Move this out-of-line.
+       (class_decl::data_member::~data_member): Declare virtual
+       destructor.
+       (class method_decl): New class.
+       (class member_function): Make this inherit method_decl, instead of
+       function_decl.
+       (class_decl::class_decl): New constructors.
+       (class_decl::{hashing_started, is_declaration_only,
+       set_earlier_declaration, get_earlier_declaration}): New methods.
+       * src/abg-ir.cc (add_decl_to_scope): If a decl is already in a
+       scope, don't add it to this scope.
+       (get_global_scope): Make this work when passed an instance of
+       global_scope.
+       (dynamic_type_hash::operator()): Add support for method_type.
+       (method_type::{method_type, set_class_type, ~method_type, })
+       (method_type_hash::operator()): New defintions.
+       (function_decl::get_type, class_decl::class_decl): Move these
+       out-of-line here.
+       (class_decl::method_decl::{method_decl, ~method_decl, get_type}):
+       New definitions.
+       (class_decl::member_function::member_function): Move this
+       out-of-line here.  Support method_decl.
+       (class_decl::data_member::data_member): Likewise.
+       (class_decl_hash::operator()): Guard this against endless loop.
+       * src/abg-reader.cc (write_class_is_declaration_only): New static
+       function.
+       (write_var_decl): Take a flag to write the mangled name or not.
+       (write_function_decl): Take a flag to skip the first parameter.
+       (write_cdtor_const_static): Use 'yes' instead of 'true' as value
+       of the properties.
+       (write_decl, write_function_template_decl): Adjust wrt the new
+       signatures of write_var_decl and write_function_decl.
+       (write_enum_type_decl): Simplify call to write_location.
+       (write_class_decl): Support serializing declaration-only classes.
+       * src/abg-writer.cc:
+       * tests/data/test-read-write/test17.xml: New test input.
+       * tests/test-read-write.cc: De-serialize the above, and serialize it back.
+       * tests/data/test-read-write/test10.xml: Update this test.
+
+2013-06-01  Dodji Seketeli <dodji@redhat.com>
+
+       Support function_type and adapt a function_decl to use it
+       * src/abg-ir.h (class function_type): Forward decl prior to class
+       function_decl.
+       (function_decl::parameter): Pass string by const reference.  Add a
+       variadic marker member and initialize it.
+       (function_decl::parameter::get_type): Add a non-const overload.
+       (function_decl::parameter::get_variadic_marker): New getter.
+       (function_decl::function_decl) Take a const reference to a vector
+       for parameters, type size/alignment.  Add two overloads that takes a
+       pointer to function_type.
+       (function_decl::get_parameters): Move this out-of-line.
+       (function_decl::append_parameter(s)): Renamed
+       function_decl::add_parameter(s) into these.  Move it out-of-line.
+       Add an overload.
+       (function_decl::{get_type, set_type}): New declaration.
+       (function_decl::get_return_type): Move this out-of-line.
+       (function_decl::is_variadic): New in-line function.
+       (function_decl::m_type): New data member.
+       (function_decl::{m_parms, m_return_type}): Remove.  This are now
+       carried by function_decl::m_type.
+       (class function_type, struct function_type_hash): New
+       declarations.
+       (member_function::member_function): Take a vector of pointers to
+       parameters.  Take size/align of the type of the member function.
+       Adjust initialization.
+       * src/abg-ir.cc (dynamic_type_hash): Hash instance of
+       function_type accessed through a pointer.
+       (function_type::{operator==, ~function_type})
+       (function_type_hash::operaror(), function_decl::{get_return_type,
+       }, function_decl::parameter::hash::operator()): New definitions.
+       (function_decl::function_decl): The out-of-line definitions of the
+       declarations above.
+       (function_decl::append_parameter): Moved this out-of-line from
+       inline function_decl::add_parameter.  Make this rely on the
+       underlying m_type.
+       (function_decl::operator==): Adjust for use of vector for the
+       parameters.  Also, there is no need anymore to compare the
+       parameters or the return types as they are compared by the
+       comparison of the function types.
+       * src/abg-reader.cc (build_function_decl): Read the new size/alignment
+       attributes on the function-decl element.  Build a function_type
+       and use it to build the function_decl.  Parameters and return type
+       are now hung off of the function_type.
+       (handle_function_decl): use build_function_decl.
+       * src/abg-writer.cc (write_function_decl): Write the new
+       size/alignment properties of the function-decl element.  Adjust
+       for the use of vectors for function parameters now.
+       * tests/data/test-read-write/test10.xml: Adjust for the presence
+       of size/alignment properties in the function-decl element now.
+       * tests/data/test-read-write/test11.xml: Likewise.
+       * tests/data/test-read-write/test12.xml: Likewise.
+       * tests/data/test-read-write/test13.xml: Likewise.
+       * tests/data/test-read-write/test14.xml: Likewise.
+       * tests/data/test-read-write/test9.xml: Likewise.
+
+2013-06-01  Dodji Seketeli <dodji@redhat.com>
+
+       Support null type hashing
+       * src/abg-ir.cc (dynamic_type_hash::operator()(const type_base* t)
+       const): Support hashing null type.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Add a couple of output file suffix configuration properties
+       * src/abg-config.h (config::{get_tu_instr_suffix,
+       set_tu_instr_suffix, get_tu_instr_archive_suffix,
+       set_tu_instr_archive_suffix}): New decls.
+       * src/abg-config.cc (config::{get_tu_instr_suffix,
+       set_tu_instr_suffix, get_tu_instr_archive_suffix,
+       set_tu_instr_archive_suffix}): New defs.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Add a new add_decl_to_scope overload
+       * src/abg-ir.h (add_decl_to_scope): New declaration.
+       * src/abg-ir.cc (add_decl_to_scope): New definition.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure add_decl_to_scope properly updates the scope
+       * src/abg-ir.h (scope_decl::m_member_scopes)
+       (scope_decl::get_member_scopes): New declarations.
+       (scope_decl::add_member_decl): Move this to ...
+       * src/abg-ir.cc (scope_decl::add_member_decl): ... here.  Make it
+       update the new scope_decl::m_member_scopes too.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Add translation_unit::get_path
+       * src/abg-ir.cc (translation_unit::get_path): New declaration.
+       * src/abg-ir.cc (translation_unit::get_path): New definition.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Link the global scope to its translation unit
+       * src/abg-ir.h (global_scope::global_scope): Take a translation
+       unit and initialize the tu member with it.
+       * src/abg-ir.cc (translation_unit::get_global_scope): Initialize
+       the global scope with its actual translation unit.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Have location numbers that are stable throughout translation unit editing
+       * src/abg-irc.cc (location_manager::create_new_location): Just
+       append the new expanded location to the end of the location
+       vectors, and return the new size of the vector as the location
+       number.  That way we don't change the location number of an
+       expanded location that is already in the vector -- that change
+       happens if we keep the vector sorted during the insertion.
+       (location_manager::expand_location):  The index of the expanded
+       location is the location number - 1.
+
+2013-05-23  Dodji Seketeli <dodji@redhat.com>
+
+       Fix in-source detection of the library for GCC
+       * abigail.m4 (ABIGAIL_INIT): Don't forget to set abigaillibs when
+       we detect the library in the source tree, particularly for GCC.
+
+2013-05-21  Dodji Seketeli <dodji@redhat.com>
+
+       Re-generate aclocal.m4
+       * aclocal.m4: Re-generate with autoconf 2.64.
+
+2013-05-21  Benjamin Kosnik <bkoz@redhat.com>
+
+       Generate abg-version at configure time in builddir
+       * configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
+       * src/Makefile.am: Remote ad-hoc generation of abg-version.h from
+       here.
+       * src/abg-version.h.in: New file.
+       * configure: Re-generate.
+       * src/Makefile.in: Likewise.
+
+2013-05-21  Dodji Seketeli <dodji@redhat.com>
+
+       add abigail.m4 to the distribution
+       * Makefile.am: Add abigail.m4 to the distribution.
+       * Makefile.in: Re-generate.
+
+2013-05-10  Dodji Seketeli <dodji@redhat.com>
+
+       Pedantic fixes
+       * src/abg-ir.h (enum decl_base::binding): Remove trailing space.
+       (enum class_decl::access_specifier): Likewise.
+
+2013-05-07  Dodji Seketeli <dodji@redhat.com>
+
+       Fix for building libabigail inside the GCC tree
+       * abigail.m4: Detect when we are in the GCC tree; disable version
+       check in that case.
+
+2013-05-07  Dodji Seketeli <dodji@redhat.com>
+
+       Re-generate configury with autoconf 2.64
+       * abigail.m4: Add licence header.
+       * configure.ac: Re-generate configure script with autoconf 2.64
+       like for GCC.
+
+2013-05-07  Dodji Seketeli <dodji@redhat.com>
+
+       Allow autoconf-based clients to detect the library
+       * configure.ac: Define the components of the version number as
+       autoconf variables.  Set the version number to 0.1.0
+       * abigail.m4: New file
+       * Makefile.am: Add abigail.m4 to the build system.  Install it in
+       $(datadir)/aclocal.
+       * src/Makefile.am: Generate and add abg-version.h from the version
+       number autoconf variable defined in configure.ac.  Re-generate
+       abg-version.h each time configure.ac changes.
+       * src/abg-config.h (abigail_get_library_version): Declare ...
+       * src/abg-config.cc (abigail_get_library_version): ... and define
+       this wirth C linkage.  This is useful for autoconf tests to test
+       for the presence of the library.
+       * configure: Re-generate.
+       * Makefile.in: Likewise.
+       * src/Makefile.in: Likewise.
+       * tests/Makefile.in: Likewise.
+
+2013-05-03  Dodji Seketeli <dodji@redhat.com>
+
+       Build system fix for make distcheck
+       * Makefile.am: Support the doc sub-directory.  We don't have a
+       COPYRIGHT file.
+       * src/Makefile.am: Don't prefix the file paths by the absolute
+       path of the src dir; current autotools know how to deal with it,
+       otherwise and it break them.
+       * tests/Makefile.am: Likewise.  Make sure to remove the output of
+       the tests upon make clean.
+       * Makefile.in: Re-generate.
+       * aclocal.m4: Likewise.
+       * configure: Likewise.
+       * src/Makefile.in: Likewise.
+       * tests/Makefile.in: Likewise.
+
+2013-05-02  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for member class templates
+       * src/abg-ir.cc (class_decl::add_member_function_template): Fix
+       comment.
+       (class_decl::add_member_class_template)
+       (class_decl::member_class_template::operator==)
+       (class_decl::member_class_template_hash::operator()): New
+       definitions.
+       (class_decl::operator==): Compare member templates.  Fix logic.
+       (class_decl::data_member_hash::operator())
+       (class_decl::member_function_hash::operator())
+       (class_decl::member_function_template_hash::operator()): Don't
+       hash the is_static boolean as it's hashed as part of the 'member'
+       sub-object hashing.
+       (class_decl::member_function_template::operator==): Move this out
+       of line here, from the header file.
+       (class_decl_hash::operator()): Hash member class templates.
+       * src/abg-ir.h (class_decl::member::{m_is_static,is_static}): Add the is_static
+       boolean here, so that it's factorized out of the inherited classes
+       of this class.
+       (class_decl::data_member::{is_static, m_is_static})
+       (class_decl::member_function::{is_static, m_is_static})
+       (class_decl::member_function_template::{is_static, m_is_static}): Remove this
+       as it's now part of the base 'member' class.
+       (class_decl::data_member::operator==)
+       (class_decl::member_function::operator==): Don't compare the
+       is_static boolean as it's now compared as part of the 'member'
+       sub-object comparison.
+       (class_decl::member_function_template::operator==): Move this
+       out-of-line into src/abg-ir.cc.
+       (class class_decl::member_class_template, struct
+       class_decl::member_class_template_hash)
+       (class_decl::{add_member_class_template,
+       get_member_class_templates}): New declarations.
+       (class_decl::member_class_templates_type): New typedef.
+       * src/abg-reader.cc (build_class_decl): Support de-serializing
+       member class templates.
+       * src/abg-writer.cc (write_class_decl): Likewise, support
+       serializing member class templates.
+       * tests/data/test-read-write/test16.xml: New test input.
+       * tests/test-read-write.cc (int_out_specs[]): Add the new test
+       input to the list of inputs that are de-serialized and serialized
+       back.
+       * tests/Makefile.am: Add the new test input to the distribution.
+
+2013-05-02  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support of class templates
+       * src/abg-ir.cc (class_template_decl::class_template_decl)
+       (class_template_decl::set_pattern)
+       (class_template_decl::operator==)
+       (class_template_decl::~class_template_decl)
+       (class_template_decl_hash::operator())
+       (class_tmpl_shared_ptr_hash::operator()): New definitions.
+       * src/abg-ir.h (class class_template_decl, struct
+       class_tmpl_shared_ptr_hash, struct class_tmpl_shared_ptr_hash):
+       New declarations.
+       * src/abg-reader.cc (read_context::const_class_tmpl_map_it): New
+       typedef.
+       (read_context::get_fn_tmpl_decl): Fix comment.
+       (read_context::{get_class_tmpl_decl,key_class_tmpl_decl})
+       (build_class_template_decl, handle_class_template_decl): New
+       definitions.
+       (read_context::m_class_tmpl_map): New member.
+       (handle_element): Support "class-template-decl" xml elements
+       nodes.
+       (build_class_decl): Add missing bits to comment.
+       (build_function_template_decl): Fix spacing.
+       * src/abg-writer.cc (class_tmpl_shared_ptr_map): New typedef.
+       (write_context::m_class_tmpl_map): New member.
+       (write_context::get_id_for_class_tmpl, write_class_template_decl):
+       New definitions.
+       (write_template_parameters): Factorize this this out from ...
+       (write_function_template_decl): ... here.
+       (write_decl): Support writing instances of class_template_decl.
+       Fix spacing.
+       * tests/data/test-read-write/test15.xml: New test input.
+       * tests/Makefile.am: Add the new test15.xml input to the
+       distribution.
+       * tests/test-read-write.cc (in_out_specs): Add the new test15.xml
+       test to the list of serialized output to be de-serialized and
+       serialized back.
+
+2013-05-02  Dodji Seketeli <dodji@redhat.com>
+
+       Fix function_tempalte_decl init & hashing
+       * src/abg-ir.cc (function_template_decl::operator==): Compare the
+       patterns, not a pointer to them.
+       (function_template_decl_hash::operator()): Don't try to hash null
+       patterns.
+       * src/abg-ir.h (function_template_decl::function_template_decl):
+       Use function_template_decl::set_pattern to set the pattern here.
+
+2013-04-30  Dodji Seketeli <dodji@redhat.com>
+
+       Support member function templates
+       * src:abg-ir.h: Move template declarations before class
+       class_decl, so that class_decl can have member templates.
+       (class class_decl::member_function_template)
+       (class_decl::add_member_function_template)
+       (class_decl::{base_specs_type, member_types_type,
+       data_members_types, member_functions_type,
+       member_function_templates_type}): New declarations.
+       * src/abg-ir.cc (class_decl::add_member_function_template)
+       (class_decl::member_function_template_hash::operator()): New
+       definitions.
+       (class_decl_hash::operator()):  Support hashing for member
+       function templates.
+       * src/abg-reader.cc (build_class_decl): Use the new
+       class_decl::{member_types_type, data_members_type,
+       member_functions_type, base_specs_type} types.  Support member
+       function templates.
+       * src/abg-writer.cc (write_cdtor_const_static): New definition.
+       (write_class_decl): Support member function templates.
+       * tests/data/test-read-write/test14.xml: New input data.
+       * tests/Makefile.am: Add it to the distribution.
+       * tests/test-read-write.cc (InOutSpec int_out_specs): De-serialize
+       the new test input file, serialize it back and diff both results.
+
+2013-04-25  Dodji Seketeli <dodji@redhat.com>
+
+       Inheritance fix
+       * src/abg-ir.h (class template_non_type_parameter): Make this
+       inherit decl_base virtually.
+
+2013-04-25  Dodji Seketeli <dodji@redhat.com>
+
+       Small comment fix
+       * src/abg-ir.h (class template_decl): Fix comment.
+
+2013-04-25  Dodji Seketeli <dodji@redhat.com>
+
+       Add some decl predicates
+       * src/abg-ir.h (is_at_global_scope): Rename
+       is_decl_at_global_scope into this.
+       (is_at_class_scope, is_at_template_scope)
+       (is_template_parameter, is_type)
+       (is_template_parm_composition_type)
+       (is_function_template_pattern, is_template_decl): New
+       declarations.
+       * src/abg-ir.cc (is_at_global_scope): Rename
+       is_decl_at_global_scope into this.
+       (is_at_class_scope, is_at_template_scope, is_template_parameter)
+       (is_type, is_template_parm_composition_type)
+       (is_function_template_pattern, is_template_decl): New definitions.
+       * src/abg-reader.cc (update_depth_info_of_read_context): Use the
+       new is_at_class_scope decl.
+
+2013-04-25  Dodji Seketeli <dodji@redhat.com>
+
+       Support composing template type parameters
+       * src/abg-ir.h (class tmpl_parm_type_composition): New
+       declaration.
+       * src/abg-ir.cc
+       (tmpl_parm_type_composition::tmpl_parm_type_composition)
+       (tmpl_parm_type_composition::~tmpl_parm_type_composition): New
+       definitions.
+       * src/abg-reader.cc (build_tmpl_parm_type_composition): New
+       function.
+       (build_template_parameter): Support template parameter type
+       composition.
+       * src/abg-writer.cc (write_tmpl_parm_type_composition): New
+       function.
+       (write_template_non_type_parameter): Fix type-id attribute.
+       (write_template_parameter): Support template parameter type
+       composition.
+       * tests/data/test-read-write/test13.xml: New test input.
+       * tests/Makefile.am: Add it to the distribution.
+       * tests/test-read-write.cc (InOutSpec in_out_spec): Add test13.xml
+       to the list of xml file that are de-serialized and serialized back.
+
+2013-04-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix depth management during the parsing
+       * src/abg-ir.cc (decl_base_hash::operator()):  Don't hash the
+       context for decls in general.
+       * src/abg-reader.cc (read_context::push_decl_to_current_scope)
+       (read_context::push_and_key_type_decl): Add an overload that takes
+       a node and update_depth_info boolean.
+       (build_var_decl, build_type_decl, build_qualified_type_decl)
+       (build_pointer_type_def, build_reference_type_def)
+       (build_enum_type_decl, build_type_decl)
+       (build_template_type_parameter, build_template_non_type_parameter)
+       (build_template_template_parameter, build_template_parameter)
+       (build_type): Make these functions take an update_depth_info
+       parameter.  Pass it do read_context::push_and_key_type_decl or
+       read_context::push_decl_to_current_scope rather than call
+       update_read_context.
+       (build_function_decl, build_class_decl)
+       (build_function_template_decl): Change the seen_by_reader
+       parameter into update_depth_info.  Pass the update_depth_info bool
+       to read_context::push_decl_to_current_scope rather than call
+       update_depth_info here.
+       (handle_class, handle_function_template_decl): Adjust.
+       * tests/data/test-read-write/test12.xml: Add new test input.
+       * tests/test-read-write.cc (InOutSpec in_out_specs): Add it to the
+       list of input to de-serialize, serialize back and compare the two.
+       * tests/Makefile.am: Add the new test input to the distribution.
+
+2013-04-23  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support for function templates
+       * src/abg-ir.h (function_decl::set_return_type): New inline
+       definition.
+       (class template_decl, struct template_decl_hash, class
+       template_parameter, struct template_parameter_hash, struct
+       dynamic_template_parameter_hash, struct
+       template_parameter_shared_ptr_hash, class template_type_parameter)
+       (struct template_type_parameter_hash, class
+       template_non_type_parameter, struct
+       template_non_type_parameter_hash, class
+       template_template_parameter, struct
+       template_template_parameter_hash, class function_template_decl)
+       (struct function_template_decl_hash, struct
+       fn_tmpl_shared_ptr_hash): New declarations.
+       * src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing for
+       template template, and template type parameters.
+       (template_decl_hash::operator, template_decl::~template_decl)
+       (template_decl::operator==, template_parameter::operator==)
+       (template_parameter_hash::operator())
+       (dynamic_template_parameter_hash::operator())
+       (template_type_parameter::operator==)
+       (template_type_parameter::~template_type_parameter)
+       (template_type_parameter_hash::operator())
+       (template_non_type_parameter::operator==)
+       (template_non_type_parameter::~template_non_type_parameter)
+       (template_non_type_parameter_hash::operator())
+       (template_template_parameter::operator==)
+       (template_template_parameter::~template_template_parameter)
+       (template_template_parameter_hash::operator())
+       (function_template_decl::operator==)
+       (function_template_decl_hash::operator())
+       (fn_tmpl_shared_ptr_hash::operator())
+       (function_template_decl::~function_template_decl()): New
+       definitions.
+       * src/abg-reader.cc (read_context::get_fn_tmpl_decl)
+       (read_context::key_fn_tmpl_decl): New functions.
+       (read_context::m_fn_tmpl_map): New data member.
+       (read_context::key_type_decl): Renamed read_context::add_type_decl
+       into this.
+       (read_context::push_decl_to_current_scope): Renamed
+       read_context::finish_decl_creation into this.  Add an assert.
+       (read_context::push_and_key_type_decl): Renamed
+       read_context::finish_type_decl_creation into this.  Adjust to the
+       use of push_decl_to_current_scope and key_type_decl.
+       (build_function_template_decl, build_template_type_parameter)
+       (build_template_non_type_parameter)
+       (build_template_template_parameter, build_template_parameter)
+       (handle_function_template_decl): New functions.
+       (handle_element): Call handle_function_template_decl.
+       (build_function_decl): Take a bool parameter to update depth
+       information in parsing context.  Move instantiation of
+       function_decl before parsing its xml sub-nodes.  Update the depth
+       info in the parsing context if necessary.  Push the newly
+       intantiated decl to scope.  And then parse the sub nodes.  Do not
+       forget to add the fn parameters and return type using
+       function_decl::add_parameter and function_decl::set_return_type.
+       (build_var_decl, build_type_decl, build_qualified_type_decl)
+       (build_pointer_type_def, build_reference_type_def)
+       (build_enum_type_decl, build_typedef_decl, handled_type_decl)
+       (handle_qualified_type_decl, handle_pointer_type_def)
+       (handle_reference_type_def, handle_enum_type_decl)
+       (handle_typedef_decl, handle_var_decl, handle_function_decl)
+       (handle_class_decl): Adjust.
+       (build_class_decl): Take a bool parameter to update depth
+       information in parsing context. Add comment.  Wait for the class
+       members to be built, before keying (and thus hashing it) the
+       class.
+       (build_type): Fix logic, and adjust.
+       * src/abg-writer.cc (write_context::type_has_existing_id)
+       (write_context::get_id_for_fn_tmpl, write_template_type_parameter)
+       (write_template_non_type_parameter)
+       (write_template_template_parameter, write_template_parameter)
+       (write_function_template_decl): New functions.
+       (write_context::get_id_for_type): Simplify logic.
+       (write_decl): Support writing function template.
+       * tests/data/test-read-write/test11.xml: New test input.
+       * tests/test-read-write.cc (InoutSpec in_out_specs[]):
+       De-serialize the new test11.xml test, serialize it back and diff
+       output and input.
+       * tests/Makefile.am: Add test11.xml to the distribution.
+
+2013-04-23  Dodji Seketeli <dodji@redhat.com>
+
+       Mangled name of a scope_decl is its name
+       * src/abg-ir.h (scope_decl::scope_decl): The mangled name is the name.
+
+2013-04-23  Dodji Seketeli <dodji@redhat.com>
+
+       Update scope when adding class members
+       * src/abg-ir.h (class_decl::add_member_type)
+       (class_decl::add_data_member, class_decl::add_member_function):
+       Move the inline implementation of these functions ...
+       * src:abg-ir.cc (class_decl::add_member_type)
+       (class_decl::add_data_member, class_decl::add_member_function):
+       ... here.  Augment their implementation to properly update the
+       scope of the member.
+
+2013-04-23  Dodji Seketeli <dodji@redhat.com>
+
+       Rename class_decl::member_type::get_type into as_type
+       * src/abg-ir.h (class_decl::member_type::get_type): Rename this
+       into class_decl::member_type::as_type.
+       * src/abg-writer.cc (write_class_decl): Adjust.
+
+2013-04-23  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid having multiple sub-objects of base classes
+       * src/abg-ir.cc (decl_base::decl_base): Remove useless definition.
+       (type_base::type_base): Remove default arguments from parameters.
+       (scope_type_decl::scope_type_decl)
+       (namespace_decl::namespace_decl): Call the constructors for the
+       virtual bases explicitly.
+       * src/abg-ir.h (class scope_decl): Perform virtual inheritance of
+       decl_base.
+       (global_scope::global_scope): Call virtual base decl_base's
+       constructor directly.
+       (class type_decl): Inherit from decl_base and type_base
+       virtually.
+       (class scope_type_decl): Inherit from type_base virtually.
+       (class qualified_type_def, pointer_type_def, reference_type_def)
+       (class enum_type_decl, typedef_decl): Inherit from type_base and
+       decl_base virtually.
+       (class var_decl, function_decl): Inherit from decl_base virtually.
+       (class class_decl::member): Don't inherit from anything and adjust
+       constructor's mem-initializer accordingly.
+       (class class_decl::member_type): Inherit from decl_base virtually
+       and adjust constructor's mem-initializer accordingly.
+       (class_decl::{data_member::data_member,member_function::member_function)
+       (class_decl::class_decl): Call virtual base's constructor
+       explicitly.
+
+2013-04-22  Dodji Seketeli <dodji@redhat.com>
+
+       Move inline hashing functions out of line
+       * src/abg-ir.h (decl_base_hash::operator())
+       (type_base_hash::operator(), type_decl_hash::operator())
+       (scope_type_decl_hash::operator())
+       (qualified_type_def_hash::operator())
+       (pointer_type_def_hash::operator())
+       (reference_type_def_hash::operator())
+       (enum_type_decl_hash::operator(), typedef_decl_hash::operator())
+       (var_decl_hash::operator(), function_decl_hash::operator())
+       (class_decl::member_type_hash::operator())
+       (class_decl::base_spec_hash::operator())
+       (class_decl::data_member_hash::operator())
+       (class_decl::member_function_hash::operator()): Move these inline
+       definition ...
+       * src/abg-ir.cc: ... here.
+
+2013-04-22  Dodji Seketeli <dodji@redhat.com>
+
+       Various style nit fixes
+       * src/abg-ir.cc: Move the emacs mode specifier for the file to the
+       top of the file, otherwise, it's not effective.
+       (struct location_manager::priv): Add end of struct comment.
+       (class_decl_hash::operator()): Add fn comment.
+       * src/abg-ir.h: Move the emacs mode specifier for the file to the
+       top of the file, otherwise, it's not effective.
+       (class scope_decl): Add end of class comment.
+       * src/abg-reader.cc: Move the emacs mode specifier for the file to the
+       top of the file, otherwise, it's not effective.
+       (read_context::{get_type_decl,add_type_decl): Add comment.
+       (handle_namespace_decl): Fix indent.
+       * src/abg-writer.cc: Move the emacs mode specifier for the file to
+       the top of the file, otherwise, it's not effective.
+
+2013-04-12  Dodji Seketeli <dodji@redhat.com>
+
+       Remove .gitignore from VCS
+       * .gitignore: Remove from revision control as different
+       programmers might want to ignore different things.
+
+2013-04-08  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add license
+       * src/abg-*: Add license.
+       * tests/test-*: Same.
+
+2013-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Initial Support for class declarations
+       * src/abg-ir.h (scope_decl::scope_decl)
+       (scope_type_decl::scope_type_decl): Don't set mangled name for
+       scope_decl instances as it doesn't make sense.
+       (var_decl::var_decl): Pass the type shared pointer by value.
+       (struct var_decl_hash, function_decl::parameter::operator==)
+       (struct function_decl::parameter_hash, function_decl::operator==)
+       (struct function_decl_hash, class class_decl, struct
+       class_decl_hash): New declarations.
+       * src/abg-ir.cc (scope_type_decl::scope_type_decl): Don't set the
+       mangled name.  It doesn't make sense for scope_decls.
+       (dynamic_type_hash::operator): Fix comment.  Run the hashing for
+       scope_type_decl instances *after* running it for class_decl
+       instance, otherwise, the class_decl instances case will never get
+       hit.
+       (var_decl::var_decl): Pass the type shared pointer by value.
+       (function_decl::operator==, class_decl::operator==)
+       (class_decl_hash::operator()): New fns.
+       * src/abg-libxml-utils.h (get_xml_node_depth): Declare new fn.
+       (XML_READER_GET_ATTRIBUTE): Fix comment.
+       (XML_NODE_GET_ATTRIBUTE): New getter macro.
+       * src/abg-libxml-utils.cc (get_xml_node_depth): New definition.
+       * src/abg-reader.cc (update_read_context)
+       (update_depth_info_of_read_context, read_visibility, read_binding)
+       (read_access, read_size_and_alignment, read_static)
+       (read_var_offset_in_bits, read_cdtor_const, build_function_decl)
+       ( build_var_decl, build_type_decl, build_qualified_type_decl)
+       (build_pointer_type_def, build_reference_type_def)
+       (build_enum_type_decl, build_typedef_decl, build_class_decl)
+       (build_type, handle_class_decl): New functions or overloads.
+       (handle_element): Update to handle "class-decl" xml elements.
+       * src/abg-writer.cc (write_size_and_alignment, write_access)
+       (write_class, do_indent_to_level, get_indent_to_level): New fns.
+       (write_decl): Update to serialize instances of class_decl.
+       (write_type_decl, write_pointer_type_def)
+       (write_reference_type_def): Use the new write_size_and_alignment instead of
+       writing the attributes directly.
+       * tests/data/test-read-write/test10.xml: New test file.
+       * tests/Makefile.am: Add tests/data/test-read-write/test10.xml to
+       the build system.
+       * tests/test-read-write.cc (in_out_spec): De-serialize
+       data/test-read-write/test10.xml, serialize it back into
+       output/test-read-write/test10.xml, and compare the two output that
+       should be identical.
+
+2013-04-11  Dodji Seketeli <dodji@redhat.com>
+
+       Update enum decl representation as per the schema
+       * src/abg-reader.cc (handle_enum_type_decl): The name of the
+       element holding the underlying type is now "underlying-type", no
+       more "base".
+       * src/abg-writer.cc (write_enum_type_decl): Likewise.
+       * tests/data/test-read-write/test6.xml: Likewise.
+
+2013-04-10  Dodji Seketeli <dodji@redhat.com>
+
+       Add tests/data/test-read-write/test9.xml
+       * tests/data/test-read-write/test9.xml: (Forgot to) Add this new
+       test file.
+
+2013-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Support function declarations
+       * src/abg-ir.h (class function_decl): New declaration & inline
+       definitions.
+       * src/abg-ir.cc (function_decl::~function_decl): New definition.
+       * src/abg-reader.cc (read_location): New overload to read location
+       from an xmlNodePtr.
+       (build_function_parameter, handle_function_decl):
+       New definitions.
+       (handle_element): Support "function-decl" elements.
+       * src/abg-writer.cc (write_location): New overload to write a
+       location directly, not from a decl.
+       (write_function_decl): New definition.
+       (write_binding): Support writing the binding attribute from a
+       function_decl instance.
+       (write_decl): support serializing function
+       * tests/data/test-read-write/test9.xml: New test input file.
+       * tests/Makefile.am: Add data/test-read-write/test9.xml to the
+       build system.
+       * tests/test-read-write.cc: De-serialize
+       data/test-read-write/test9.xml, serialize it back and diff the
+       output from the input.
+
+2013-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Update in-vcs configure and docs/Makefile.in to recent configure
+       * configure: Updated as re-generated by autoconf 2.69.
+       * doc/Makefile.in: Updated as re-generated by automake 1.12.2.
+
+2013-04-02  Benjamin Kosnik <bkoz@redhat.com>
+
+       Add doc dir. Add Doxgen api generation rules.
+       * doc: Add.
+       * doc/Makefile.am (html, install-html): Add.
+       * doc/Makefile.in: Add.
+       * doc/api/libabigail.doxy: Add doxygen config.
+       * src/abg-*: Add @file markup.
+
+2013-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Introduce/use translation_unit & global_scope types
+       * abg-corpus.h (abi_corpus::{get_decls, get_loc_mgr}): Remove.
+       (abi_corpus::add): New function to add a translation unit.
+       (abi_corpus::get_translation_units): New declaration.
+       * abg-corpus.cc (abi_corpus::*): Remove all the definitions of
+       abi_corpus for now, as the abi_corpus type is not used anymore --
+       for now at least.
+       * src/abg-ir.h (add_decl_to_scope, get_global_scope)
+       (get_translation_unit, is_global_scope, is_decl_at_global_scope)
+       (class translation_unit, class global_scope): New declarations
+       * src/abg-ir.cc (translation_unit::translation_unit)
+       (translation_unit::get_global_scope)
+       (translation_unit::get_loc_mgr, translation_unit::get_loc_mgr)
+       (translation_unit::is_empty, get_global_scope)
+       (get_translation_unit, is_global_scope, is_global_scope)
+       (is_decl_at_global_scope, global_scope::~global_scope): New
+       definitions.
+       (scope_decl::scope_decl, scope_decl::scope_decl)
+       (scope_decl::add_member_decl, scope_decl::get_member_decls): Move
+       to abg-ir.h, inline.
+       * src/abg-reader.h (read_file): Don't use abi_corpus in the api.
+       Rather, use translation_unit.
+       * src/abg-reader.cc (read_context::get_cur_scope): Now that we
+       have a specific instance of global_scope to represent global
+       scope, don't play games with empty scopes to detect a global
+       scope.
+       (read_context::get_translation_unit): New definition.
+       (read_context::finish_decl_creation, finish_type_decl_creation):
+       (read_input, read_file, read_location, handle_element)
+       (handle_type_decl)
+       (handle_namespace_decl, handle_qualified_type_decl)
+       (handle_pointer_type_def, handle_reference_type_def)
+       (handle_enum_type_decl, handle_typedef_decl, handle_var_decl):
+       Don't use abi_corpus anymore.  Rather, the translation unit a decl
+       belongs to is accessible from the decl itself.
+       * src/abg-writer.h (write_to_ostream): Use translation_unit in
+       this API, rather than abi_corpus.
+       * src/abg-writer.cc (write_translation_unit): Rename write_corpus
+       into this.  And stop using abi_corpus here.
+       (write_to_ostream, write_corpus, write_location, write_decl)
+       (write_type_decl, write_namespace_decl, write_qualified_type_def)
+       (write_pointer_type_def, write_reference_type_def)
+       (write_enum_type_decl, write_typedef_decl, write_var_decl): Stop
+       using abi_corpus.  Use the translation_unit that is accessible
+       from the decl being serialized, if need be.
+       * test-read-write.cc (main):  De-serialize the input into an
+       instance of translation_unit, not an abi_corpus anymore, and
+       serialize that translation_unit.
+
+2013-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Support var decl & mangled_name attributes
+       * src/abg-ir.h (decl_base::binding, decl_base::get_mangled_name)
+       (decl_base::set_mangled_name, decl_base::m_mangled_name): New
+       declarations.
+       (scope_decl::scope_decl: type_decl::type_decl)
+       (scope_type_decl::scope_type_decl, typedef_decl::typedef_decl):
+       Initialize mangled_name.
+       (namespace_decl::namespace_decl): Initialize visibility.
+       (class var_decl): New declaration.
+       * src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
+       (type_decl::type_decl, scope_type_decl::scope_type_decl):
+       Initialize mangled name.
+       (namespace_decl::namespace_decl): Initialize visibility.
+       (qualified_type_def::qualified_type_def)
+       (pointer_type_def::pointer_type_def)
+       (reference_type_def::reference_type_def): By default, set the
+       visibility to the same as for the underlying type.
+       (enum_type_decl::enum_type_decl, typedef_decl::typedef_decl):
+       Initialize mangled name.
+       (var_decl::var_decl, var_decl::operator==, var_decl::~var_decl):
+       New definitions.
+       * src/abg-reader.cc (read_visibility, read_binding, handle_var_decl): New
+       definitions.
+       (read_file): Handle var-decl elements.
+       * src/abg-writer.cc (write_location): Rename write_decl_location
+       into this.
+       (write_var_decl, write_visibility, write_binding): New definitions.
+       (write_decl, write_type_decl, write_qualified_type_def)
+       (write_pointer_type_def, write_reference_type_def)
+       (write_enum_type_decl, write_typedef_decl): Adjust to use
+       write_location.
+       * tests/data/test-read-write/test8.xml: New test input.
+       * tests/test-read-write.cc: De-serialize the above and serialize
+       it back and ensure both are equal.
+       * tests/Makefile.am: add tests/data/test-read-write/test8.xml to
+       the distribution.
+
+2013-04-02  Dodji Seketeli <dodji@redhat.com>
+
+       Don't forget to init context & visibility in decl_base
+       * src/abg-ir.cc (decl_base::decl_base): Initialize context and
+       visibility on all the overloads of the constructor.
+
+2013-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some style
+       * src/abg-ir.h (decl_base::get_scope): Really re-style.
+
+2013-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some style
+       * src/abg-ir.h (decl_base::{get_location, set_location, get_name,
+       set_name}): Re-style.
+
+2013-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Basic support for type/decl visibility
+       * src/abg-ir.h (enum decl_base::visibility)
+       (decl_base::get_visibility, decl_base::set_visibility)
+       (decl_base::m_visibility): New.
+       (decl_base::decl_base, scope_decl::scope_decl)
+       (type_decl::type_decl, enum_type_decl::enum_type_decl)
+       (typedef_decl::typedef_decl): Pass visibility.
+       * src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
+       (type_decl::type_decl, enum_type_decl::enum_type_decl)
+       (typedef_decl::typedef_decl): Pass visibility.
+       (qualified_type_def::qualified_type_def)
+       (pointer_type_def::pointer_type_def)
+       (reference_type_def::reference_type_def): Initialize visibility.
+
+2013-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       A type/decl shouldn't hold a reference on its scope
+       * src/abg-ir.h (decl_base::m_context): Make this a naked pointer.
+       (decl_base::set_scope, add_decl_to_scope): Pass the
+       scope as a naked pointer.
+       * src/abg-ir.cc (decl_base::decl_base): Initialize the context to
+       0.
+       (decl_base::set_scope, add_decl_to_scope): Pass the scope as a
+       naked pointer.
+       * src/abg-reader.cc (read_context::get_cur_scope): Return a naked
+       pointer.
+       (handle_namespace_decl): Adjust accordingly.
+
+2013-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Support typedef declarations
+       * src/abg-ir.cc (dynamic_type_hash::operator()): Handle hashing of
+       a pointer to an instance of typedef_decl.
+       (typedef_decl::typedef_decl, typedef_decl::operator==)
+       (typedef_decl::operator==, typedef_decl::get_underlying_type)
+       (typedef_decl::~typedef_decl): New definitions.
+       * src/abg-ir.h (class typedef_decl, struct typedef_decl_hash): New
+       declarations.
+       * src/abg-reader.cc (handle_typedef_decl): New definition.
+       (handle_element): Handle de-serialization of typedef-decl element.
+       * src/abg-writer.cc (write_typedef_decl): New definition.
+       (write_decl): Handle serialization of an instance of typedef_decl.
+       * tests/data/test-read-write/test7.xml: New test.
+       * tests/Makefile.am: Add it to the distribution.
+       * tests/test-read-write.cc: De-serialize the content of the new
+       test, serialize it back and diff both.
+
+2013-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless static_cast from hashing code
+       * src/abg-ir.h (scope_type_decl_hash::operator())
+       (qualified_type_def_hash::operator())
+       (pointer_type_def_hash::operator())
+       (reference_type_def_hash::operator()): Remove useless static_cast.
+
+2013-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Simplify equality operators
+       * src/abg-ir.cc (qualified_type_def::operator==)
+       (pointer_type_def::operator==, reference_type_def::operator==)
+       (enum_type_decl::operator==): Simplify the code by safely assuming
+       the underlying type is non-null.
+
+2013-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Support enum type declarations
+       * src/abg-ir.h (class enum_type_decl, struct enum_type_decl_hash):
+       New declarations.
+       * src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing
+       support for enum_type_decl.
+       (enum_type_decl::enum_type_decl)
+       (enum_type_decl::get_underlying_type)
+       (enum_type_decl::get_enumerators, enum_type_decl::~enum_type_decl)
+       (enum_type_decl::operator==): New definitions.
+       * src/abg-reader.cc (handle_enum_type_decl): New definition.
+       (handle_element): Handle "enum-decl" element.
+       * src/abg-writer.cc (write_enum_type_decl): New.
+       (write_decl): Add support to serialize enum_type_decl.
+       * tests/test-read-write.cc: De-serialize and serialize
+       data/test-read-write/test6.xml back.
+       * tests/data/test-read-write/test6.xml: New test input.
+       * tests/Makefile.am: Add it to the distribution.
+
+2013-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Fix reference-type-def serialization
+       * tests/test-read-write.cc: Really de-serialize and then serialize
+       back data/test-read-write/test5.xml, not test4.xml.  Sigh.
+       * src/abg-writer.cc (write_reference_type_def): As a result of
+       really trying to serialize reference type definitions fix the
+       serialization code here.
+
+2013-03-29  Dodji Seketeli <dodji@redhat.com>
+
+       Support reference types
+       * src/abg-ir.h (class reference_type_def, struct pointer_type_def)
+       (struct reference_type_def): New declaration.
+       (type_base_hash::operator(), type_decl_hash::operator())
+       (scope_type_decl_hash::operator())
+       (qualified_type_def_hash::operator()): Include the typeid name in
+       the hash.
+       * src/abg-ir.cc (reference_type_def::reference_type_def)
+       (reference_type_def::operator==)
+       (reference_type_def::get_pointed_to_type)
+       (reference_type_def::is_lvalue)
+       (reference_type_def::~reference_type_def): New definitions.
+       (dynamic_type_hash::operator): Hash pointer_type_def and
+       reference_type_def instances.
+       * src/abg-reader.cc (read_context::finish_decl_creation)
+       (read_context::finish_type_decl_creation)
+       (handle_reference_type_def): New definitions.
+       (read_file): Handle "reference-type-def" elements.
+       (handle_type_decl, handle_namespace_decl)
+       (handle_qualified_type_decl, handle_pointer_type_def): Use the new
+       read_context::finish_type_decl_creation or
+       read_context::finish_decl_creation.
+       * src/abg-writer.cc (write_reference_type_def): New definition.
+       (write_decl): Supporting writing a pointer to an instance of
+       reference_type_def.
+       * tests/data/test-read-write/test5.xml: New test file.
+       * tests/test-read-write.cc: (De)Serialize it.
+       * tests/Makefile.am: Add it to the build system.
+
+2013-03-28  Dodji Seketeli <dodji@redhat.com>
+
+       Support pointer types & Fix IR types equality
+       * src/abg-ir.h (location::{operator==, operator<})
+       (decl_base::operator==, scope_decl::operator==)
+       (type_base::operator==, struct type_shared_ptr_equal)
+       (type_decl::operator==, scope_type::operator==)
+       (qualified_type_def::operator==, class pointer_type_def): New
+       declarations..
+       * src/abg-ir.cc (decl_base::operator==, scope_decl::operator==)
+       (type_base::operator==, type_decl::operator==)
+       (scope_type_decl::operator==, namespace_decl::operator==)
+       (qualified_type_def::operator==)
+       (pointer_type_def::pointer_type_def, pointer_type_def::operator==)
+       (pointer_type_def::get_pointed_to_type)
+       (pointer_type_def::~pointer_type_def): New definitions.
+       * src/abg-reader.cc (handle_pointer_type_def): New definition.
+       (read_input): Handle pointer-type-def
+       elements.
+       * src/abg-writer.cc (type_shared_ptr_map):  Make this map use the
+       use type_shared_ptr_equal predicate.
+       (write_pointer_type_def): New definition.
+       (write_decl): Improve logic.  Support serializing a pointer to
+       pointer_type_def.
+       * tests/data/test-read-write/test4.xml: New test input file.
+       * tests/Makefile.am: Add tests/data/test-read-write/test4.xml to
+       the build system.
+       * tests/test-read-write.cc: (De)serialize the new test file.
+
+2013-03-27  Dodji Seketeli <dodji@seketeli.org>
+
+       Support qualified types & Misc ancillary fixes
+       * src/abg-ir.h (struct type_base_hash, struct dynamic_type_hash)
+       (struct type_shared_ptr_hash, struct scope_type_decl_hash, class
+       qualified_type_def, struct qualified_type_def_hash): New.
+       (decl_base_hash::operator()): Constify. Don't crash if the scope
+       of the decl we are hashing is null.
+       (class type_decl): Add comment at the end.
+       (type_decl_hash::operator()): Constify.  Reuse the new
+       type_base_hash hasher.
+       (class namespace_decl): Add comment.
+       * src/abg-ir.cc (qualified_type_def::qualified_type_def)
+       (qualified_type_def::~qualified_type_def)
+       (qualified_type_def::get_cv_quals)
+       (qualified_type_def::set_cv_quals)
+       (qualified_type_def::get_underlying_type)
+       (dynamic_type_hash::operator()): New function definitions.
+       * src/abg-reader.cc (handle_qualified_type_decl): New.
+       (read_file): Handle elements named "qualified-type-def".
+       (read::context::add_type_decl): Assert that
+       the type being associated to the unique ID is non-null.
+       (handle_type_decl): Fix this in the process; don't crash if some
+       attributes are not present.  Associate the unique id present in
+       the xml document with the type we just parsed.
+       (handle_namespace_decl): Add some comments.  Don't crash if the
+       name attribute is not present.
+       * src/abg-writer.cc (write_context::get_id_for_type)
+       (write_context::m_type_id_map, write_decl_location)
+       (write_qualified_type_def): New.
+       (write_decl): Handle instances of qualified_type_def.
+       (write_type_decl): Use the new write_decl_location and
+       write_context::get_id_for_type.
+       * tests/data/test-read-write/test0.xml: Update id format since we
+       are now using the new write_context::get_id_for_type to generate
+       it.
+       * tests/data/test-read-write/test1.xml: Likewise.
+       * tests/data/test-read-write/test2.xml: Likewise.
+       * tests/data/test-read-write/test3.xml: New test.
+       * tests/test-read-write.cc: Test De-serializing
+       tests/data/test-read-write/test3.xml and serializing it back.
+       Also don't bail out if we fail on one input.
+       * tests/Makefile.am: Add tests/data/test-read-write/test3.xml to the
+       distribution.
+
+2013-03-27  Benjamin Kosnik <bkoz@redhat.com>
+
+       Various autotool adjustments
+       * configure: Add.
+       * configure.ac (AM_INIT_AUTOMAKE): Use gcc versions.
+       (PKG_CHECK_MODULES): Re-use libjava/classpath solution, naming.
+       * m4/pkg.m4: Add, take from classpath.
+       * src/Makefile.am: Adjust names.
+
+2013-03-26  Dodji Seketeli <dodji@seketeli.org>
+
+       Remove the 'm_kind' member from the IR
+       * src/abg-ir.{h,cc}: Remove use of the m_kind field.  We are using
+       full blown rtti so this uselessly just clutter the code.
+
+2013-03-26  Dodji Seketeli <dodji@seketeli.org>
+
+       Fix parallel build
+       * tests/Makefile.am: Remove useless absolute reference to the
+       current directory.
+
+2013-03-26  Dodji Seketeli <dodji@seketeli.org>
+
+       Fix depth handling during the parsing
+       * src/abg-reader.cc (read_context::get_cur_scope): Remove useless
+       const overload.  Don't make this rely on m_cur_scope.  Rather, use
+       the path to the current decl (from the root element) to compute
+       the cur scope.
+       (read_context::m_cur_scope, read_context::set_cur_scope): Remove
+       these.
+       (update_read_context): Re-think logic.
+       * tests/data/test-read-write/test2.xml: Add new test input.
+       * tests/Makefile.am: Add data/test-read-write/test2.xml to the
+       distribution.
+       * tests/test-read-write.cc: Add data/test-read-write/test2.xml to
+       the harness.
+
+2013-03-25  Dodji Seketeli <dodji@seketeli.org>
+
+       Debug read-write of a type-decl in a namespace-decl
+       * abg-ir.{h,cc} (decl_base::decl_base, scope_decl::scope_decl)
+       (type_decl::type_decl, namespace_decl::namespace_decl): Do not
+       append a decl to its context from within its constructor.  It's
+       better doing that in a function that takes shared_ptrs to decl and
+       context.  That way we avoid memory management havoc.
+       (decl_base::set_scope): New private function.
+       (scope_decl::add_member_decl): Make this private.
+       (add_decl_to_scope): New function, friend of decl_base and
+       scope_decl.
+       * abg-reader.cc (read_context::get_cur_scope): Add a non-const
+       overload.
+       (handle_type_decl, handle_namespace_decl): Use add_decl_to_scope.
+       Adjust to new type_decl and namespace_decl constructor signature.
+       * src/abg-writer.cc (write_type): Emit 'id', not 'xml:id'.
+       (write_namespace_decl): Emit "namespace-decl", not
+       "namespace-decl-name", as the name of namespace element.
+       * tests/Makefile.am (test0.xml): Rename input0.xml into this.
+       (test1.xml): New test input.
+       * tests/data/test-read-write/test0.xml: Update to use 'id' as id
+       attribute, rather than xml:id.
+       * tests/data/test-read-write/test1.xml: New test.
+       * test-read-write.cc (struct InOutSpec): New
+       (main): Reorganize to give a list of input files to read and to
+       write to an output file, have the test read the input files, write
+       them, and diff the two.
+
+2013-03-22  Dodji Seketeli <dodji@seketeli.org>
+
+       Update tests/data/test-read-write/input0.xml
+       * tests/data/test-read-write/input0.xml: Make this identical to
+       how it would look like when serialized.
+
+2013-03-22  Dodji Seketeli <dodji@seketeli.org>
+
+       Debug type-decl serialization
+       * src/abg-writer.cc (do_indent): New function.
+       (write_corpus&): Use do_indent.  Don't forget to close the
+       abi-instr tag.
+       (write_type_decl): Use do_indent.  Handle null decls pointers.
+       Emit the id at the end of the element.
+       (write_namespace_decl): Use do_indent.  Handle null decls
+       pointers.
+       * tests/test-utils.{h,cc} (get_src_dir,get_build_dir): Constify
+       the returned reference to string.
+       (is_dir, ensure_dir_path_created, ensure_parent_dir_created): New
+       function definitions.
+       * tests/test-read-write.cc (main): Augment the test to serialize
+       the corpus too.
+
+2013-03-21  Dodji Seketeli <dodji@seketeli.org>
+
+       Debugged type-decl de-serialization
+       * src/abg-ir.cc (namespace_decl::~namespace_decl): Add this
+       missing virtual constructor definition.
+       * src/abg-reader.cc (read_context::{get_cur_decl,pop_decl}):
+       Return a null pointer when the decls stack is empty.
+       (update_read_context): Don't try to de-reference a NULL cur_decl.
+       (read_input): Don't try to poke at file validity here.  What was I
+       thinking.  Really test for advance_cursor to return 1, expressing
+       success.
+       * src/abg-reader.h (read_file):  Fix style.
+       * Makefile.am: Add tests sub-directory.
+       * configure.ac: Build with debugging-friendly options if the
+       ABIGAIL_DEBUG env variable is set.  Generate tests/Makefile.
+       * tests/Makefile.am: New file.
+       * tests/test-read-write.cc: Likewise.
+       * tests/test-utils.{h,cc}: Likewise.
+       * tests/data/test-read-write/input0.xml: Likewise.
+
+2013-03-21  Dodji Seketeli <dodji@seketeli.org>
+
+       Initial implementation of serialization of basic types and namespaces.
+       * src/Makefile.am: Add abg-writer.{h,cc} and abg-config.{h,cc}.
+       * src/abg-config.{h,cc}: New files.
+       * src/abg-corpus.h (abi_corpus::decls_type): New typedef.
+       (abi_corpus::{add,get_decls,get_loc_mgr}): Fix style.
+       (abi_corpus::is_empty): Declare new function.
+       * src/abg-corpus.cc (abi_corpus::add): really add the declaration
+       to the corpus.
+       (abi_corpus::is_empty): Define new function.
+       * src/abg-ir.{h,cc} (location_manager::expand_location): Consti-fy
+       this function.
+       * src/abg-reader.cc (read_file): Add a corpus parameter.
+       * src/abg-serialize.cc: Delete this file.
+       * src/abg-writer.h (write_to_ostream): Rename write into this.
+       Make it take a corpus and an ostream as parameters.
+       * abg-writer.cc: New file.
+
+2013-03-08  Dodji Seketeli <dodji@seketeli.org>
+
+       Parse type-decl and namespace-decl elements
+       * configure.ac: Add libxml2 dependencies.
+       * src/abg-corpus.{h,cc}: New files.
+       * src/abg-hash.{h,cc}: Likewise.
+       * src/abg-libxml-utils.{h,cc}: Likewise.
+       * src/abg-reader.{h,cc}: Likewise.
+       * src/abg-serialize.{h,cc}: Likewise.
+       * src/abg-writer.h: Likewise.
+       * src/Makefile.am: Build the new files above.
+       * src/abg-ir.h (class location): Add public accessors for the value, and
+       a truth operator.  Make the methods be inline.
+       (class decl_base): Renamed decl into this.  Renamed what_decl_kind
+       into what_kind. Renamed get_context into get_scope.  Add virtual
+       destructor, accessors for location and name.
+       (class {scope_decl, type_base, type_decl} ): Add virtual dtor.
+       Re-style.
+       (struct {decl_base_hash, type_decl_hash}): New hashing functors.
+       (class {scope_type_decl, namespace_decl}): Add virtual dtor.
+       * src/abg-ir.cc (location::*): Remove location definitions.  There
+       are now inline in the header.
+       (class decl_base): Renamed decl into this.  Remove most of the
+       definitions from here as their are now inline in the header.
+       (scope_decl::~scope_decl, type_base::~type_base)
+       (type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
+       definitions.
+
+2013-03-04  Dodji Seketeli <dodji@seketeli.org>
+
+       Updated hierarchy up to namespace_decl
+       * src/abg-ir.h (location):  Make the default ctor public.
+       (class decl): Declare data member and proper constructors.  Make the
+       context be a shared_ptr.  Add a kind data member to avoid RTTI for
+       now.
+       (class scope_decl): Added protected constructor to handle the kind data
+       member.
+       (class type_base): Add data members proper and clean the iface up.
+       (class type_decl, scope_type_decl, namespace_decl): Iron out
+       constructors.
+       * src/abg-ir.cc (class location): Fix style.
+       (class decl, scope_decl, type_base, type_decl, scope_type_decl)
+       (namespace_decl): Define these types.
+
+2013-03-01  Dodji Seketeli <dodji@seketeli.org>
+
+       Add missing autoconfiscation files into version control
+       * config.guess: Added to VCS.
+       * config.sub: Likewise.
+       * depcomp: Likewise.
+       * install-sh: Likewise.
+       * ltmain.sh: Likewise.
+       * missing: Likewise
+
+2013-03-01  Dodji Seketeli <dodji@seketeli.org>
+
+       Upload m4 file
+       * m4/: Import this directory into version control.
+
+2013-03-01  Dodji Seketeli <dodji@seketeli.org>
+
+       Create and expand locations
+       * src/abg-ir.h (class {location, location_manager, decl,
+       scoped_decl, type_base, type_decl, scope_type_decl): Declare new
+       types.
+       * src/abg-ir.cc (class {location, location_manager}): Define new types.
+
+2013-03-01  Dodji Seketeli <dodji@seketeli.org>
+
+       Adjust src/Makefile.am after some file rename
+       * src/Makefile.am: Update build system for renaming files from
+       abgl-* into abg-*.
+
+2013-03-01  Dodji Seketeli <dodji@seketeli.org>
+
+       Update the README file
+       * README: Update.
+
+2013-02-28  Dodji Seketeli <dodji@seketeli.org>
+
+       Initial AUTHORS and README
+       * AUTHORS:
+       * README:
+
+2013-02-28  Dodji Seketeli <dodji@seketeli.org>
+
+       Leave license stuff for later
+       * COPYING:
+
+2013-02-28  Dodji Seketeli <dodji@seketeli.org>
+
+       Initial import Abigail
+       * AUTHORS:
+       * COPYING:
+       * ChangeLog:
+       * INSTALL:
+       * Makefile.am:
+       * NEWS:
+       * README:
+       * config.h.in:
+       * configure.ac:
+       * src/Makefile.am:
+       * src/abg-ir.cc:
+       * src/abg-ir.h:
+
This page took 0.28016 seconds and 5 git commands to generate.