]> sourceware.org Git - libabigail.git/commitdiff
Automatically Update ChangeLog for 1.0
authorDodji Seketeli <dodji@redhat.com>
Sun, 5 Nov 2017 23:35:24 +0000 (00:35 +0100)
committerDodji Seketeli <dodji@redhat.com>
Wed, 8 Nov 2017 14:37:19 +0000 (15:37 +0100)
* ChangeLog: Update this file by running "make update-changelog".

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
ChangeLog

index e0ca790a478c2c0afc3fe75f003e3e6152320f7e..83427c9dac659fbed1f1f4696bcaa519474ccfbe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2017-11-06  Dodji Seketeli <dodji@redhat.com>
+
+       Automatically Update ChangeLog for 1.0
+       * ChangeLog: Update this file by running "make update-changelog".
+
+2017-11-06  Dodji Seketeli <dodji@redhat.com>
+
+       Update NEWS file for 1.0 changes
+       * NEWS: Update for 1.0 changes
+
+2017-11-06  Dodji Seketeli <dodji@redhat.com>
+
+       Bump version number to 1.0
+       * configure.ac: Bump version number to 1.0
+
+2017-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Don't make system headers depend on config.h
+       * tools/abipkgdiff.cc: Include config.h after system headers and
+       before libabigail's headers.
+
+2017-11-02  Dodji Seketeli <dodji@redhat.com>
+
+       Wire the --no-show-locs option to abidw
+       * doc/manuals/abidw.rst: Update the documentation.
+       * tests/test-annotate.cc: Now that --no-show-locs has an effect on
+       the ABIXML output, let's not use it here, because it changes the
+       output and we don't want that.
+       * tools/abidw.cc (display_usage): Fix a typo in the help string.
+       (load_corpus_and_write_abixml): Set the "show-locs" option to the
+       write_context object that we use.
+
+2017-11-02  Dodji Seketeli <dodji@redhat.com>
+
+       Allow setting options to instances of xml_writer::write_context
+       * include/abg-writer.h (create_write_context, set_show_locs)
+       (set_annotate): Declare new functions.
+       (write_corpus, write_corpus_group): Remove the output stream and
+       the annotate parameters as these can be retrieved from the
+       context.
+       * src/abg-writer.cc (write_context::m_show_locs): New data member.
+       (write_context::write_context): Initialize it.
+       (write_context::{get_show_locs, set_show_locs}): Add new member
+       functions.
+       (write_location): Take a write_context, rather than an output
+       stream.  From the context, we detect if the user did set the "show
+       loc" option and act accordingly.  Write the second overload in
+       terms of the first one.
+       (create_write_context, set_show_locs, set_annotate): Define new
+       functions.
+       (write_type_decl, write_qualified_type_def)
+       (write_pointer_type_def, write_reference_type_def)
+       (write_array_type_def, write_enum_type_decl, write_typedef_decl)
+       (write_var_decl, write_function_decl)
+       (write_class_decl_opening_tag, write_union_decl_opening_tag)
+       (write_type_tparameter, write_non_type_tparameter)
+       (write_function_tdecl, write_class_tdecl): Adjust the invocation
+       of write_location.
+       (write_corpus, write_corpus_group): Remove the output stream and
+       the annotate parameters as these can be retrieved from the
+       context.  Adjust.
+       * tools/abidw.c: (load_corpus_and_write_abixml): Create a
+       write_context object, set the 'annotate' option to it and use that
+       object to actually write out the corpus.
+
+2017-11-02  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless vertical space from src/abg-writer.cc
+       * src/abg-writer.cc (class write_context): Remove useless vertical
+       space near the end of the class definition.
+
+2017-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Add a --suppressions option to fedabipkgdiff
+       * tools/fedabipkgdiff (abipkgdiff): If a suppression file was
+       provided, pass it to the underlying abipkgdiff tool.
+       (build_commandline_args_parser): Parse the new --suppressions
+       option.
+       * docs/manuals/fedabipkgdiff.rst: Add documentation for the new
+       --suppressions option.
+
+2017-10-16  Dodji Seketeli <dodji@redhat.com>
+
+       Handle exceptions when global_config is not yet set in fedabipkgdiff
+       * tools/fedabipkgdiff: When handling an exception, if the
+       global_config object is not yet set then just let the exception
+       through.
+
+2017-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a indentation warning from GCC 7.2.1
+       * tools/abipkgdiff.cc (compare): In the overload of elf_file, fix
+       a mis-indentation pointed out by a GCC 7.2.1 warning.
+
+2017-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup a switch-case logic to avoid a GCC 7.2.1 warning
+       * src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a
+       switch case to make the form support more what we meant, and shut
+       down a GCC 7.2.1 warning.
+
+2017-10-09  Mark Wielaard <mark@klomp.org>
+
+       Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc.
+       * src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading
+       indentation.
+
+2017-10-06  Dodji Seketeli <dodji@redhat.com>
+
+       Add --impacted-changes option to kmidiff
+       * doc/manuals/kmidiff.rst: Document the new --impacted-changes
+       option.
+       * tools/kmidif.cc (options::show_impacted_interfaces): Add new
+       data member.
+       (options::options): Initialize the new data member to false.
+       (display_usage): Add a description string for the new
+       --impacted-changes option.
+       (parse_command_line): Parse the new --impacted-changes option.
+       (set_diff_context): Update the 'show-impacted-interface' property
+       accordingly.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Add --full-impact option to kmidiff
+       * doc/manuals/kmidiff.rst: Add documentation for the new
+       --full-impact|-f option.
+       * tools/kmidiff.cc (options::leaf_changes_only): Add new data
+       member.
+       (option::option): Initialize the new data member.
+       (display_usage): Add a documentation string for the new
+       --full-impact|-f option.
+       (parse_command_line): Parse the new --full-impact|-f option.
+       (set_diff_context): Set the diff context appropriately.
+
+2017-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Add a --leaf-changes-only option to abipkgdiff
+       * doc/manuals/abipkgdiff.rst: Add documentation for the new
+       --leaf-change-only, --impacted-interfaces and --full-impact
+       options.
+       * tools/abipkgdiff.cc (options::{leaf_changes_only,
+       show_impacted_interfaces, show_full_impact_report): Add new data
+       members.
+       (options::options): Initialize them.
+       (display_usage): Add help strings for the new --leaf-change-only,
+       --impacted-interfaces and --full-impact|-f options.
+       (set_diff_context_from_opts): Set the diff context for the
+       'leaf-changes-only' and 'show-impacted-interfaces' flags.
+       (parse_command_line): Parse the --leaf-change-only,
+       --impacted-interfaces and --full-impact options.  Handle the case
+       where the --linux-kernel-abi-whitelist|-w option is given a
+       whitelist *package*.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
+       New test output reference.
+       * tests/test-diff-pkg.cc (in_out_spec): Compare
+       data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and
+       data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the
+       new --leaf-changes-only and --impacted-interfaces options, using
+       the new output reference above.
+       * tests/data/Makefile.am: Add the new test material to source
+       distribution.
+
+2017-08-02  Dodji Seketeli <dodji@redhat.com>
+
+       Initial implementation of a --leaf-changes-only option to abidiff
+       * doc/manuals/abidiff.rst: Add documentation the new
+       --leaf-changes-only and --impacted-interfaces options.
+       * src/abg-leaf-reporter.cc: New file.
+       * src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to
+       source distribution.
+       * include/abg-fwd.h (get_var_size_in_bits)
+       (function_decl_is_less_than): Declare new functions.
+       (get_name): Add new overload for type_or_decl_base*.
+       * include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal)
+       (type_or_decl_base_comp): Define new types.
+       (artifact_sptr_set_type, artifact_ptr_set_type): Define new
+       typedefs.
+       * include/abg-comp-filter.h: Update copyright year.
+       (has_basic_type_name_change): Add new function declaration.
+       * src/abg-comp-filter.cc (decl_name_changed): Take a
+       type_or_decl_base rather than just a decl.  Add an overload for
+       diff*.
+       (has_basic_type_name_change): Define new function.
+       * include/abg-comparison.h: Update copyright year.
+       (string_diff_ptr_map): Define this new typedef.
+       (class diff_maps): Define this new class.
+       (diff_context::{set_corpora}): Remove this member function.
+       (diff_context::{set_corpus_diff, get_corpus_diff,
+       show_leaf_changes_only, show_impacted_interfaces,
+       forbid_visiting_a_node_twice_per_interface}): Declare these new
+       member functions.
+       (diff_node_visitor::priv_): Add a new pimpl data member.
+       (diff_node_visitor::{diff_node_visitor, get_visiting_kind,
+       set_visiting_kind}): Turn these into out-of-line member functions.
+       (diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new
+       member functions.
+       (class {scope_diff, function_type_diff, corpus_diff}): Add class
+       leaf_reporter as a friend.
+       (corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new
+       member functions.
+       (diff::{visiting_a_node_twice_is_forbidden_per_interface,
+       parent_interface_node}): Define new member functions.
+       (is_diff_of_basic_type): Return a type_decl_diff* rather than just
+       a bool.
+       (is_enum_diff, is_array_diff, is_function_type, is_typedef_diff)
+       (is_corpus_diff): Declare new functions.
+       (corpus_diff::diff_stats::{num_leaf_changes,
+       num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new
+       member functions.
+       (is_distinct_diff): Declare new function.
+       * include/abg-reporter.h: Forward-declare "class diff_maps".
+       (reporter_base::diff_to_be_reported): Declare a new virtual member
+       function.
+       (reporter_base::{report_local_typedef_changes,
+       report_local_reference_type_changes,
+       report_local_function_type_changes}): Declare new member
+       functions.
+       (class leaf_reporter): Define new type.
+       * src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define
+       new types.
+       (diff_artifact_set_map_type): Define new typedef.
+       (diff_context::priv::{first_corpus_, second_corpus_}): Remove
+       these data members.
+       (diff_context::priv::{corpus_diff_, leaf_changes_only_,
+       reset_visited_diffs_for_each_interface_,
+       show_impacted_interfaces_}): Add new data members.
+       (diff_context::priv::priv): Adjust.
+       (corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new
+       data member.
+       (corpus_diff::diff_stats::priv::{num_leaf_changes,
+       num_leaf_changes_filtered_out}): Add new data members.
+       (corpus_diff::priv::count_leaf_changes): Define new member
+       function.
+       (sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor)
+       (is_diff_of_global_decls): Declare new functions.
+       (function_comp::operator()): Factorize this out into the new
+       function abigail::ir::function_decl_is_less_than.
+       * src/abg-ir.cc (get_var_size_in_bits)
+       (function_decl_is_less_than): Define new functions.
+       (get_name): Define new overload for type_or_decl_base*.
+       * src/abg-comparison.cc (is_enum_diff, is_typedef_diff)
+       (is_array_diff, is_function_type_diff, is_corpus_diff)
+       (is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls):
+       Define new functions.
+       (is_union_diff): Fix comment.
+       (diff_context::forbid_visiting_a_node_twice_per_interface): Define
+       new member functions.
+       (diff_context::set_corpus_diff, get_corpus_diff)
+       (diff_context::show_leaf_changes_only)
+       (diff_context::visiting_a_node_twice_is_forbidden_per_interface)
+       (diff_context::show_impacted_interfaces): Define new member
+       functions.
+       (diff_context::get_reporter): Create the reporter that matches
+       what diff_context::show_leaf_changes_only says.
+       (diff_node_visitor::priv): Define a new type.
+       (diff_node_visitor::{diff_node_visitor, get_visiting_kind,
+       set_visiting_kind, or_visiting_kind,
+       set_current_topmost_iface_diff, get_current_topmost_iface_diff}):
+       Define new out-of-line member functions.
+       (struct diff_maps::priv): Define new type.
+       (diff_maps::{diff_maps, get_type_decl_diff_map,
+       get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map,
+       get_union_diff_map, get_typedef_diff_map, get_array_diff_map,
+       get_function_type_diff_map, get_function_decl_diff_map,
+       get_var_decl_diff_map, get_reference_diff_map,
+       get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node,
+       lookup_impacted_interfaces}): Define member functions.
+       (corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new
+       member functions.
+       (struct leaf_diff_node_marker_visitor): Define new type.
+       (corpus_diff::apply_filters_and_suppressions_before_reporting):
+       Mark diff nodes in here.
+       (corpus_diff::traverse): Appropriately set the current topmost
+       interface into the visitor before visiting a diff node.
+       (compute_diff): In the overload for corpus_sptr, adjust to reflect
+       that we are now storing the corpus_diff in the diff context.
+       (is_diff_of_basic_type): Return a type_decl_diff*, not just a
+       bool.
+       (corpus_diff::priv::count_leaf_changes): Define a new member
+       function.
+       (corpus_diff::diff_stats::{num_leaf_changes,
+       num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new
+       member functions.
+       (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
+       new corpus_diff::priv::count_leaf_changes to compute the number of
+       leaf changes.
+       (corpus_diff::priv::emit_diff_stats): Emit the report about leaf
+       type changes when necessary.
+       * src/abg-reporter-priv.h (report_mem_header): Declare new
+       overload.
+       (maybe_show_relative_offset_change,): Pass the var_diff_sptr
+       parameter by const reference.
+       (represent): Pass the var_diff_sptr parameter by const reference
+       and take a new "local-only" flag.
+       (maybe_show_relative_size_change)
+       (maybe_report_interfaces_impacted_by_diff): Declare new functions.
+       * src/abg-default-reporter.cc: Adjust copyright year.
+       (default_reporter::{report_local_typedef_changes,
+       report_local_qualified_type_changes,
+       report_local_reference_type_changes,
+       report_local_function_type_changes}): Define new member functions.
+       (default_reporter::report): Adjust.  Add an overload for
+       function_type_diff&. In the overload for qualified_type_diff, if
+       the name of the underlying type changed, do not detail the changes
+       any further.  In the overload for function_decl_diff, Adjust to
+       use the new diff_context::get_{first, second}_corpus member
+       function.  In the overload for enum_diff, call the new
+       maybe_report_interfaces_impacted_by_diff that is advertised below.
+       * src/abg-reporter-priv.cc (represent): Adjust the overload for
+       var_diff_sptr.
+       (report_mem_header): Define new overload.
+       (maybe_show_relative_size_change)
+       (maybe_report_interfaces_impacted_by_diff): Define new functions.
+       (reporter_base::diff_to_be_reported): Define new member function.
+       (maybe_show_relative_offset_change): Pass the var_diff_sptr
+       parameter by const reference.
+       (represent): In the overload for var_diff_sptr, pass the
+       var_diff_sptr parameter by reference.  Take a 'local_only' flag.
+       Iisplay type changes only if we are not displaying "local changes
+       only".  Display size changes of data members too, when in
+       "local-only" mode.
+       * src/abg-suppression.cc (sonames_of_binaries_match)
+       (names_of_binaries_match): Adjust.
+       * tools/abidiff.cc (options::{leaf_changes_only,
+       show_impacted_interfaces}): Add new data members.
+       (display_usage): Emit usage string for the new --leaf-changes-only
+       and --impacted-interfaces options.
+       (parse_command_line): Parse the new --leaf-changes-only and the
+       --impacted-interfaces options.
+       (set_diff_context_from_opts): Set the 'show-leaf-changes' and the
+       'show-impacted-interfaces' flags.
+       * tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New
+       test input.
+       * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New
+       test reference output.
+       * tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source
+       code of the new test inputs.
+       * tests/test-diff-filter.cc (in_out_specs): Use the new test
+       inputs above in this harness.
+       * tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input.
+       * tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test
+       reference output.
+       * tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of
+       the new test inputs.
+       * tests/data/test-diff-suppr/test35-leaf.suppr: Suppression
+       specification to use for the test35 test.
+       * tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input.
+       * tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise.
+       * tests/data/test-diff-suppr/test36-leaf-report-0.txt: New
+       reference test output.
+       * tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of
+       test input above.
+       * tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise.
+       * tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs
+       above in this harness.
+       * tests/data/Makefile.am: Add the new test inputs above to source
+       distribution.
+
+2017-07-17  Dodji Seketeli <dodji@redhat.com>
+
+       Allow several kinds of reports to be emitted
+       * include/Makefile.am: Add the new abg-reporter.h header file to
+       source distribution.
+       * include/abg-comparison.h: Include the new abg-reporter.h header
+       file.
+       (diff_context::{g,s}et_reporter): Declare new accessors.
+       ({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this
+       be a struct rather than a class.
+       ({decl_diff_base, class_diff, scope_diff, function_type_diff,
+       corpus_diff}): Declare default_reporter a friend class of these.
+       * include/abg-reporter.h: New file.
+       * src/Makefile.am: Add abg-comparison-priv.h,
+       abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to
+       source distribution.
+       * src/abg-comparison-priv.h: New file.
+       * src/abg-comparison.cc (sort_enumerators)
+       (sort_changed_enumerators, sort_data_members)
+       (sort_string_function_ptr_map)
+       (sort_string_function_decl_diff_sptr_map)
+       (sort_string_var_diff_sptr_map, sort_string_elf_symbol_map)
+       (sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map)
+       (sort_unsigned_data_member_diff_sptr_map)
+       (sort_string_diff_sptr_map, sort_string_base_diff_sptr_map)
+       (sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map)
+       (sort_string_parm_map, get_leaf_type, sort_enumerators)
+       (sort_changed_enumerators): Make these functions non-static and
+       move them at the beginning of the file.  These functions are now
+       declared in abg-compared-priv.h so they can be shared privately
+       with other files in src/.
+       (diff_context::{g,s}et_reporter): Define new accessors.
+       ({diff_context, diff, type_diff_base, decl_diff_base,
+       distinct_diff, pointer_diff, array_diff, reference_diff,
+       qualified_type_diff, enum_diff, class_or_union_diff, class_diff,
+       base_diff, scope_diff, fn_parm_diff, function_type_diff,
+       function_decl_diff, type_decl_diff, typedef_diff,
+       translation_unit_diff, corpus_diff::diff_stats,
+       corpus_diff}::priv)
+       (diff_less_than_functor, enumerator_value_comp)
+       (changed_enumerator_comp, base_spec_comp, base_diff_comp)
+       (data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp)
+       (elf_symbol_comp, function_comp, function_decl_diff_comp)
+       (var_diff_sptr_comp): Move these type definitions to
+       abg-comparison-priv.h
+       (report_size_and_alignment_changes, report_loc_info)
+       (maybe_report_diff_for_member, maybe_report_diff_for_symbol)
+       (represent, represent_data_member)
+       (maybe_show_relative_offset_change, represent)
+       (report_size_and_alignment_changes, report_loc_info)
+       (report_name_size_and_alignment_changes, report_mem_header)
+       (maybe_report_diff_for_member, maybe_report_diff_for_symbol)
+       (show_linkage_name_and_aliases): Move these definitions to
+       abg-reporter-priv.cc.
+       ({distinct_diff, var_diff, pointer_diff, array_diff,
+       reference_diff, qualified_type_diff, enum_diff,
+       class_or_union_diff, class_diff, base_diff, union_diff,
+       scope_diff, fn_parm_diff, function_type_diff, type_decl_diff,
+       typedef_diff, corpus_diff}::report): Use the reporter object to
+       report about the changes carried by the the current diff node.
+       * src/abg-default-reporter.cc: New file.
+       * src/abg-reporter-priv.h: Likewise.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright year to tools/abidiff.cc
+       * tools/abidiff.cc: Update copyright year.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing comment to type declaration
+       * include/abg-comparison.h (struct diff_sptr_hasher): Add missing
+       comment.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes in abg-writer.cc
+       * src/abg-writer.cc (type_hasher): Add comment.
+       (write_context::record_decl_as_emitted): Remove useless newline.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       Initialize naked canonical type
+       * src/abg-ir.cc (type_base::priv::priv): Initialize the naked
+       canonical type data member.
+
+2017-10-04  Dodji Seketeli <dodji@redhat.com>
+
+       [abixml writer] Use an unordered set when appropriate
+       * src/abg-writer.cc (write_context::m_emitted_decl_only_set):
+       Renamed m_emitted_decl_only_map into this and make the type be a
+       set, rather than a map.
+       (write_context::{record_decl_only_type_as_emitted,
+       decl_only_type_is_emitted}): Adjust.
+
+2017-09-29  Dodji Seketeli <dodji@redhat.com>
+
+       [abixml writer] Store pointers to emitted types rather than type-ids
+       * src/abg-writer.cc (type_ptr_set_type): Declare new typedef.
+       (writer_context::m_emitted_type_id_map): Remove this data member.
+       (writer_context::m_emitted_type_set): Add a new data member.
+       (writer_context::{record_type_id_as_emitted, type_id_is_emitted,
+       clear_emitted_types_map}): Remove these member functions.
+       (writer_context::{record_type_as_emitted, type_is_emitted}): Use
+       the new m_emitted_type_set data member above.
+
+2017-09-27  Dodji Seketeli <dodji@redhat.com>
+
+       Use an unordered map for canonical DIE offsets
+       * src/abg-dwarf-reader.cc
+       (read_context::canonical_type_die_offsets_): Renamed the
+       canonical_type_die_vecs_ data member into this.
+       (read_context::canonical_decl_die_offsets_): Renamed the
+       canonical_decl_die_vecs_ data member into this.
+       (read_context::{initialize, compute_canonical_die_offset,
+       compute_canonical_die, get_canonical_die,
+       get_or_compute_canonical_die, set_canonical_die_offset,
+       get_canonical_die_offset}): Adjust.
+
+2017-09-27  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 22190 - crash in read_context::get_or_compute_canonical_die
+       * src/abg-dwarf-reader.cc:
+
+2017-09-27  Dodji Seketeli <dodji@redhat.com>
+
+       Remove redundant (useless) typedef declaration
+       * src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two
+       instances of this typedef declaration, remove one.
+
+2017-09-27  Dodji Seketeli <dodji@redhat.com>
+
+       Renamed offset_offset_map type name into offset_offset_map_type
+       * src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed
+       offset_offset_map into this.
+       (read_context::{primary_die_parent_map_,
+       alternate_die_parent_map_, type_section_die_parent_map_}): Adjust
+       the type of these data members.
+       (read_context::{die_parent_map, type_section_die_parent_map}):
+       Adjust the type of these member functions.
+       (read_context::{build_die_parent_relations_under,
+       get_parent_die}): Adjust for the type name in these functions.
+
+2017-09-27  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing newlines to kmidiff's usage strings
+       * tools/kmidiff.cc (display_usage): Add newlines after the lines
+       for --vmlinux1 and --vmlinux2.
+
+2017-09-21  Dodji Seketeli <dodji@redhat.com>
+
+       22160 - Annotate state flag unitialized in abidw
+       * tools/abidw.cc (options::options): Initialize the annotate data
+       member.
+
+2017-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Don't crash on classes that differ in their virtual member fn count
+       * src/abg-ir.cc (equals): In the overload for class_decl, when we
+       detect that the virtual member function counts are different, get
+       out, even when we are being asked about the kind of the change.
+
+2017-09-18  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid adding the same data member twice in the DWARF reader
+       * src/abg-dwarf-reader.cc (add_or_update_class_type): After a we
+       try to create a data member type, look *again* if the data member
+       wasn't added recursively by the creation of the data member type.
+
+2017-09-11  Mark Wielaard <mark@klomp.org>
+
+       Bug 22075 - data_member_diff_comp forgets data members names
+       * src/abg-comparison.cc (data_member_diff_comp): Make the
+       comparison take the qualified name of the data member into
+       account.  Also, if the initial offset and qualified names of the
+       data members of the diff nodes are equal, consider the offset and
+       qualified names of the new data members.
+
+2017-09-11  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 22122 - Fail to represent 'const array'
+       * src/abg-dwarf-reader.cc (die_is_array_type): Define new static
+       function.
+       (die_is_pointer_or_reference_type): Also test that the DIE can be
+       an array.
+       * tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input.
+       * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output.
+       * tests/data/Makefile.am: Add the two new test files above to
+       source distribution.
+       * tests/test-read-dwarf.cc (in_out_specs): Run this test harness
+       over the new test input.
+
+2017-09-08  Dodji Seketeli <dodji@redhat.com>
+
+       Finer detection of local changes of var_decl type
+       * src/abg-ir.cc (equals): In the var_decl overload detect size
+       changes of type as being a local change.
+
+2017-09-08  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-fwd.h (get_pretty_representation): Add missing white
+       space.
+       * src/abg-ir.cc (get_name): Fix typo in comment.
+
+2017-09-02  Mark Wielaard <mark@klomp.org>
+
+       readdir_r() is deprecated, use readdir().
+       * src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead
+       of readdir_r().
+
+2017-09-02  Mark Wielaard <mark@klomp.org>
+
+       Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t.
+       * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
+       Declare expr_len as uint64_t and value as int64_t.
+
+2017-08-28  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 22015 - Failing to return global scope of a DIE in certain cases
+       * src/abg-dwarf-reader.cc (get_scope_for_die): If the translation
+       unit of the parent die hasn't yet been constructed, then return
+       the global scope of the current translation unit.
+       * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New
+       binary test input.
+       * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+       New reference test output.
+       * tests/data/Makefile.am: Add the new test materials above to
+       source distribution.
+       * tests/test-read-dwarf.cc (in_out_specs): Add the new test input
+       to the test suite.
+
+2017-07-17  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some make distcheck failures
+       * tests/data/Makefile.am: Add
+       test-diff-dwarf/test42-PR21296-libgcc.so,
+       test-diff-dwarf/test42-PR21296-libclang.so,
+       test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source
+       distribution.  Also look for test-diff-filter/test39* tests inputs
+       in the test-diff-filter/test39/ directory.
+
+2017-07-17  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid crashing when the elf file could not be read
+       * src/abg-dwarf-reader.cc
+       (read_context::elf_architecture_is_ppc64): Do not crash if the elf
+       handle is nil.
+
+2017-07-10  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected
+       * include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist):
+       Declare new function.
+       (get_binary_paths_from_kernel_dist): Re-organize order of
+       parameters.
+       (file_is_kernel_package, file_is_kernel_debuginfo_package): Make
+       the file_path parameter be const.
+       (build_corpus_group_from_kernel_dist_under): Take an additional
+       debug_info_root parameter.
+       * src/abg-tools-utils.cc (file_is_kernel_package)
+       (file_is_kernel_debuginfo_package): Const-ify the file_name
+       parameter.
+       (find_vmlinux_path): Define new static function.
+       (get_binary_paths_from_kernel_dist): Re-organize the order of
+       parameters.  The debug_info_root_path parameter is now an input
+       parameter.
+       (get_vmlinux_path_from_kernel_dist): Define new function.
+       (get_binary_paths_from_kernel_dist): Adjust invocation of
+       get_binary_paths_from_kernel_dist.
+       (build_corpus_group_from_kernel_dist_under): Take an additional
+       debug_info_root parameter.
+       * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
+       Adjust invocation to build_corpus_group_from_kernel_dist_under.
+       * tools/abipkgdiff.cc (create_maps_of_package_content):  Don't map
+       the content of a Linux Kernel package.
+       (compare_prepared_userspace_packages)
+       (compare_prepared_linux_kernel_packages, compare_prepared): Define
+       new functions.
+       (compare): Use the new functions above here.
+       * tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust
+       the invocation of get_binary_paths_from_kernel_dist.
+       (main): Adjust the invocation of
+       build_corpus_group_from_kernel_dist_under.  Make sure that a
+       kernel package is accompanied by a debug info package.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support up to two --wp options for abipkgdiff
+       * doc/manuals/abipkgdiff.rst: Update the documentation to say that
+       --wp can be provided twice, but not more than that.
+       * tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename
+       kabi_whitelist_package to this, and make be of vector<string>
+       type.
+       (package::erase_extraction_directories): Erase the white list
+       package extracted data.
+       (maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust.
+       (main): Make sure there is no more than 2 --wp on the command
+       line.  Associate a white list package to each kernel package on
+       the command line.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       Fix support of the --wp option of abipkgdiff
+       * tools/abipkgdiff.cc (parse_command_line): Consider the absolute
+       path of the package given in argument to --wp.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       Use shorter lines in abipkgdiff.cc
+       * tools/abipkgdiff.cc (parse_command_line): Use shorter lines
+       here.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing space in abipkgdiff error message
+       * tools/abipkgdiff.cc (extract_package): Add missing space here.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       Replace --lkaw with -w and --lkaw-pkg with --wp
+       * doc/manuals/abipkgdiff.rst: Adjust the documentation.
+       * tools/abipkgdiff.cc (display_usage): Adjust the usage string.
+       (parse_command_line): Parse -w instead of --lkaw and --wp
+       insteadof --lkaw-pkg.
+
+2017-07-11  Dodji Seketeli <dodji@redhat.com>
+
+       speed up class type lookup in a corpus
+       * src/abg-ir.cc (lookup_class_type): In the overload that looks
+       for a class name denoted by an interned_string in the corpus, do
+       not look for the class in the translation units when the type
+       wasn't found in the type map of the corpus.
+       (maybe_update_types_lookup_map): Remove the
+       erase_if_exists_already parameter and the code that uses it.
+       (lookup_class_type_through_translation_units): Remove this
+       function that is now useless.
+
+2017-07-06  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors
+       * include/abg-dwarf-reader.h (status_to_diagnostic_string):
+       Declare new function.
+       * src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define
+       new function.
+       * tools/abipkgdiff.cc (compare): Take a new detailed_error_status
+       parameter.
+       (compare_task::perform): Get the details of the error, in case the
+       status of the comparison is ABIDIFF_ERROR.
+
+2017-07-05  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21153 - abipkgdiff reports undetermined interface subtype changes
+       * src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified
+       type has an empty string as reprsentation for its qualifier.
+       * src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to
+       comply with what is done in get_name_of_qualified_type.  Adjust
+       comment too.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+       * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
+       New reference test output.
+       * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New
+       test binary input.
+       * tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise.
+       * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise.
+       * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise.
+       * tests/data/Makefile.am: Add the new test inputs to source distribution.
+       * tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on
+       the new test inputs above.
+
+2017-07-03  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in comments
+       * src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in
+       a command.
+
+2017-07-03  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a typo when reporting size change wrt a decl-only class
+       * src/abg-comparison.cc (report_size_and_alignment_changes): Fix
+       typo.
+
+2017-07-03  Dodji Seketeli <dodji@redhat.com>
+
+       Better handle decl-only classes being different from their definition
+       * src/abg-comparison.cc (function_decl_diff::report): Don't report
+       possible vtable changes between a decl-only class and its
+       definition.
+       * src/abg-ir.cc (type_base::get_canonical_type_for): Consider that
+       a decl-only class is different from its definition when comparing
+       types for the purpose of type canonicalization.
+       (equals): In the class_or_union overload, only consider the global
+       decl_only_class_equals_definition() property to know when to
+       consider that a decl-only class is different from its definition
+       when comparing two classes.
+       * src/abg-reader.cc (build_class_decl): Read the size property of
+       a class, even if it's a decl-only class.
+       * src/abg-writer.cc (write_class_decl_opening_tag): Write size
+       property of types even if the types are decl-only classes.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Likewise.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Likewise.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Likewise.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+       Likewise.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+       Likewise.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2017-06-28  Dodji Seketeli <dodji@redhat.com>
+
+       Don't add empty translation unit to corpus
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
+       A translation unit DIE that has no child DIE shall not be added to
+       the current ABI corpus.
+
+2017-06-27  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility
+       * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a
+       missing break statement.
+
+2017-06-26  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21630 - A this pointer DIE can be const
+       * src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE
+       is not a DW_TAG_pointer_type then don't crash.
+
+2017-06-23  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21629 - equivalent DIEs must be of the same DIE source
+       * src/abg-dwarf-reader.cc (compare_dies): Don't propagate
+       a canonical DIE to a DIE that comes from a different source.
+
+2017-06-22  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21627 - Libabigail doesn't consider translation unit compile dir
+       *if* that translation unit has already been seen in the current
+       binary, instead of creating a new one altogether.
+       This patch doesn't carry a regression test as the problem was found
+       while running the
+       https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py
+       script over the Fedora 25 critpath packages.
+       The patch does however update existing reference outputs of existings
+       tests where appropriate.
+       * include/abg-ir.h (translation_unit::{get_compilation_dir_path,
+       set_compilation_dir_path, get_absolute_path}):
+       * src/abg-corpus.cc (corpus::add): Use the new
+       translation_unit::get_absolute_path() as the key for the tu path
+       -> tu map.
+       * src/abg-dwarf-reader.cc
+       (read_context::resolve_declaration_only_classes):  Use the new
+       translation_unit::get_absolute_path().
+       (build_translation_unit_and_add_to_ir): Set the compilation
+       directory of the translation unit.
+       * src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_,
+       abs_path_}):
+       * src/abg-ir.cc (translation_unit::set_path): Update comment.
+       (translation_unit::{get_compilation_dir_path,
+       set_compilation_dir_path, get_absolute_path}): Define new member
+       functions.
+       * src/abg-reader.cc (read_translation_unit): Take the new
+       'comp-dir-path' attribute into account.
+       * src/abg-writer.cc (write_translation_unit): Emit the new
+       'comp-dir-path' attribute.
+       * tests/data/test-annotate/libtest23.so.abi: Adjust.
+       * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-annotate/test0.abi: Adjust.
+       * tests/data/test-annotate/test1.abi: Adjust.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-annotate/test2.so.abi: Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-annotate/test3.so.abi: Adjust.
+       * tests/data/test-annotate/test4.so.abi: Adjust.
+       * tests/data/test-annotate/test5.o.abi: Adjust.
+       * tests/data/test-annotate/test6.so.abi: Adjust.
+       * tests/data/test-annotate/test7.so.abi: Adjust.
+       * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test0.abi: Adjust.
+       * tests/data/test-read-dwarf/test1.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test3.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test4.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test5.o.abi: Adjust.
+       * tests/data/test-read-dwarf/test6.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test7.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2017-05-04  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map,
+       die_wip_function_types_map, types_to_canonicalize,
+       tu_die_imported_unit_points_map, die_parent_map,
+       load_kernel_symbol_table}): Add missing space to statement.
+       (get_parent_die): Likewise.
+       (build_enum_type): Fix typo in comment.
+       (e_machine_to_string, get_version_definition_for_versym)
+       (lookup_public_function_symbol_from_elf)
+       (lookup_public_variable_symbol_from_elf)
+       (lookup_data_tag_from_dynamic_segment, die_is_declaration_only)
+       (die_is_reference_type, die_function_type_is_method_type): Fix
+       indentation.
+       (read_context::{resolve_declaration_only_classes,
+       fixup_functions_with_no_symbols,
+       load_symbol_maps_from_symtab_section, load_dt_soname_and_needed,
+       load_elf_architecture, load_elf_properties,
+       maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address,
+       address_is_in_opd_section, load_elf_architecture,
+       build_die_parent_maps}): Likewise.
+       (op_pushes_constant_value, op_manipulates_stack): Use the
+       dwarf_expr_eval_context::push method.
+       (op_is_control_flow, die_return_and_parm_names_from_fn_type_die)
+       (die_function_signature, die_pretty_print_type)
+       (get_default_array_lower_bound)
+       (build_translation_unit_and_add_to_ir, build_enum_type)
+       (add_or_update_class_type, build_function_type)
+       (build_function_decl, build_ir_node_from_die)
+       (lookup_public_function_symbol_from_elf): Fix indentation.
+       * src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space.
+
+2017-05-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix doc glitch in abidiff.rst
+       * doc/manuals/abidiff.rst: Fix glitch.
+
+2017-06-12  Dodji Seketeli <dodji@redhat.com>
+
+       Symbols with the same zero value are not aliases
+       * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
+       Do not consider symbols with zero value as being aliases.
+       * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
+       * tests/data/test-diff-filter/test20-inline-report-1.txt:
+       Likewise.
+       * test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test
+       binary input.
+       * tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o:
+       Likewise.
+       * tests/data/Makefile.am: Add the new test material to source
+       distribution.
+       * tests/test-diff-filter.cc (in_out_specs): Run the test harness
+       on the new test input above.
+       * tests/data/test-diff-dwarf/test5-report.txt: Adjust.
+       * tests/data/test-diff-filter/test9-report.txt: Adjust.
+       * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
+       * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
+
+2017-06-12  Dodji Seketeli <dodji@redhat.com>
+
+       Support ELF symbol visibility property
+       * include/abg-ir.h (enum elf_symbol::visibility): Define new enum.
+       (elf_symbol::{elf_symbol, create}): Take a visibility parameter.
+       (elf_symbol::{set, get}_visibility): Declare new accessors.
+       (string_to_elf_symbol_binding): Declare new function.
+       * src/abg-ir.cc (elf_symbol::priv::visibility_): New data member.
+       (elf_symbol::priv::priv): Adjust.
+       (elf_symbol::elf_symbol): Take a visibility parameter.
+       (elf_symbol::create): Likewise
+       (elf_symbol::{s,g}et_visibility): Define new accessors.
+       (elf_symbol::is_public): Adjust.
+       (operator<<(std::ostream&, elf_symbol::visibility)): Define new
+       operator.
+       (string_to_elf_symbol_visibility): Define new function.
+       * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define
+       new static function.
+       (lookup_symbol_from_sysv_hash_tab)
+       (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
+       (create_default_var_sym, create_default_fn_sym): Adjust.
+       * src/abg-reader.cc (read_elf_symbol_binding): Define new
+       function.
+       (build_elf_symbol): Adjust.
+       * src/abg-writer.cc (write_elf_symbol_visibility): Define new
+       function.
+       * tests/data/test-annotate/libtest23.so.abi: Adjust.
+       * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-annotate/test0.abi: Adjust.
+       * tests/data/test-annotate/test1.abi: Adjust.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test2.so.abi: Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-annotate/test3.so.abi: Adjust.
+       * tests/data/test-annotate/test4.so.abi: Adjust.
+       * tests/data/test-annotate/test5.o.abi: Adjust.
+       * tests/data/test-annotate/test6.so.abi: Adjust.
+       * tests/data/test-annotate/test7.so.abi: Adjust.
+       * tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test0.abi: Adjust.
+       * tests/data/test-read-dwarf/test1.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test3.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test4.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test5.o.abi: Adjust.
+       * tests/data/test-read-dwarf/test6.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test7.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+       * tests/data/test-read-write/test26.xml: Adjust.
+       * tests/data/test-read-write/test27.xml: Adjust.
+       * tests/data/test-read-write/test28-without-std-fns-ref.xml:
+       Adjust.
+       * tests/data/test-read-write/test28-without-std-vars-ref.xml:
+       Adjust.
+
+2017-06-09  Dodji Seketeli <dodji@redhat.com>
+
+       Filter top cv qualifier changes on function parameter types
+       * include/abg-comparison.h (enum diff_category): Add a new
+       FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator.  "Or" the
+       enumerator to the EVERYTHING_CATEGORY enumerator.
+       * src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define
+       new static function.
+       (categorize_harmless_diff_node): Categorize changes to top cv
+       qualifiers on function parameter types into the new
+       FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
+       * src/abg-comparison.cc (get_default_harmless_categories_bitmap):
+       Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the
+       set of harmless categories.
+       (operator<<(ostream&, diff_category)): Adjust to serialize
+       the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
+       * tests/data/test-diff-filter/libtest40-v0.so: New test input binary.
+       * tests/data/test-diff-filter/libtest40-v1.so: Likewise.
+       * tests/data/test-diff-filter/test40-report-0.txt: New test
+       reference output.
+       * tests/data/test-diff-filter/test40-v0.cc: Source code of the
+       test binary above.
+       * tests/data/test-diff-filter/test40-v1.cc: Likewise.
+       * tests/data/Makefile.am: Add the new test material above to
+       source distribution.
+       * tests/test-diff-filter.cc (in_out_specs): Add new binaries to
+       compare.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
+       Adjust.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
+       Likewise.
+
+2017-05-28  Dodji Seketeli <dodji@redhat.com>
+
+       Do not report about voffset when it's not set in debug info
+       * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
+       Initialize the virtual offset to -1.
+       * src/abg-comparison.cc (represent): In the overload to represent
+       a method_decl, do not represent the vofffset if it's not set.
+       * src/abg-writer.cc (write_voffset): The virtual offset is signed
+       because if it's -1, it means no offset is set.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+       Adjust.
+       * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+
+2017-05-17  Dodji Seketeli <dodji@redhat.com>
+
+       Allow selective resolution of class declaration
+       * include/abg-fwd.h (type_base_wptrs_type)
+       (istring_type_base_wptrs_map_type): Define new typedefs.
+       (lookup_class_types): Declare new functions.
+       * include/abg-ir.h
+       (environment::decl_only_class_equals_definition): Declare new
+       accessor.
+       (type_maps::{*_types}): Make these accessors return
+       istring_type_base_wptrs_map_type& instead of
+       istring_type_base_wptr_map_type&.
+       * src/abg-dwarf-reader.cc
+       (read_context::resolve_declaration_only_classes): Implement the
+       new selective declaration resolution scheme.
+       * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
+       these data members from istring_type_base_wptr_map_type to
+       istring_type_base_wptrs_map_type.
+       (type_maps::{*_types}): Make these accessors definitions return
+       istring_type_base_wptrs_map_type& instead of
+       istring_type_base_wptr_map_type&.
+       (translation_unit::bind_function_type_life_time): Adjust.
+       (environment::priv::decl_only_class_equals_definition_): New data
+       member.
+       (environment::priv::priv): Initialize it.  By default, a decl-only
+       class is now considered different from its definition.
+       (environment::decl_only_class_equals_definition): Define new
+       accessor.
+       (lookup_types_in_map, lookup_class_types): Define new functions.
+       (lookup_type_in_map, lookup_union_type_per_location)
+       (lookup_basic_type, lookup_basic_type_per_location)
+       (lookup_class_type, lookup_class_type_per_location)
+       (lookup_union_type, lookup_enum_type)
+       (lookup_enum_type_per_location, lookup_typedef_type)
+       (lookup_typedef_type_per_location, lookup_qualified_type)
+       (lookup_pointer_type, lookup_reference_type, lookup_array_type)
+       (lookup_function_type, maybe_update_types_lookup_map)
+       (maybe_update_types_lookup_map<class_decl>)
+       (maybe_update_types_lookup_map<function_type>): Adjust.
+       (type_base::get_canonical_type_for): When doing type comparison
+       here, we can now consider that an unresolved class declaration
+       compares different to an incompatible class definition of the same
+       name.  So no need to look through decl-only classes in that case.
+       (equals): In the overload for class_or_union, if
+       environment::decl_only_class_equals_definition() is false, then an
+       unresolved class declaration of name "N" compares different to a
+       class definition named "N".
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
+       Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+       Adjust.
+       * tests/data/test-diff-filter/test38/Makefile: New test material.
+       * tests/data/test-diff-filter/test38/test38-a.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-b.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-c.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
+       * tests/data/test-diff-filter/test38/test38-v0: Likewise.
+       * tests/data/test-diff-filter/test38/test38-v1: Likewise.
+       * tests/data/test-diff-filter/test38/test38.h: Likewise.
+       * tests/data/test-diff-filter/test39/Makefile: Likewise.
+       * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-main.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
+       * tests/data/test-diff-filter/test39/test39-v0: Likewise.
+       * tests/data/test-diff-filter/test39/test39-v1: Likewise.
+       * tests/data/test-diff-filter/test39/test39.h: Likewise.
+       * tests/data/Makefile.am: Add the new test material above to the
+       source distribution.
+       * tests/test-diff-filter.cc (in_out_specs): Add the new test
+       inputs above to the test harness.
+
+2017-05-31  Dodji Seketeli <dodji@redhat.com>
+
+       Add documentation for the kmidiff tool
+       * doc/manuals/kmidiff.rst: New doc file.
+       * doc/manuals/Makefile.am: Add the above file to source
+       distribution.
+
+2017-05-31  Dodji Seketeli <dodji@redhat.com>
+
+       Allow re-using the ELF/DWARF read_context when loading a corpus group
+       * include/abg-dwarf-reader.h (reset_read_context): Declare new
+       function.
+       * src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to
+       be non const.
+       (read_context::initialize): New function to initialize all data
+       members.
+       (read_context::read_context): Use the new read_context::initialize
+       function, rather than initializing data members 'inline' here.
+       (reset_read_context): Define a new function to reset a
+       read_context so that it can be re-used to load a new corpus.
+
+2017-05-31  Dodji Seketeli <dodji@redhat.com>
+
+       Add --vmlinux{1,2} option to abidw and kmidiff
+       * include/abg-tools-utils.h
+       (build_corpus_group_from_kernel_dist_under): Add a new
+       vmlinux_path parameter.
+       * src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not
+       try to find a vmlinux binary if we already have the path to one.
+       (build_corpus_group_from_kernel_dist_under): Add a new
+       vmlinux_path parameter.
+       * tools/abidw.cc (options::vmlinux): New data member.
+       (display_usage): Add a usage string for --vmlinux
+       (parse_command_line): Parse the new --vmlinux option.
+       (load_kernel_corpus_group_and_write_abixml): Fix some return code
+       when the function fails.  Verify the presence of the vmlinux
+       binary that was given.  Adjust.
+       * tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data
+       members.
+       (display_usage): Add a usage string for --vmlinux1 and --vmlinux2.
+       (parse_command_line):  Parse the --vmlinux1 and --vmlinux2
+       options.
+       (main): Adjust.
+
+2017-05-18  Dodji Seketeli <dodji@redhat.com>
+
+       Cache function type name computation results
+       * src/abg-ir.cc (get_type_name): Cache function type names.
+
+2017-05-29  Dodji Seketeli <dodji@redhat.com>
+
+       Fix innacurate test condition when reading an enum type from abixml
+       * src/abg-reader.cc (build_enum_type_decl): Do not check for
+       errno which might have been set earlier by something else.
+       Rather, check the returned value for overflow or underflow.
+
+2017-05-28  Dodji Seketeli <dodji@redhat.com>
+
+       Do not report about voffset when it's not set in debug info
+       * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
+       Initialize the virtual offset to -1.
+       * src/abg-comparison.cc (represent): In the overload to represent
+       a method_decl, do not represent the vofffset if it's not set.
+       * src/abg-writer.cc (write_voffset): The virtual offset is signed
+       because if it's -1, it means no offset is set.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+       Adjust.
+       * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+
+2017-05-18  Dodji Seketeli <dodji@redhat.com>
+
+       Speedup DIE representation computing esp function signature in C
+       * src/abg-dwarf-reader.cc (die_function_signature): For C DIEs,
+       just return the (linkage) name of the function.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+
+2017-05-17  Dodji Seketeli <dodji@redhat.com>
+
+       Allow selective resolution of class declaration
+       * include/abg-fwd.h (type_base_wptrs_type)
+       (istring_type_base_wptrs_map_type): Define new typedefs.
+       (lookup_class_types): Declare new functions.
+       * include/abg-ir.h
+       (environment::decl_only_class_equals_definition): Declare new
+       accessor.
+       (type_maps::{*_types}): Make these accessors return
+       istring_type_base_wptrs_map_type& instead of
+       istring_type_base_wptr_map_type&.
+       * src/abg-dwarf-reader.cc
+       (read_context::resolve_declaration_only_classes): Implement the
+       new selective declaration resolution scheme.
+       * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
+       these data members from istring_type_base_wptr_map_type to
+       istring_type_base_wptrs_map_type.
+       (type_maps::{*_types}): Make these accessors definitions return
+       istring_type_base_wptrs_map_type& instead of
+       istring_type_base_wptr_map_type&.
+       (translation_unit::bind_function_type_life_time): Adjust.
+       (environment::priv::decl_only_class_equals_definition_): New data
+       member.
+       (environment::priv::priv): Initialize it.  By default, a decl-only
+       class is now considered different from its definition.
+       (environment::decl_only_class_equals_definition): Define new
+       accessor.
+       (lookup_types_in_map, lookup_class_types): Define new functions.
+       (lookup_type_in_map, lookup_union_type_per_location)
+       (lookup_basic_type, lookup_basic_type_per_location)
+       (lookup_class_type, lookup_class_type_per_location)
+       (lookup_union_type, lookup_enum_type)
+       (lookup_enum_type_per_location, lookup_typedef_type)
+       (lookup_typedef_type_per_location, lookup_qualified_type)
+       (lookup_pointer_type, lookup_reference_type, lookup_array_type)
+       (lookup_function_type, maybe_update_types_lookup_map)
+       (maybe_update_types_lookup_map<class_decl>)
+       (maybe_update_types_lookup_map<function_type>): Adjust.
+       (type_base::get_canonical_type_for): When doing type comparison
+       here, we can now consider that an unresolved class declaration
+       compares different to an incompatible class definition of the same
+       name.  So no need to look through decl-only classes in that case.
+       (equals): In the overload for class_or_union, if
+       environment::decl_only_class_equals_definition() is false, then an
+       unresolved class declaration of name "N" compares different to a
+       class definition named "N".
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
+       Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+       Adjust.
+       * tests/data/test-diff-filter/test38/Makefile: New test material.
+       * tests/data/test-diff-filter/test38/test38-a.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-b.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-c.c: Likewise.
+       * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
+       * tests/data/test-diff-filter/test38/test38-v0: Likewise.
+       * tests/data/test-diff-filter/test38/test38-v1: Likewise.
+       * tests/data/test-diff-filter/test38/test38.h: Likewise.
+       * tests/data/test-diff-filter/test39/Makefile: Likewise.
+       * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-main.c: Likewise.
+       * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
+       * tests/data/test-diff-filter/test39/test39-v0: Likewise.
+       * tests/data/test-diff-filter/test39/test39-v1: Likewise.
+       * tests/data/test-diff-filter/test39/test39.h: Likewise.
+       * tests/data/Makefile.am: Add the new test material above to the
+       source distribution.
+       * tests/test-diff-filter.cc (in_out_specs): Add the new test
+       inputs above to the test harness.
+
+2017-05-04  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid de-duplicating different C types that have identical name
+       * src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type):
+       Remove these typedefs.
+       (die_artefact_map_type, istring_dwarf_offsets_map_type): New
+       typedefs.
+       (die_is_at_class_scope, die_qualified_type_name)
+       (die_qualified_decl_name, die_qualified_type_name_empty)
+       (die_return_and_parm_names_from_fn_type_die)
+       (die_function_type_is_method_type):
+       Const-ify the read_context& parameter.
+       (read_context::die_source_dependant_container_set::get_container):
+       Likewise.
+       (read_context::{name_artefacts_map_, per_tu_name_artefacts_map_,
+       die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_,
+       die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}):
+       Remove data members.
+       (read_context::{die_decl_map, alternate_die_decl_map,
+       associate_die_to_decl_primary, associate_die_to_decl_alternate,
+       associate_die_to_decl_from_type_unit,
+       lookup_decl_from_die_offset_primary,
+       lookup_decl_from_die_offset_alternate,
+       lookup_decl_from_type_unit_die_offset,
+       lookup_type_artifact_from_die_per_tu,
+       lookup_artifact_from_per_tu_die_representation,
+       associate_die_to_artifact_by_repr,
+       associate_die_to_artifact_by_repr_internal, clear_die_type_maps}):
+       Remove member functions.
+       (read_context::{decl_die_repr_die_offsets_maps_,
+       type_die_repr_die_offsets_maps_, decl_die_artefact_maps_,
+       type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data
+       members.
+       (read_context::clear_per_translation_unit_data): Don't clear
+       read_context::per_tu_name_artefacts_map_ data member as it's
+       removed.
+       (read_context::clear_per_corpus_data): Don't clear
+       read_context::name_artefacts_map_ and all the other relevant data
+       members that got removed.
+       (read_context::{dwarf_per_die_source,
+       decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps,
+       get_canonical_die, get_die_from_offset, decl_die_artefact_maps,
+       type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member
+       functions.
+       (compare_dies, compare_as_decl_dies)
+       (compare_as_type_dies, maybe_finish_function_decl_reading)
+       (die_is_anonymous): Define new functions.
+       (read_context::associate_die_to_decl): Remove the
+       do_associate_by_repr_per_tu parameter.  Use the new
+       read_context::{decl_die_artefact_maps_, get_canonical_die} member
+       functions.
+       (read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather
+       than size_t for the type of the die_offset parameter.  Use the
+       lookup_artifact_from_die_offset member function.
+       (read_context::lookup_type_artifact_from_die): Const-ify.  In one
+       overload, take a new 'die_as_type' parameter.  Use the new
+       get_canonical_die, type_die_artefact_maps and
+       decl_die_artefact_maps member functions.  In the second overload,
+       use the first overload.
+       (read_context::odr_is_relevant): Add an overload that takes a DIE.
+       (read_context::associate_die_to_type): Remove the
+       do_associate_by_repr and do_associate_per_tu parameters.  Use the
+       new get_canonical_die and type_die_artefact_maps member functions.
+       (read_context::lookup_type_from_die): Use the new
+       lookup_artifact_from_die member function.
+       (read_context::lookup_type_from_die_offset): Use the new
+       type_die_artefact_maps member function.  When the found artifact
+       is a function_decl, return its type.
+       (read_context::schedule_type_for_late_canonicalization):  Use the
+       new get_canonical_die and type_die_artefact_maps member functions.
+       (die_function_signature): Const-ify.  Get the scope name right
+       even for scopes that are not types.
+       (die_member_offset): Make eval_last_constant_dwarf_sub_expr use
+       the new cached DWARF expression evalution context.
+       (get_parent_die): Support where_offset equals to zero.  This means
+       we are looking at a C binary, basically.
+       (build_enum_type) : Use the new overload of
+       read_context::odr_is_relevant that takes a DIE.  Adjust.
+       (add_or_update_union_type, add_or_update_class_type): Don't lookup
+       classes/unions per location anymore.  Now that we can compare DIEs
+       in a fined grain manner, the approximation of the location is not
+       useful anymore.
+       (build_pointer_type)
+       (build_function_type): Associate DIE to type if we reuse an
+       existing type.
+       (build_or_get_fn_decl_if_not_suppressed):  When re-using a
+       function decl internal representation from an equivalent DIE that
+       we've seen before, it can happen that we want to augment that
+       function decl internal representation with new properties coming
+       from the DIE we are currently looking at; do that here.
+       (is_function_for_die_a_member_of_class): Remove the "where_offset"
+       parameter.
+       (add_or_update_member_function): Adjust.
+       * tests/data/test-annotate/libtest23.so.abi: Adjust.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2017-04-14  Dodji Seketeli <dodji@redhat.com>
+
+       Speedup access to unreferenced symbols when loading corpus_group
+       * src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map):
+       New data members.
+       (corpus_group::priv::priv): Adjust.
+       (corpus_group::priv::add_unref_{fun,var}_symbols): Define new
+       member functions.
+       (corpus_group::add_corpus): Update the map of unreferenced
+       symbols.
+       (corpus_group::get_unreferenced_{function,variable}_symbols)
+       Adjust logic.
+
+2017-04-07  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support of de-serializing the KMI of a Linux Kernel Tree
+       * include/abg-libxml-utils.h (advance_to_next_sibling_element):
+       Declare new function.
+       * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
+       (advance_to_next_sibling_element): Define new functions.
+       * include/abg-reader.h (read_corpus_group_from_input)
+       (read_corpus_group_from_native_xml)
+       (read_corpus_group_from_native_xml_file): Declare new functions.
+       * src/abg-reader.cc (read_context::m_corpus_group): New data
+       member.
+       (read_context::{get_corpus_group, set_corpus_group}): Define new
+       member functions.
+       (read_translation_unit_from_input): Cleanup logic.
+       (read_corpus_from_input): Don't assume that the document is
+       starting with an 'abi-corpus' element.  Support the mode where a
+       caller called the xmlTextReaderExpand function (and so we are
+       given an expanded xmlNodePtr) and the mode where we need to use
+       the xmlTextReader API to walk through the 'abi-corpus' element.
+       Also, if we are building a corpus group, do not clear what used to
+       be 'per-corpus' data.  That data must be shared by all the corpora
+       of a given abi-corpus-group.
+       (read_corpus_group_from_input, read_corpus_group_from_native_xml)
+       (read_corpus_group_from_native_xml_file): Define new functions.
+       * include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New
+       enumerator of the file_type enum.
+       * src/abg-tools-utils.cc (operator<<): In the overload for
+       file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP.
+       (guess_file_type): Dectect abi-corpus-group xml element.
+       * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new
+       static function.
+       (main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP.  That
+       is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present.
+       * tools/abilint.cc (main): Likewise.
+       * tools/kmidiff.cc (main): Detect that one of two .kmi files are
+       passed.  In that case, load the .kmi file(s), build a corpus_group
+       of it and use it in the comparison.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support of the serialization of the KMI of a Linux Kernel Tree
+       * include/abg-tools-utils.h (check_dir)
+       (get_binary_paths_from_kernel_dist)
+       (build_corpus_group_from_kernel_dist_under): Declare new
+       functions.  The last two functions are being moved from
+       tools/kmidiff.cc so that they can be re-used.
+       * include/abg-writer.h (write_corpus): Declare one overload that
+       takes a write_context parameter.
+       (write_corpus_group): Declare three overloads of this new function.
+       * src/abg-tools-utils.cc (check_dir): Define new function.
+       (load_generate_apply_suppressions, is_vmlinux, is_kernel_module)
+       (find_vmlinux_and_module_paths)
+       (get_binary_paths_from_kernel_dist)
+       (build_corpus_group_from_kernel_dist_under): Define new functions.
+       * src/abg-writer.cc (write_context::set_annotate): Define new
+       member function.
+       (write_corpus): Add an overload that takes a write_context.  Adapt
+       the existing overload to make it use this new one.
+       (write_corpus_group): Define this new function and two additional
+       overloads for it.
+       * tools/kmidiff.cc (set_suppressions, is_vmlinux)
+       (is_kernel_module, find_vmlinux_and_module_paths)
+       (get_binary_paths_from_kernel_dist)
+       (build_corpus_group_from_kernel_dist_under): Remove.
+       (main): Adjust the call to
+       build_corpus_group_from_kernel_dist_under as its arguments are now
+       adapted since it's been factorized out into abg-tools-utils.h.
+       * tools/abidw.cc (options::corpus_group_for_linux): Define new
+       data member.
+       (options::options): Adjust.
+       (display_usage): Add help strings for the new --linux-tree option.
+       (load_corpus_and_write_abixml): Factorize this function out of the
+       main function.
+       (load_kernel_corpus_group_and_write_abixml): Define new function.
+       (main): Use the factorized load_corpus_and_write_abixml and the
+       new load_corpus_and_write_abixml functions.
+       * tests/test-read-write.cc: Adjust.
+       * doc/manuals/abidw.rst: Add documentation for the new
+       --linux-tree option.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Adjust test reference outputs after changes in abg-writer.cc
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Fix indentation glitch before the </abi-corpus> tag in abixml
+       * src/abg-writer.cc (write_corpus): Indent before emitting the
+       closing </abi-corpus> tag.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid emitting some empty translation units to abixml
+       * src/abg-writer.cc (write_corpus):  Do not emit a translation
+       unit that appears empty beforehand.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid emitting duplicated decls in abixml
+       * src/abg-writer.cc (write_context::m_emitted_decls_map): New data
+       member.
+       (write_context::{decl_name_is_emitted, record_decl_as_emitted}):
+       Define new memeber functions.
+       (write_translation_unit): Do not emit a decl that has already been
+       emitted.
+       (write_var_decl, write_function): Record the decl as emitted.
+
+2017-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Rename write_corpus_to_native_xml into write_corpus
+       * include/abg-writer.h (write_corpus): Rename
+       write_corpus_to_native_xml to this.
+       * src/abg-writer.cc (write_corpus): Rename
+       write_corpus_to_native_xml to this.
+       * tests/test-read-dwarf.cc (test_task::perform): Adjust.
+       * tests/test-read-write.cc: Remove a useless "using
+       abigail::xml_writer::write_corpus_to_native_xml".
+       * tools/abidw.cc (main): Adjust.
+       * tools/abilint.cc (main): Adjust.
+
+2017-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Update the reference output of regression tests after kabidiff work
+       * tests/data/test-annotate/test0.abi: Adjust.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust.
+       * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust.
+       * tests/data/test-read-dwarf/test0.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2017-06-12  Dodji Seketeli <dodji@redhat.com>
+
+       Introduce the --kmi-whitelist option to abidiff
+       * doc/manuals/abidiff.rst: Add documentation for the
+       --kmi-whitelist option.
+       * tools/abidiff.cc (display_usage): Emit help string for the
+       --kmi-whitelist option
+       (parse_command_line): Parse the new --kmi-whitelist option, of the
+       -w shortcut.
+
+2017-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Make abidw support the --kmi-whitelist option
+       * tools/abidw.cc (options::{kabi_whitelist_paths,
+       kabi_whitelist_supprs}): New data members.
+       (display_usage): Add a help string for the new --kmi-whitelist
+       option.
+       (parse_command_line): Parse the new --kmi-whitelist option.
+       (maybe_check_suppression_files): Check the presence of the linux
+       kernel abi white list passed by the option --kmi-whitelist.
+       (main): Ignore loading the symbol table if the kernel abi white
+       list is provided.
+       * doc/manuals/abidw.rst: Add documentation for the new option.
+
+2017-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Make abipkgdiff compare two kernel packages
+       * include/abg-suppression.h
+       (variable_suppression::variable_suppression): Add default arguments
+       to the parameters.
+       * include/abg-tools-utils.h (dir_exists, dir_is_empty)
+       (string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name)
+       (file_is_kernel_package, file_is_kernel_debuginfo_package):
+       Declare new functions.
+       * src/abg-tools-utils.cc (dir_exists, dir_is_empty)
+       (string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch)
+       (file_is_kernel_package, file_is_kernel_debuginfo_package): Define
+       new functions.
+       (gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI
+       whitelist is made of ELF symbols names that ought to match
+       functions *and* variables that have ELF symbols with those names.
+       So generate variable suppression specifications as well.  Not just
+       function suppression specifications.
+       * tools/abipkgdiff.cc (options::{kabi_whitelist_package,
+       show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths,
+       kabi_suppressions}): New data members.
+       (options::options): Adjust.
+       (package::KIND_KABI_WHITELISTS): New enumerator in the
+       package::kind enum.
+       (package::kabi_whitelist_package_): New data member.
+       (package::{base_name, kabi_whitelist_package, }): New member
+       functions.
+       (display_usage): Add a help string to the new
+       --linux-kernel-abi-whitelist and --no-unreferenced-symbols
+       options.
+       (parse_command_line): Parse the new --no-unreferenced-symbols,
+       --linux-kernel-abi-whitelist and --lkaw-pkg options.
+       (maybe_check_suppression_files): Check the presence of kabi
+       whitelist files.
+       (set_diff_context_from_opts): Consider (not) showing symbols not
+       referenced by debug info.
+       (compare): If we are looking at linux kernel packages, take the
+       kernel abi whitelist into account, apply the suppressions
+       resulting from the kabi whitelists to the ELF read context.
+       (maybe_collect_kabi_whitelists)
+       (get_kabi_whitelists_from_arch_under_dir)
+       (maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists)
+       (get_interesting_files_under_dir): Define new functions.
+       (maybe_update_vector_of_package_content): Take a new
+       file_name_to_look_for parameter.
+       (create_maps_of_package_content)
+       (extract_package_and_map_its_content): Consider the case of the
+       package being a linux kernel package.
+       (main): Take the potential --lkaw-pkg into account.
+       * doc/manuals/abipkgdiff.rst: Add documentation for options
+       --linux-kernel-abi-whitelist, --lkaw-pkg and
+       --no-unreferenced-symbols.
+
+2017-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid loading a translation unit twice from abixml
+       * src/abg-reader.cc (read_translation_unit): Take (in parameter) a
+       reference as the resulting translation unit.
+       (get_or_read_and_add_translation_unit): Define new static
+       function.
+       (read_context::get_scope_for_node)
+       (read_translation_unit_from_input): Use the new
+       get_or_read_and_add_translation_unit.
+
+2017-04-03  Dodji Seketeli <dodji@redhat.com>
+
+       Support loading and comparing two kernel trees
+       * include/abg-dwarf-reader.h (set_read_context_corpus_group)
+       (read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table)
+       (get_ignore_symbol_table): Declare new functions.
+       * abg-dwarf-reader.cc (read_context::options_type): Define new
+       type.
+       (die_dependant_container_set::clear): Define new member function.
+       (read_context::{bss, tesxt, rodata, data, data1}_section_): Add
+       new data members.
+       (read_context::{symbol_versionning_sections_loaded_,
+       symbol_versionning_sections_found_}): Likewise.
+       (read_context::corpus_group_): Likewise.
+       (read_context::{load_in_linux_kernel_mode, load_all_types,
+       show_stats, do_log_}): Replace these options by ..
+       (read_context::options_): ... this instance of the new
+       read_context:options_type.
+       (read_context::read_context): Adjust.
+       (read_context::{clear_alt_debug_info_data, clear_per_corpus_data,
+       env, get_data_section_for_variable_address, load_all_types,
+       load_in_linux_kernel_mode, show_stats, do_log}): Adjust.
+       (create_read_context): Adjust.
+       (read_context::~read_context): Define destructor.
+       (read_context::{options, bss_section, text_section,
+       rodata_section, data_section, data1_section, current_corpus_group,
+       has_corpus_group, main_corpus_from_current_group,
+       main_corpus_from_current_group,
+       current_corpus_is_main_corpus_from_current_group,
+       should_reuse_type_from_corpus_group}): Define new member
+       functions.
+       (read_context::get_die_qualified_type_name): Handle the name of
+       the current translation unit.
+       (read_context::load_symbol_maps): Really don't load (linux kernel
+       specific) symbol maps if we were told to ignore the ELF symbol
+       table.
+       (set_ignore_symbol_table, get_ignore_symbol_table)
+       (create_default_var_sym, create_default_fn_sym, add_symbol_to_map)
+       (set_read_context_corpus_group)
+       (read_and_add_corpus_to_group_from_elf): Define new functions.
+       (build_type_decl, build_typedef_type, build_enum_type)
+       (add_or_update_class_type)
+       (add_or_update_union_type): Reuse the type being built, from the
+       main corpus of the corpus group.
+       (build_qualified_type): Cleanup logic.
+       (build_var_decl, build_function_decl): Create a default symbol for
+       the variable or function if we are supposed to ignore the symbol
+       table of the current binary.  Add that symbol to the symbol table
+       that is created in the read context.
+       (read_debug_info_into_corpus): Don't load the ELF symbol table
+       information if we are asked to ignore the symbol table.  But set
+       the symbol table that we built artificially while loading
+       functions and variables, into the ABI corpus being built.
+       (read_context::maybe_adjust_var_sym_address): Adjust.
+       (build_ir_node_from_die): Add ir node to its logical scope.  For
+       the C language, the scope of a type is the global scope.
+       (read_corpus_from_elf): Don't load ELF properties if we were asked
+       to avoid the ELF symbol table.
+       * include/abg-comparison.h (compute_diff): Declare ...
+       * src/abg-comparison.cc (compute_diff): ... an overload to compare
+       corpus_group.
+       * tools/kmidiff.cc: New tool.
+
+2017-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Initial support to lookup types per location
+       * include/abg-fwd.h (get_name_of_qualified_type)
+       (get_name_of_reference_to_type, lookup_basic_type_per_location)
+       (lookup_class_type_per_location, lookup_union_type_per_location)
+       (lookup_enum_type_per_location, lookup_typedef_type)
+       (lookup_typedef_type_per_location, lookup_pointer_type)
+       (lookup_reference_type, lookup_type_per_location)
+       (lookup_type_through_translation_units)
+       (lookup_type_from_translation_unit, odr_is_relevant): Declare new
+       functions or new function overloads.
+       * include/abg-ir.h (location::expand): Declare new member
+       function.
+       (type_maps::empty): Likewise.
+       (operator|=): Declare an overload for qualified_type_def::CV.
+       (get_string_representation_of_cv_quals)
+       (get_name_of_qualified_type, lookup_qualified_type): Declare new functions.
+       * src/abg-ir.cc (location::expand): Define new member function.
+       (type_maps::empty): Likewise.
+       (odr_is_relevant): Likewise.
+       (get_string_representation_of_cv_quals)
+       (get_name_of_reference_to_type, get_name_of_qualified_type)
+       (lookup_union_type_per_location): Define new functions or overloads.
+       (lookup_basic_type, lookup_enum_type, lookup_typedef_type)
+       (lookup_qualified_type, lookup_pointer_type)
+       (lookup_reference_type, lookup_type_from_translation_unit)
+       (lookup_basic_type_per_location, lookup_basic_type_per_location)
+       (lookup_class_type_per_location, lookup_class_type_per_location)
+       (lookup_enum_type_per_location, lookup_enum_type_per_location)
+       (lookup_typedef_type_per_location)
+       (lookup_typedef_type_per_location, lookup_type_per_location):
+       Define new overloads.
+       (maybe_update_types_lookup_map)
+       (maybe_update_types_lookup_map<class_decl>)
+       (maybe_update_types_lookup_map<function_type>): Add a new
+       use_type_name_as_key parameter.  If it's false, then associates
+       the type to its location rather than to its name.
+       (maybe_update_types_lookup_map): In the overloads for type_decl,
+       class_decl, union_decl, enum_type, typedef_decl, array_type_def,
+       record the type in the lookup map per location, in addition to the
+       per-name recording.
+       (qualified_type_def::build_name): Use the new
+       get_name_of_qualified_type.
+       (qualified_type_def::get_cv_quals_string_prefix): Use the new
+       get_string_representation_of_cv_quals.
+       (operator|=): Define a new overload for qualified_type_def::CV.
+       (pointer_type_def::get_qualified_name): Use the new
+       get_name_of_pointer_to_type.
+       (reference_type_def::get_qualified_name): Use the new
+       get_name_of_reference_to_type.
+
+2017-03-30  Dodji Seketeli <dodji@redhat.com>
+
+       Create a Corpus Group API extension
+       * include/abg-corpus.h (corpus::{find_translation_unit,
+       get_type_per_loc_map}): Declare new member functions.
+       (corpus::{get_architecture_name, is_empty}): Make these member functions
+       const.
+       (corpus::{get_sorted_fun_symbols, get_functions, get_variables,
+       get_unreferenced_function_symbols,
+       get_unreferenced_variable_symbols}): Make these member functions
+       virtual.
+       (class corpus_group): Declare a new type.
+       * include/abg-fwd.h (corpus_sptr, corpus_group_sptr)
+       (string_tu_map_type, istring_var_decl_ptr_map_type)
+       (istring_function_decl_ptr_map_type): Define new typedefs.
+       * src/abg-corpus-priv.h (corpus_priv::{path_tu_map,
+       type_per_loc_map_}): Add new data members.
+       * src/abg-corpus.cc (corpus_add): Complete the function comment.
+       Assert that at most one translation unit of a given path can be
+       added to the corpus.
+       (corpus::{find_translation_unit, get_type_per_loc_map}): Define
+       new member functions.
+       (corpus::{get_architecture_name}): Make this member function
+       const.
+       (struct corpus_group::priv): Define new type.
+       (corpus_group::{corpus_group, ~corpus_group, add_corpus,
+       get_corpora, is_empty, get_functions, get_variables,
+       get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols,
+       get_sorted_var_symbols, get_unreferenced_function_symbols,
+       get_unreferenced_variable_symbols}): Define member functions of
+       the new corpus_group type.
+
+2017-07-03  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some typos in abidiff.cc
+       * tools/abidiff.cc (main): Fix typos.
+
+2017-07-03  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid comparing kernel.img file from the grub2 package
+       * default.abignore: Do not compare kernel.img files.
+
+2017-06-14  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21567 - Fedabipkgdiff matches build distro names too tightly
+       * tools/fedabipkgdiff (get_distro_from_string): Define new function.
+       (Brew.get_package_latest_build): Also consider builds which distro
+       property is less than the expected distro string that we were
+       given.
+
+2017-06-14  Sinny Kumari <sinny@redhat.com>
+
+       Check if return_codes list is empty in fedabipkgdiff
+       * tools/fedabipkgdiff (run_abipkgdiff()): Check if
+       return_codes list is empty
+
+2017-06-13  Dodji Seketeli <dodji@redhat.com>
+
+       Do not forget to erase temporary directories in abipkgdiff
+       * tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static
+       function.
+       (compare): Call the new maybe_erase_temp_dirs on all return
+       points.
+
+2017-05-11  Ben Woodard <woodard@redhat.com>
+
+       Fix more clang build warnings
+       * include/abg-ini.h (config::section::priv): Make this be a class,
+       not a struct.
+       * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
+       (build_ir_node_from_die): Add parenthesis around assignment
+       expressions inside conditional expression.
+       * src/abg-suppression.cc (read_function_suppression): Likewise.
+
+2017-05-11  Ben Woodard <woodard@redhat.com>
+
+       Fix some clang compile problems
+       * include/abg-comp-filter.h (class filter_base): Declare this as a
+       struct.
+       * include/abg-comparison.h (class filtering::filter_base):
+       Likewise.
+       (struct diff_traversable_base): Declare this as a class.
+       * include/abg-ir.h (function_decl::parameter): Declare this before
+       using it.
+       * src/abg-corpus.cc
+       (corpus::priv::build_unreferenced_symbols_tables): Add missing
+       parenthesis around assignment expressions inside conditional
+       expressions.
+
+2017-05-21  Sinny Kumari <sinny@redhat.com>
+
+       Add --self-compare option in fedabipkgdiff
+       * bash-completion/fedabipkgdiff: Add new option --self-compare
+       * tests/data/Makefile.am: Add new test file
+       * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
+       New reference output for testing ABI comparison on same package
+       * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
+       Add test case for --self-compare
+       * tools/fedabipkgdiff (build_commandline_args_parser()): Add
+       new option --self-compare
+       (generate_comparison_halves()): Find second comparision half in same
+       package list while doing self-compare
+       (self_compare_rpms_from_distro()): New function to perform ABI
+       comparision on same pacakge
+       (main()): Add if condition when --self-compare option is enabled
+
+2017-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid building DIE -> parent DIE map when analyzing a C binary
+       * include/abg-ir.h (global_scope_sptr): Make this be a share_ptr
+       of scope_decl, not of global_scope.
+       (translation_unit::get_global_scope): Return a reference to
+       scope_decl_sptr.
+       * src/abg-ir.cc (translation_unit::get_global_scope): Return a
+       scope_decl not a global_scope.
+       * src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data
+       member.
+       (read_context::{global_scope, nil_scope}): Define new member functions.
+       (read_context::build_die_parent_maps): Do not build the map if we
+       are looking at a C (or asm) translation unit.
+       (get_scope_die, get_scope_for_die): If we are looking at a C
+       translation unit then do return the global scope.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Speed up access to the definition of a class declaration-only type
+       * include/abg-ir.h
+       (class_or_union::get_naked_definition_of_declaration): Declare a
+       new member function.
+       (class_decl::get_naked_definition_of_declaration): Likewise.
+       * src/abg-ir.cc ({type_decl, qualified_type_def,
+       array_type_def, enum_type_decl}::operator==): Use the
+       get_naked_canonical_type and get_naked.
+       (class_or_union::priv::naked_definition_of_declaration_): Define
+       new data member.
+       (class_or_union::priv::priv): Adjust to initialize the new data
+       member.
+       (class_or_union::get_naked_definition_of_declaration): Define new
+       member function.
+       ({class_or_union, class_decl}::operator==): Use the new
+       get_naked_definition_of_declaration instead of
+       get_definition_of_declaration.
+       (equals): In the overload for class_or_union, do the same.
+       (class_decl::get_naked_definition_of_declaration): Define new
+       member function.
+       (hash_type_or_decl): Likewise.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Speedup comparison of decl-only classes
+       * src/abg-ir.cc (equals): In the overload for class_decl, if we
+       are looking at a decl-only class, then directly call the equals
+       function for class_or_union.  That one knows how to perform the
+       comparison without calling the
+       class_or_union::priv_->comparison_started function, in that case.
+
+2017-04-04  Dodji Seketeli <dodji@redhat.com>
+
+       Update the description of what abipkgdiff does
+       * tools/abipkgdiff.cc: Update the description of the sequence of
+       actions performed.
+
+2017-04-06  Dodji Seketeli <dodji@redhat.com>
+
+       Misc cleanups in abg-writer.cc
+       * src/abg-writer.cc (class write_context): Fix indentation.
+       (write_location, write_visibility, write_binding)
+       (write_array_size_and_alignment, write_size_and_alignment): Fix
+       these declarations to use the *_sptr typedefs rather than the
+       explicit shared_ptr<*> types.
+       (write_translation_unit): Fix comment.
+
+2017-05-10  Dodji Seketeli <dodji@redhat.com>
+
+       Don't consider changes to basic types as being redundant
+       * include/abg-comparison.h (is_diff_of_basic_type)
+       (has_basic_type_change_only): Declare these functions ...
+       * src/abg-comparison.cc (is_diff_of_basic_type)
+       (has_basic_type_change_only): ... and define them.
+       (redundancy_marking_visitor::visit_begin): Use the new
+       has_basic_type_change_only.
+       * tests/data/test-diff-filter/libtest37-v0.so: New binary test input.
+       * tests/data/test-diff-filter/libtest37-v1.so: Likewise.
+       * tests/data/test-diff-filter/test37-report-0.txt: New test
+       reference output.
+       * tests/data/test-diff-filter/test37-v0.cc: Source code of the new
+       binary test input.
+       * tests/data/test-diff-filter/test37-v1.cc: Likewise.
+       * tests/data/Makefile.am: Update to add the new test material to
+       the source distribution.
+       * tests/test-diff-filter.cc (in_out_spec): Add the new test input
+       to this test harness.
+
+2017-05-10  Dodji Seketeli <dodji@redhat.com>
+
+       Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff
+       * include/abg-comparison.h (fn_parm_diff::type_diff): Renamed
+       fn_parm_diff::get_type_diff intot his.
+       * src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise.
+       (fn_parm_diff::report): Adjust.
+       (redundancy_marking_visitor::visit_begin): Likewise.
+       (is_diff_of_variadic_parameter): Likewise.
+
+2017-05-03  Dodji Seketeli <dodji@redhat.com>
+
+       Invalidate function and variable ID cache when invoking ::set_symbol
+       * src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the
+       ID cache.
+
+2017-05-03  Dodji Seketeli <dodji@redhat.com>
+
+       Remove useless overloads of is_type
+       * include/abg-fwd.h (is_type):  Remove the overloads that take
+       decl_base and type_base types.
+       * src/abg-ir.cc (is_type): Likewise.
+
+2017-05-04  Dodji Seketeli <dodji@redhat.com>
+
+       Ensure build_qualified_type can return non-qualified types
+       * src/abg-dwarf-reader.cc (build_qualified_type): Return a
+       type_base_sptr.
+       (build_ir_node_from_die): Adjust the call to build_qualified_type.
+
+2017-05-04  Dodji Seketeli <dodji@redhat.com>
+
+       Fix array subranges (wrongly) having the same lower bound
+       * src/abg-dwarf-reader.cc (build_subranges_from_array_type_die):
+       Consider the 'lower_bound' parameter as the default lower bound
+       for each sub-ranges.
+
+2017-03-31  Dodji Seketeli <dodji@redhat.com>
+
+       Fix buffer overrun in 'equals' function for arrays
+       * src/abg-ir.cc (equals): In the overload for arrays, check for
+       the end of the subranges of the two arrays, not just for the first
+       one.
+
+2017-04-18  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a race condition in queue::priv::do_bring_workers_down
+       * src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this
+       data member mutable.
+       (more_tasks_to_execute):
+       (queue::priv::do_bring_workers_down): Update the
+       queue::priv::bring_workers_down only in the critical section
+       defined by queue::priv::queue_cond_mutex.
+       (worker::wait_to_execute_a_task): Testing for
+       queue::priv::bring_workers_down is done in the critical section
+       defined by queue::priv::queue_cond_mutex.  The loop over waiting
+       ont the condition is also in the critical section, as it ought to
+       be.
+       * tests/test-read-write.cc (struct test_task): New type.
+       (main): Express in terms of the new test_task type.
+
+2017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       cppcheck: mitigate performance warnings
+       * include/abg-diff-utils.h (print_snake): pass argument of type
+       snake by const reference.
+       * include/abg-ir.h (location::operator{==,<}): Likewise.
+       * include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}):
+       Likewise.
+       * include/abg-viz-svg.h (svg::svg) Likewise.
+       * src/abg-config.cc (config::config): Member initialization in ctor body.
+       * src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type):
+       Initial value never used.
+       * src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body,
+       pass argument of type location by const reference.
+       (equals): Variable initial value never used.
+       * src/abg-reader.cc (read_corpus_from_input): Initial variable
+       value never used.
+       (build_elf_symbol_db): Use pre-increment.
+       * src/abg-suppression-priv.h
+       (suppression_matches_type_location): Pass argument of type
+       location by const reference.
+       * src/abg-suppression.cc: Likewise.
+
+2017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Fix cppcheck error: "Same iterator is used with different containers"
+       * src/abg-dwarf-reader.cc
+       (type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation):
+       Fix an error found by cppcheck.
+
+2017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Clean up scripts/*
+       * scripts/dot_to_png.sh: Clean up the script according to
+       shellcheck warnings and remarks.
+       * scripts/dot_to_svg.sh: Likewise.
+       * scripts/svg_to_plain_svg.sh: Likewise.
+       * scripts/svg_to_png_and_pdf.sh: Likewise.
+
+2017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Fix comparison used instead of an assignment
+       * src/abg-ir.cc (parse_integral_type): An attempt at clang
+       compilation has discovered there to be a comparison with
+       unused result, that apparently should be an assignment.
+
+2017-04-12  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some random deadlock while running fedabipkgidiff in tests
+       * tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate()
+       as it might hang if the data is large.  Rather, busy wait for the
+       abipkgdiff process to finish and then get its output.
+
+2017-03-22  Slava Barinov <v.barinov@samsung.com>
+
+       Fix types in header to meet sources
+       * include/abg-fwd.h: Include stdint.h for uint64_t.
+       (ir::set_data_member_offset): Take uint64_t rather than size_t.
+       (ir::get_data_member_offset): Return uint64_t rather than size_t.
+
+2017-03-24  Dodji Seketeli <dodji@redhat.com>
+
+       Launch fedabipkgdiff tests first
+       * tests/Makefile.am: Run the fedabipkgdiff test first.
+
+2017-03-24  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21296 - Reporting diff of const ref against non-const ref aborts
+       * include/abg-fwd.h (look_through_no_op_qualified_type): Declare
+       new function.
+       * src/abg-ir.cc (look_through_no_op_qualified_type): Define it.
+       (compute_diff_for_types): Use the new
+       look_through_no_op_qualified_type here rather than open-coding it.
+       (equals): In the overload for function_decl::parameter, use the
+       new look_through_no_op_qualified_type function.
+       * tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source
+       code of the new test inputs.
+       * tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt:
+       New test input.
+       * tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary
+       test input.
+       * tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise.
+       * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to
+       the test harness.
+
+2017-03-05  Chenxiong Qi <cqi@redhat.com>
+
+       Bug 20087 - Clean cache before or after ABI comparison
+       * configure.ac: Require shutil module.
+       * doc/manuals/fedabipkgdiff.rst: Add document for new option
+       clean-cache, clean-cache-before, and clean-cache-after.
+       * tools/fedabipkgdiff (build_commandline_args_parser): Add new
+       option --clean-cache, --clean-cache-before and
+       --clean-cache-after.
+       (diff_local_rpm_with_latest_rpm_from_koji): Delete download
+       cache directory before or after downloading RPMs.
+       (diff_latest_rpms_based_on_distros): Likewise.
+       (diff_two_nvras_from_koji): Likewise.
+       (diff_from_two_rpm_files): Likewise.
+       * bash-completion/fedabipkgdiff: Add new options.
+       * tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to
+       behave just like the original get_download_dir.
+       (mock_get_download_dir): Removed.
+       (DOWNLOAD_CACHE_DIR): New global variable pointing directory
+       holding packages during tests.
+       (run_fedabipkgdiff): Mock original get_download_dir with the
+       rewrite get_download_dir.
+       * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests):
+       Add --clean-cache to run tests to ensure no regression.
+
+2017-03-17  Dodji Seketeli <dodji@redhat.com>
+
+       Shut down a helgrind false positive in the "system" libc call
+       * tests/test-valgrind-suppressions.supp: Add a suppression that
+       occurs during an internal libc signal handling occasion.
+
+2017-03-15  Dodji Seketeli <dodji@redhat.com>
+
+       Fix data race on worker::queue::priv::bring_workers_down
+       * src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the
+       read of the queue::priv::bring_workers_down down variable with the
+       queue::priv::tasks_todo_mutex.
+
+2017-03-07  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21228 - Handle cloning union member functions
+       * include/abg-ir.h (class_or_union::add_member_function): Move the
+       class_decl::add_member_function overload declaration into the
+       class class_or_union class.
+       (class class_decl): Make the class class_or_union be a friend of
+       class_decl.
+       * src/abg-ir.cc (class_decl::add_member_function): Transform the
+       definition of this overload into ...
+       (class_or_union::add_member_function): ... this one.  Make sure
+       that when setting the virtual-ness attributes of the member
+       function, we are effectively looking at the a function that is a
+       member of a class.
+       (function_decl::clone): Do not assert that a member function is
+       necessarily a member of a class_decl.  It can also a member of a
+       union_decl!.  So, rather, assert that the scope of the member
+       function is of type class_or_union.
+       * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm:
+       New test input RPM.
+       * tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm:
+       * tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm:
+       Likewise.
+       * tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm:
+       Likewise.
+       * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt:
+       New reference test output.
+       * tests/data/Makefile.am: Add the new test input RPMs to the
+       source distribution.
+       * tests/test-diff-pkg.cc (in_out_specs): Take the new input tests
+       above into account.
+
+2017-03-03  Dodji Seketeli <dodji@redhat.com>
+
+       Consider file path when sorting virtual member functions
+       * src/abg-ir.cc (virtual_member_function_less_than::operator()):
+       Take the file path into account in the sorting.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+
+2017-03-03  Dodji Seketeli <dodji@redhat.com>
+
+       Fix virtual members sorting to unbreak the build on EL6
+       * src/abg-ir.cc (virtual_member_function_less_than::operator()):
+       Update comment.  When two virtual functions have the same virtual
+       index and one of them has no ELF symbol, then that function is
+       less than the one with an ELF symbol.
+       * tests/data/Makefile.am: Remove
+       test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi,
+       test12-pr18844.so.abi, test16-pr18904.so.abi,
+       test22-pr19097-libstdc++.so.6.0.17.so.abi}.
+       * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove.
+       * tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
+       * tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
+       * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Likewise.
+       * tests/test-annotate.cc (in_out_specs):  Remove those tests above
+       which input files have been removed.
+
+2017-03-02  Dodji Seketeli <dodji@redhat.com>
+
+       Make Helgrind suppressions less specific to libgcc_s version
+       * tests/test-valgrind-suppressions.supp: Make Helgrind
+       suppressions less specific to libgcc_s version.
+
+2017-03-02  Dodji Seketeli <dodji@redhat.com>
+
+       More Helgrind suppressions
+       * tests/test-valgrind-suppressions.supp: More specific suppressions.
+
+2017-03-02  Dodji Seketeli <dodji@redhat.com>
+
+       Silence Helgrind reports about exception stack unwinding
+       * tests/test-valgrind-suppressions.supp: Silence Helgrind reports
+       about exception stack unwinding.
+
+2017-03-01  Dodji Seketeli <dodji@redhat.com>
+
+       Make the helgrind suppressions less specific
+       * tests/test-valgrind-suppressions.supp: Make the ostream writting
+       suppressions be less specific so that they can apply to all the
+       related false positives.
+
+2017-03-01  Dodji Seketeli <dodji@redhat.com>
+
+       Move test-read-dwarf.cc to abigail::workers
+       * tests/test-read-dwarf.cc (iospec, spec_lock, write_lock)
+       (out_abi_base, in_elf_base, in_abi_base): Remove these global
+       variables.
+       (handle_in_out_spec): Remove this.
+       (struct test_task): Write this task that does what
+       handle_in_out_spec was doing.
+       (test_task_sptr): Define new typedef.
+       (main): Remove the pthreads artifacts.  Use the new test_task type
+       along with the abigail::workers interface.
+       * tests/test-valgrind-suppressions.supp: Add more helgrind
+       suppressions for ostream writting false positives.
+
+2017-02-28  Dodji Seketeli <dodji@redhat.com>
+
+       Display the command that failed the runtestfedabipkgdiff.py test
+       * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When
+       A test fails, display the fedabipkgdiff command that triggered the failure.
+
+2017-02-24  Dodji Seketeli <dodji@redhat.com>
+
+       Make abipkgdiff.cc use the abigail::workers interface
+       * tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add
+       fts.h and abg-workers.h.
+       (verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock)
+       (arg_lock, prog_options): Remove all these global variables.
+       (struct package_descriptor): Remove this type.
+       (pthread_routine_extract_package)
+       (first_package_tree_walker_callback_fn)
+       (second_package_tree_walker_callback_fn, pthread_routine_compare)
+       (pthread_join, pthread_routine_extract_pkg_and_map_its_content):
+       Remove these functions.
+       (options::{num_workers, verbose}): Define new data members.
+       (options::options): Initialize the new verbose and num_workers data members.
+       (package::erase_extraction_directory)
+       (erase_created_temporary_directories_parent): Take the program
+       options in parameter.  Don't use the global verbose variable
+       anymore.
+       (package::erase_extraction_directories)
+       (erase_created_temporary_directories, extract_package): Take the
+       program options in parameter.
+       (extract_rpm, extract_deb, extract_tar): Likewise.  And don't use
+       the global verbose variable anymore.
+       (compare): Don't use the global verbose variable anymore.  Use the
+       new compare_task type along with the abigail::workers::queue type.
+       (pkg_extraction_task, pkg_prepare_task, compare_task)
+       (comparison_done_notify): Define new classes.
+       (maybe_update_vector_of_package_content): Define new static
+       function.
+       (create_maps_of_package_content): Don't take the ftw_cp_type
+       anymore.  Don't use the global verbose variable anymore.  Use the
+       fts_{open,read,close} functions, rather than the ftw one.
+       (extract_package_and_map_its_content): Don't use pthreads anymore.
+       Use the new pkg_extraction_task type created along with the
+       abigail::workers::queue type.
+       (prepare_packages): Don't use pthreads anymore.  Use the new
+       pkg_prepare_task type along with the abigail::workers::queue type.
+       (elf_size_is_greater): Adjust to use
+       abigail::workers::queue::tasks, rather than the previous
+       compaer_args_sptr type.
+       (parse_command_line): Adjust to stop using the global verbose
+       variable.
+       (main): Remove use of global variables prog_options and also the
+       packages variable.
+       * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
+       Adjust.
+       * tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise.
+       * tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise.
+       * tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise.
+       * tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise.
+       * tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise.
+       * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt:
+       Likewise.
+
+2017-02-24  Dodji Seketeli <dodji@redhat.com>
+
+       Do not ignore valgrind checks returning an error
+       * autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't
+       ignore errors.
+
+2017-02-24  Dodji Seketeli <dodji@redhat.com>
+
+       Add a "make check-valgrind-helgrind-recursive" target
+       * tests/Makefile.am (check-valgrind-helgrind-recursive): New
+       target to run the tests recursively under the control of
+       Valgrind's Helgrind tool.
+       * tests/test-valgrind-suppressions.supp: Update this suppression
+       file with suppressions for Helgrind.
+
+2017-02-24  Dodji Seketeli <dodji@redhat.com>
+
+       Several fixes and enhancements to abigail::workers
+       * Don't try to schedule a task if the pointer to the task is nil
+       * Fix a data race when bringing workers (of a queue) down
+       * Always try to wake up all waiting threads when bringing down queue
+       workers.
+       * Fix a data race when accessing the queue condition variable
+       * Fix a data race when notifying listeners about the end of the job
+       performed by the task.
+       Enhancements
+       ============
+       * Pass the "task done" notifier by reference, to the worker queue.
+       Without this, the worker queue needs to copy the "task done" notifier
+       by value.  This implies that user code needs to provide task done
+       notifier instances that come with potentially complicated copy
+       constructors.  By passing it by reference and by just re-using the
+       notifier from the user code, we do away with the need for copying
+       altogether.  This also fixes some latent copying bugs.
+       * Add a workers::queue::schedule_tasks() method
+       This allows user code to schedule a vector of tasks at once.
+       * make workers::queue::get_completed_tasks() return a non-const vector
+       This enables user code to sort the completed tasks as they wish.
+       * include/abg-workers.h (queue::tasks_type): New typedef.
+       (queue::queue): Pass task_done_notify by reference.
+       (queue::schedule_tasks): Declare new member function.
+       (queue::get_completed_tasks): Return non-const vector.
+       * src/abg-workers.cc (queue::priv::default_notify): New data
+       member.
+       (queue::priv::notify): Make this data member be a reference.
+       (queue::priv::priv): Initialize the notify data member to either
+       the new default_notify (if no notifier is provided by the
+       constructor) or to the notifier provided by the constructor.
+       (queue::priv::schedule_task): Do not schedule a nil task.  Update
+       comment.
+       (queue::priv::schedule_tasks): Add a new member function.
+       (queue::priv::do_bring_workers_down): Update comment.  Protect
+       access to "bring_workers_down" with tasks_todo_mutex to prevent a
+       data race.  Call pthread_cond_broadcast on the queue_cond
+       unconditionaly to prevent some worker threads to keep waiting for
+       ever. Also, protect the access to the queue_cond by the
+       queue_cond_mutex to precent a data race.
+       (queue::queue): Pass the notifier by reference. Update comment.
+       (queue::schedule_task): Update comment.
+       (queue::schedule_tasks): Define new member function.
+       (queue::wait_for_workers_to_complete): Update comment.
+       (queue::get_completed_tasks): Return a non-const vector. Update
+       comment.
+       (worker::wait_to_execute_a_task): Update several comments. Make
+       the execution of the notification code to be synchronized (on the
+       tasks_done_mutex).
+
+2017-02-14  Dodji Seketeli <dodji@redhat.com>
+
+       Fix typo in help string of abipkgdiff
+       * tools/abipkgdiff.cc (display_usage): Remove erroneous end line.
+
+2017-01-23  Dodji Seketeli <dodji@redhat.com>
+
+       fedabipkgdiff refuses to compare packages with the same release number
+       * tools/fedabipkgdiff (RPM.is_peer): Update comment.  Fix logic.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm:
+       New test input file.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise.
+       * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise.
+       * tests/data/Makefile.am: Add the new test input data to source
+       distribution.
+       * tests/mockfedabipkgdiff.in: Update the package and build
+       information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and
+       vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel
+       and debuginfo packages) into the "mock" Koji build database.
+       * tests/runtestfedabipkgdiff.py.in:  Make this test harness run
+       over the two aforementioned packages.
+
+2017-01-24  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing tests input files to distribution files
+       * tests/data/Makefile.am: Add three missing test input files to
+       the source distribution tarball.  Renamed
+       test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt
+       into
+       test-fedabipkgdiff/test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
+       * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
+       Renamed
+       test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt
+       into
+       test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
+
+2017-01-24  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing new line to an error message of runtestfedabipkgdiff.py
+       * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add
+       missing new line to an error message.
+
+2017-01-24  Dodji Seketeli <dodji@redhat.com>
+
+       Fix silent failure of tests/runtestfedabipkgdiff.py
+       * tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch
+       fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of
+       fedabipkgdiff.DEFAULT_KOJI_TOPDIR.
+       * tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon
+       success, 1 otherwise.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-ir.h (class_or_union): Fix indentation.
+       * src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new
+       line.
+       * src/abg-ir.cc (struct class_decl::priv): Fix indentation.
+       (virtual_member_function_less_than::operator()): Fix a typo in a
+       comment.
+
+2017-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 20476 - Compare virtual member functions when comparing classes
+       * include/abg-ir.h (class_decl::get_biggest_vtable_offset):
+       Declare new member function.
+       * src/abg-ir.cc (virtual_member_function_less_than::operator()):
+       Either compare the symbol id strings if the functions have
+       symbols or just compare their pretty representations.
+       (class_decl::get_biggest_vtable_offset): Define new member
+       function.
+       (methods_equal_modulo_elf_symbol)
+       (method_matches_at_least_one_in_vector): New static methods.
+       (equals): In the overload for classes, compare the virtual member
+       functions while comparing classes.
+       * src/abg-comparison.cc (represent): In the overload for
+       method_decl_sptr, fix the way we compute the highest vtable offset
+       number for a give class_decl.
+       (class_decl::ensure_lookup_tables_populated): Don't forget added
+       and removed virtual member functions in the report for changed
+       classes.
+       * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New
+       test binary input file.
+       * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise.
+       * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
+       New reference output.
+       * tests/data/Makefile.am: Add the new test material above to the
+       source distribution.
+       * tests/test-diff-dwarf.cc (in_out_spec): Add the new tests
+       here.
+       * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-annotate/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+
+2017-02-14  Dodji Seketeli <dodji@redhat.com>
+
+       Fix indentation in src/abg-writer.cc
+       * src/abg-writer.cc (annotate): Fix indentation.
+
+2017-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Adjust reference output of test-annotate
+       * tests/data/test-annotate/test15-pr18892.so.abi: Adjust this
+       reference output.
+
+2017-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Fix help string for --header-dirs
+       * tools/abidw.cc (display_usage): Fix patch -> path typo.
+
+2017-02-13  Dodji Seketeli <dodji@redhat.com>
+
+       Make abidw --headers-dir work with the --out-file option
+       * tools/abidw.cc (parse_command_line): Don't require an empty
+       output file when parsing the --headers-dir option.  This was a
+       thinko.
+
+2017-01-17  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Bug 20970 - Add a --annotate option to abidw
+       * doc/manuals/abidiff.rst: Document the '--no-corpus-path'
+       option.
+       * doc/manuals/abidw.rst: Document the '--no-corpus-path'
+       and '--annotate' options.
+       * include/abg-libxml-utils.h ({un,}escape_xml_comment): Add
+       new function declarations.
+       * include/abg-writer.h: Add new annotate functions
+       (write_{translation_unit,corpus_to_{archive,native_xml_file}}):
+       Add an optional "annotate" parameter defaulting to "false".
+       * src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add
+       new function definitions.
+       * src/abg-writer.cc (annotate): Define new templatized function
+       and specialize it for necessary cases.
+       * tests/Makefile.am: Add runtestannotate as a new test.
+       * tests/data/Makefile.am: Add paths to below reference test
+       outputs.
+       * tests/data/test-annotate/libtest23.so.abi: New reference test
+       output.
+       * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
+       * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+       * tests/data/test-annotate/test0.abi: Likewise.
+       * tests/data/test-annotate/test1.abi: Likewise.
+       * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise.
+       * tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
+       * tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
+       * tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
+       * tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+       * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+       * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+       * tests/data/test-annotate/test2.so.abi: Likewise.
+       * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+       * tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+       * tests/data/test-annotate/test3.so.abi: Likewise.
+       * tests/data/test-annotate/test4.so.abi: Likewise.
+       * tests/data/test-annotate/test5.o.abi: Likewise.
+       * tests/data/test-annotate/test6.so.abi: Likewise.
+       * tests/data/test-annotate/test7.so.abi: Likewise.
+       * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
+       * tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise.
+       * tests/test-annotate.cc: New test for ABIXML annotations.
+       * tools/abidiff.cc: Add the new option '--no-corpus-path'.
+       * tools/abidw.cc: Likewise. Also add the '--annotate' option.
+       reviews round 1
+
+2017-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Fix test-diff-pkg after commit 2dcc606
+       * tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server
+       packages.
+
+2017-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Add --harmless option to abipkgdiff
+       * doc/manuals/abidiff.rst: Fix a typo.
+       * doc/manuals/abipkgdiff.rst: Document the --harmless option.
+       * tools/abipkgdiff.cc: Update copyright year.
+       (options::show_harmless_changes): Add new data member.
+       (options::options): Initialize the new data member.
+       (display_usage): Add a help string for the new --harmless option.
+       (parse_command_line): Parse the new --harmless option.
+       (set_diff_context_from_opts): Configure the diff context
+       accordingly, if the user provided the --harmless option.
+
+2017-01-20  Dodji Seketeli <dodji@redhat.com>
+
+       Fix suppression category propagation in diff node graph
+       * include/abg-comparison.h (diff::get_class_of_equiv_category):
+       Declare new member function.
+       * src/abg-comparison.cc: Update copyright year.
+       (diff::get_class_of_equiv_category): Define new member function.
+       (suppression_categorization_visitor::visit_end): When considering
+       children nodes category for propagation, consider the category of
+       the class of equivalence of children nodes.
+       * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package.
+       * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise.
+       * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise.
+       * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise.
+       * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise.
+       * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise.
+       * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
+       New reference test output.
+       * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise.
+       * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
+       * tests/data/Makefile.am: Add the new test material above to
+       source distribution.
+       * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
+       to the list of packages to test.
+
+2017-01-18  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 21058 - abipkgdiff wrongly drops non-public types
+       * doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation.
+       (--drop-private-types): Document this new option.
+       * src/abg-tools-utils.cc: Update copyright notice
+       (handle_fts_entry): On the generated suppression specification, do
+       not set the flag to drop matched types.  Also, don't match types
+       defined in files which patch start with "/usr/include/".
+       * tools/abidiff.cc (options::options): Initialize the
+       drop_private_types data member to false.
+       (display_usage): Remove usage string for
+       --dont-drop-private-types.  Add a new one for
+       --drop-private-types.
+       (parse_command_line): Don't part --dont-drop-private-types,
+       rather, parse --drop-private-types.
+       (set_suppressions): When the suppression for private types is
+       generated, if --drop-private-types was provided, then instruct the
+       suppression to drop matched types.
+       * tools/abipkgdiff.cc (options::drop_private_types): New option.
+       (options::options): Initialize the new drop_private_types data
+       member to false.
+       (display_usage): Add a usage string for --drop-private-types.
+       (parse_command_line): Parse the new --drop-private-types option.
+       (maybe_create_private_types_suppressions): Don't take just a
+       package, but a package_descriptor because the latter carries the
+       options.  So when the user used the --drop-private-types option,
+       make the generated private types suppression to drop matched
+       types.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+       Adjust.
+       * tests/test-diff-suppr.cc (in_out_specs): Likewise.
+
+2017-01-18  Dodji Seketeli <dodji@redhat.com>
+
+       Fix some include logic in abg-suppression.cc
+       * src/abg-suppression.cc: Update copyright notice. Fix include
+       files logic.
+
+2017-01-16  Dodji Seketeli <dodji@redhat.com>
+
+       Support virtual member functions with vtable offset not yet set
+       * include/abg-fwd.h (member_function_has_vtable_offset): Declare
+       new function.
+       (get_member_function_vtable_offset): Return a ssize_t, not a
+       size_t.
+       (set_member_function_vtable_offset): Take a ssize_t, not a size_t.
+       * include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust
+       the map typedef to make it take ssize_t as the type of the key.
+       (mem_fn_context_rel::vtable_offset_in_bits_): Make this data
+       member be of ssize_t type, not size_t.
+       (mem_fn_context_rel::mem_fn_context_rel): Initialize the
+       vtable_offset_in_bits_ data member to -1.
+       * src/abg-ir.cc (member_function_has_vtable_offset): Define new
+       function.
+       (get_member_function_vtable_offset): Return a ssize_t, not a
+       size_t.
+       (set_member_function_vtable_offset): Take a ssize_t, not a size_t.
+       * src/abg-dwarf-reader.cc (die_virtual_function_index): Take an
+       int64_t& rather than a uint64_t&.
+       (finish_member_function_reading): Don't set the vtable offset if
+       it's -1.
+       * src/abg-reader.cc (build_class_decl): Likewise.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       [comparison engine] Don't crash when the context is null
+       * src/abg-comparison.cc
+       (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against
+       null context.
+       (diff::is_filtered_out): Likewise.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf reader] Don't abort when trying to canonicalize a non-type
+       * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort
+       when trying to canonicalize a decl.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf reader] properly separate function decls and types in lookup
+       * src/abg-dwarf-reader.cc
+       (read_context::associate_die_to_artifact_by_repr_internal):
+       Choose the right type of representation depending on if we are
+       associating a type or a decl.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf reader] Allow updating and de-duplicating member functions
+       * src/abg-dwarf-reader.cc (add_or_update_class_type): Register
+       member functions for lookup by member function DIE representation.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf reader] Do not over de-duplicate function *definitions*
+       * src/abg-dwarf-reader.cc
+       (build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a
+       function if it's to be completed.
+
+2017-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf reader] Fix pretty printing static methods from DWARF
+       * src/abg-dwarf-reader.cc
+       (die_return_and_parm_names_from_fn_type_die): Take a new
+       'is_static' parameter.
+       (die_qualified_type_name, die_pretty_print_type): Adjust calling
+       die_return_and_parm_names_from_fn_type_die.
+       (die_function_signature): Likewise.  Also, do not forget to print
+       the first parameter for a static method.
+
+2017-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Handle several virtual member functions having the same vtable offset
+       * include/abg-ir.h (class_or_union::virtual_mem_fn_map_type):
+       Define new typedef.
+       (class_decl::get_virtual_mem_fns_map): Declare new accessor.
+       * src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data
+       member.
+       (class_decl::get_virtual_mem_fns_map): Define new accessor.
+       (fixup_virtual_member_function): Populate the new virtual member
+       functions map.
+       (class_decl::on_canonical_type_set): Sort the virtual member
+       function vectors stored in the new virtual member functions map.
+       (class_decl::add_member_function): Call
+       set_member_function_is_virtual *after* calling
+       set_member_function_vtable_offset because the former updates the
+       virtual function map, so it needs the vtable offset.
+       * src/abg-dwarf-reader.cc (finish_member_function_reading):
+       Likewise.
+       * src/abg-reader.cc (build_class_decl): Likewise.
+
+2017-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Speed up pretty representing (function) types
+       * include/abg-ir.h (type_base::get_cached_pretty_representation):
+       Declare new function.
+       (function_type::get_cached_name): Likewise.
+       * src/abg-ir.cc (get_method_type_name): Use the new
+       type_base::get_cached_pretty_representation function.
+       (type_base::priv::{internal_cached_repr_, cached_repr_}): Add new
+       data members.
+       (function_type::priv::{internal_cached_name_, cached_name_}):
+       Likewise.
+       (type_base::get_cached_pretty_representation): Define new
+       function.
+       (function_type::get_cached_name): Likewise.
+       (type_base::get_canonical_type_for): Call
+       type_base::get_cached_pretty_representation here, so the internal
+       representation is cached right before canonicalization.
+       (function_type::{mark_as_being_compared, unmark_as_being_compared,
+       comparison_started}): Uset he new type_base::get_cached_name to
+       speed up function type name retrieval.
+
+2017-01-13  Dodji Seketeli <dodji@redhat.com>
+
+       Add missing deep comparison operators for {function, method}_decl_sptr
+       * include/abg-ir.h (operator==): Declare two new overloads for
+       function_decl_sptr an method_decl_sptr.
+       * src/abg-ir.cc (operator==): Define two new overloads for
+       function_decl_sptr an method_decl_sptr.
+
+2017-01-16  Dodji Seketeli <dodji@redhat.com>
+
+       Fix performance regression while analyzing libjvm.so
+       * include/abg-ir.h ({type_base,
+       class_decl}::on_canonical_type_set): Declare new virtual member
+       function.
+       * src/abg-ir.cc (type_base::on_canonical_type_set): Define new
+       virtual member function that does nothing.
+       (class_decl::on_canonical_type_set): Define new virtual member
+       function that sorts the virtual member functions of class_decl.
+       (canonicalize): Invoke type_base::on_canonical_type_set when the
+       canonical type is set.
+       (fixup_virtual_member_function): Don't sort virtual member
+       functions here.
+       * src/abg-dwarf-reader.cc (finish_member_function_reading): Do not
+       sort virtual member functions here.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+
+2017-01-14  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc
+       * include/abg-fwd.h: Adjust copyright.
+       * include/abg-ir.h: Likewise.
+       * tests/test-abidiff.cc: Likewise.
+
+2017-01-16  Dodji Seketeli <dodji@redhat.com>
+
+       Remove unused functions from abg-ir.cc
+       * src/abg-ir.cc (convert_node_to_decl): Remove specializations for
+       class_decl_sptr, type_base_sptr and var_decl_sptr.
+
+2016-11-10  Dodji Seketeli <dodji@redhat.com>
+
+       Support Linux Kernel ABI whitelist files
+       * include/abg-suppression.h
+       (function_suppression::function_suppression): Make the declaration
+       of the default constructor public.
+       * src/abg-suppression-priv.h (function_suppression::priv::priv):
+       Declare a default constructor.
+       * src/abg-suppression.cc
+       (function_suppression::function_suppression): Define default
+       constructor.
+       * include/abg-tools-utils.h
+       (gen_suppr_spec_from_kernel_abi_whitelist): Declare new function.
+       * src/abg-tools-utils.cc
+       (gen_suppr_spec_from_kernel_abi_whitelist): Define new function.
+       * tools/abidiff.cc (options::kernel_abi_whitelist_paths):
+       (display_usage): Display a help string for the new
+       --linux-kernel-abi-whitelist option.
+       (parse_command_line): Parse the --linux-kernel-abi-whitelist from
+       the command line.
+       (maybe_check_suppression_files): Check the presence of the kernel
+       abi whitelist files.
+       (set_suppressions): Generate suppression specifications from the
+       whitelist files.
+
+2016-10-10  Dodji Seketeli <dodji@redhat.com>
+
+       Support Linux Kernel binaries
+       * include/abg-dwarf-reader.h (create_read_context): Take a new
+       flag to say if the context is to read an ELF binary in linux
+       kernel mode.
+       * src/abg-dwarf-reader.cc (typedef address_set_type)
+       (address_set_sptr): New typedefs.
+       (get_binary_load_address):  The load address of the binary is
+       the load address specified by the program header that is at the
+       smallest offset; not by the program header that is at offset zero.
+       (read_context::{ksymtab_section_, ksymtab_gpl_section_,
+       linux_exported_fn_syms_, linux_exported_var_syms_,
+       linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_,
+       load_in_linux_kernel_mode_}): New data members.
+       (read_context::read_context): Initialize ksymtab_section_,
+       ksymtab_gpl_section_ and load_in_linux_kernel_mode_.
+       (read_context::{find_symbol_table_section, find_opd_section,
+       lookup_elf_fn_symbol_from_address,
+       lookup_elf_var_symbol_from_address, get_function_address,
+       get_variable_address}): Make these const.
+       (read_context::{find_ksymtab_section, find_ksymtab_gpl_section,
+       lookup_elf_symbol_from_address, function_symbol_is_exported,
+       variable_symbol_is_exported, linux_exported_fn_syms,
+       create_or_get_linux_exported_fn_syms, linux_exported_var_syms,
+       create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms,
+       linux_exported_gpl_var_syms,
+       create_or_get_linux_exported_gpl_fn_syms,
+       linux_exported_gpl_var_syms,
+       create_or_get_linux_exported_gpl_var_syms, architecture_word_size,
+       load_kernel_symbol_table, load_ksymtab_symbols,
+       load_ksymtab_gpl_symbols,
+       load_linux_specific_exported_symbol_maps,
+       load_in_linux_kernel_mode}): New member functions.
+       (read_context::read_int_from_array_of_bytes): Factorize this
+       new member function out of ...
+       (read_context::{lookup_ppc64_elf_fn_entry_point_address}):
+       ... this.  Make this function const too.
+       (read_context::read_uint64_from_array_of_bytes): New function.
+       Uses read_int_from_array_of_bytes above.
+       (read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol
+       maps only when it's necessary.
+       (read_context::elf_architecture_is_big_endian): Fix logic.
+       (read_context::{var_addr_sym_map}):  Express the const variant in
+       terms of the non-const one.  In the non-const one, load the map
+       only when necessary.
+       (read_context::load_symbol_maps_from_symtab_section): Renamed
+       load_symbol_maps into this.
+       (read_context::is_linux_kernel_binary): Define new member
+       function.
+       (read_context::{function, variable}_symbol_is_exported): If we are
+       not prevented from considering loading in linux kernel mode, then
+       just looking at a linux kernel binary makes us consider the
+       special kernel sections.
+       (read_debug_info_into_corpus): Likewise.
+       (build_ir_node_from_die): Take a new flag that says if the ir node
+       is a declaration required by another concrete IR node.
+       (enum read_context::kernel_symbol_table_kind): New enum.
+       (read_context::load_symbol_maps): Support loading linux kernel
+       specific sections too.
+       (build_var_decl): Use the new
+       read_context::variable_symbol_is_exported.
+       (function_is_suppressed): Suppress non-member functions or
+       variables that are not declarations and that have no symbol.
+       (variable_is_suppressed, build_var_decl_if_not_suppressed): Take a
+       new flag that says if the variable is a declaration required by a
+       concrete variable.  If non member variable that is a declaration
+       is not the specification of another concrete variable, then it's
+       suppressed.
+       (add_fn_symbols_to_map, add_var_symbols_to_map): New function
+       definitions.
+       (read_debug_info_into_corpus): If we are reading linux kernel or
+       linux kernel modules, only set explicitely exported symbols (in
+       the linux kernel binary sense) as exported function or variable
+       symbols.
+       (create_read_context): Take a new flag to say if the context is to
+       read an ELF binary in linux kernel mode.
+       * tools/abidiff.cc (options::options): Initialize
+       options::linux_kernel_mode to true.
+       (display_usage): Display usage of the --no-linux-kernel-mode option.
+       (parse_command_line): Parse the --no-linux-kernel-mode option.
+       * tools/abidw.cc (options::options): Initialize
+       options::linux_kernel_mode to true.
+       (display_usage): Display usage of --no-linux-kernel-mode option.
+       (parse_command_line): Parse the --no-linux-kernel-mode option.
+       * doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode
+       options.
+       * doc/manuals/abidw.rst: Likewise.
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
+
+2017-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Add debug routines to dump locations to a stream
+       * src/abg-writer.cc (dump_location): Define new function and one
+       overload.
+       (dump_decl_location): Re-write in terms of the new dump_location.
+
+2017-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Better de-duplicate classes, unions, enums in non-odr contexts
+       * src/abg-dwarf-reader.cc (build_enum_type)
+       (add_or_update_class_type, add_or_update_union_type): When the ODR
+       is not relevant, use the location of the type to detect if two
+       enum, class or union types of the same name actually represent the
+       same type.
+
+2017-01-06  Dodji Seketeli <dodji@redhat.com>
+
+       Adjust some reference outputs of the test-read-dwarf test harness
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2017-01-04  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Bug 18754 - Add the "--no-added-syms" option to abidiff
+       * doc/manuals/abidiff.rst: Document the new --no-added-syms
+       option.
+       * tools/abidiff.cc (struct options): Add show_added_syms and
+       set it to true by default.
+       (display_usage): Document the new options --no-added-syms. If
+       this is the only suppression option specified, it is equivalent
+       to specifying --show_{changed,deleted}_{fns,vars} as arguments
+       to abidiff. If any of those options are specified before
+       --no-added-syms, then it has no effect.
+       (parse_command_line): Parse the new option and set
+       show_added_{fns,vars,syms} and show_all_{fns,vars} to false if
+       --no-added-syms is specified.
+       * tests/test-diff-filter.cc: Add a test for the new option.
+       * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
+       Reference results for the new test.
+       * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
+       Likewise.
+       * tests/data/Makefile.am: Add the above test files to the list of
+       test data.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Update copyright year on a bunch of files
+       * include/abg-corpus.h: Update copyright year to 2017.
+       * src/abg-dwarf-reader.cc: Likewise.
+       * src/abg-ir.cc: Likewise.
+       * src/abg-reader.cc: Likewise.
+       * src/abg-writer.cc: Likewise.
+       * tools/abicompat.cc: Likewise.
+       * tools/abidw.cc: Likewise.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       [apidoc] Allow brief description at the top of class description pages
+       * doc/api/libabigail.doxy: Don't disable "brief member desc".
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style fixes
+       * include/abg-corpus.h: Remove corpus_sptr typedef. It's in
+       abg-fwd.h now.
+       * src/abg-ir.cc: Remove some unnecessary vertical space.
+       * src/abg-reader.cc (build_function_decl): Cleanup some asserts.
+       * src/abg-writer.cc (write_function_type): Each the inspection of
+       the type id from within the debugger.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Misc comments and apidoc fixes
+       * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix
+       typo in comment.
+       * tools/abicompat.cc (perform_compat_check_in_weak_mode): Better
+       comments.
+       * tools/abidw.cc (dislay_usage): Fix white spaces.
+       Conflicts:
+       tools/abidw.cc
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Speedup set_member_is_static
+       * src/abg-ir.cc (set_member_is_static): When comparing data
+       members, consider only their names.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Avoid unnecessary updates to type lookup maps
+       * src/abg-ir.cc (class_or_union::get_is_declaration_only): Try
+       to update the type maps only when a declaration-only class
+       type is now defined.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Update tests/data/test-read-dwarf/*.abi files
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+       Update.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       [abixml writer] Make sure all function types are emitted
+       * src/abg-writer.cc (write_translation_unit): Fix logic to avoid
+       forgetting referenced function types.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       [abixml writer] Fix comparison of pointer to types
+       * src/abg-writer.cc (type_ptr_comp::operator()): Do not add an
+       empty type id string to the type -> type id map when the entry for
+       a given type is empty.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf-reader] Don't early canonicalize function types
+       * src/abg-dwarf-reader.cc (maybe_canonicalize_type):
+       Late-canonicalize function types.
+       signed-off-by: Dodji Seketeli <dodji@redhat.com>
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Fix qualified name caching for some types
+       * src/abg-ir.cc ({qualified, pointer,
+       array}_type_def::get_qualified_name): Don't cache internal and
+       non-internal qualified name when the type is not canonicalized.
+
+2017-01-04  Dodji Seketeli <dodji@redhat.com>
+
+       Cleanup ODR-based type canonicalization optimization gating logic
+       * src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear
+       that the ODR-based optimization is allowed only on C++ ABI
+       corpora.
+
+2017-01-04  Dodji Seketeli <dodji@redhat.com>
+
+       Fix a typo in method name computation
+       * src/abg-ir.cc (get_method_type_name): Really return the method
+       name.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Update tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
+       * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
+
+2017-01-05  Dodji Seketeli <dodji@redhat.com>
+
+       Update tests/data/test-read-write/test27.xml
+       * tests/data/test-read-write/test27.xml: Adjust.
+
+2017-01-04  Dodji Seketeli <dodji@redhat.com>
+
+       [dwarf-reader] Handle per translation-unit type de-duplication
+       * src/abg-dwarf-reader.cc
+       (read_context::per_tu_name_artefacts_map_): New data member.
+       (read_context::clear_per_translation_unit_data): Clear the new
+       read_context::per_tu_name_artefacts_map_.
+       (read_context::associate_die_to_decl): Take a flag to say if we
+       should associate a DIE to its representation and another one to
+       say if the association should be done per-tu or per-corpus.
+       (read_context::lookup_{type_artifact, artifact}_from_die): Update
+       apidoc.
+       (read_context::lookup_artifact_from_die_representation): Likewise.
+       (read_context::{associate_die_to_artifact_by_repr,
+       associate_die_to_artifact_by_repr_internal,
+       associate_die_to_type}): Take a flag to say if the associating
+       should be done on a per-tu basis.
+       (read_context::lookup_{type_artifact, artifact}_from_die_per_tu):
+       New member functions.
+       (read_context::{lookup_artifact_from_per_tu_die_representation,
+       odr_is_relevant}): Likewise.
+       (build_enum_type, add_or_update_class_type)
+       (add_or_update_union_type): If ODR is not relevant, do not perform
+       per-corpus de-duplication.
+       (build_pointer_type_def, build_typedef_type): Do not associate the
+       type to its representation as these kinds of typs are not
+       de-duplicated.
+       (build_function_type):  If ODR is not relevant, perform per-tu
+       de-duplication.  When ODR is relevant, per-corpus de-duplication
+       is performed.
+       (build_or_get_fn_decl_if_not_suppressed): Function decls are
+       always de-duplicated per-corpus.
+       (build_ir_node_from_die): For data members, do not update the die
+       representation map as data members are not de-duplicated.  Do not
+       do it for function decls either.
+       [1]: https://en.wikipedia.org/wiki/One_Definition_Rule
+
+2017-01-02  Dodji Seketeli <dodji@redhat.com>
+
+       Handle per translation unit and per corpus types maps
+       * include/abg-fwd.h (lookup_type_in_corpus): Remove.  This is to
+       be replaced by the new lookup_type below.
+       (lookup_{basic, class, union, enum, typedef, qualified, pointer,
+       reference, array, function, class_or_typedef,
+       class_typedef_or_enum}_type):
+       (lookup_class_type_through_scopes, lookup_type)
+       (lookup_type_through_scopes, lookup_or_synthesize_fn_type)
+       * src/abg-ir-priv.h (struct translation_unit::priv):  Move this
+       private type here, from abg-ir.h.
+       (synthesize_type_from_translation_unit): Declare new functions.
+       * include/abg-ir.h (class type_maps): Define new type.
+       (translation_unit::get_function_types): Remove.
+       (translation_unit::get_types): Now return a type_maps.
+       (translation_unit::get_live_fn_types): Declare new type.
+       (class decl_base): Make canonicalize be a friend of this class.
+       * src/abg-ir.cc (struct translation_unit::priv): Move this to
+       abg-ir-priv.h
+       (struct type_maps::priv): Define new type.
+       (type_maps::{basic, class, union, enum, typedef, qualified,
+       pointer, reference, array, function}_types): Define new accessors.
+       (translation_unit::bind_function_type_life_time): Adjust.
+       (translation_unit::get_function_types): Remove accessor.
+       (translation_unit::get_types, get_live_fn_types): Define new
+       accessors.
+       (lookup_type_in_translation_unit)
+       (lookup_class_type_in_translation_unit)
+       (lookup_function_type_in_translation_unit)
+       (synthesize_type_from_translation_unit)
+       (synthesize_function_type_from_translation_unit)
+       (lookup_class_type_in_translation_unit) Remove function
+       definitions.
+       (lookup_type_in_map): Define function template.
+       (lookup_{basic, class, union, typedef, class_or_typedef,
+       class_typedef_or_enum, qualified, pointer, reference, array,
+       function}_type): Define functions.
+       (lookup_function_type, lookup_type_through_scopes)
+       (lookup_class_type_through_scopes)
+       (lookup_basic_type_through_translation_units)
+       (lookup_union_type_through_translation_units)
+       (lookup_enum_type_through_translation_units)
+       (lookup_class_type_through_translation_units)
+       (lookup_typedef_type_through_translation_units)
+       (lookup_qualified_type_through_translation_units)
+       (lookup_pointer_type_through_translation_units)
+       (lookup_reference_type_through_translation_units)
+       (lookup_array_type_through_translation_units)
+       (lookup_function_type_through_translation_units)
+       (lookup_type_through_translation_units)
+       (lookup_or_synthesize_fn_type, lookup_type): Likewise.
+       (maybe_update_types_lookup_map)
+       (maybe_update_types_lookup_map<class_decl>)
+       (maybe_update_types_lookup_map<function_type>): Define function
+       template, specilizations and functions.
+       (synthesize_type_from_translation_unit)
+       (synthesize_function_type_from_translation_unit): Define
+       functions.
+       * include/abg-corpus.h (corpus::get_types): Declare new accessor.
+       * src/abg-corpus.cc (corpus::priv::get_types): Define new
+       accessor.
+       (corpus::get_types): Likewise.
+       (lookup_type_in_corpus, lookup_class_type_in_corpus)
+       (lookup_type_in_corpus, lookup_function_type_in_corpus)
+       (maybe_update_types_lookup_map)
+       (maybe_update_types_lookup_map<class_decl>)
+       (maybe_update_types_lookup_map<function_type>): Remove.
+       (lookup_{basic, class, union, enum, typedef, qualified, pointer,
+       reference, array, function, class_or_typedef,
+       class_typedef_or_enum}_type): Likewise.
+       * src/abg-corpus-priv.h (corpus::priv::{basic, class, union,
+       typedef, qualified, pointer, reference, array, function}_types):
+       Remove these data members.
+       (corpus::priv::get_scopes): Remove member function.
+       (corpus::priv::get_{basic, class, union, enum, typedef, qualified,
+       pointer, reference, array, function}_types): Remove member
+       function declarations.
+       (corpus::priv::types_): New data member.
+       (corpus::priv::get_types): Declare new member function.
+       (lookup_{basic, class, enum, typedef, class_or_typedef, qualified,
+       pointer, reference, array, function}_type): Declare new functions.
+       * src/abg-dwarf-reader.cc
+       (read_context::resolve_declaration_only_classes)
+       (build_translation_unit_and_add_to_ir): Adjust use of
+       lookup_class_type.
+       * src/abg-reader.cc (read_context::type_is_from_translation_unit):
+       Adjust to the use of lookup_function_type_in_translation_unit that
+       got renamed into lookup_function_type.
+       * src/abg-writer.cc (type_ptr_cmp::operator()): New operator
+       implementation.
+       (read_context::sort_type): Add new overloads.
+       (write_translation_unit): Adjust to get the function types from
+       the new translation_unit::get_live_fn_types and sort them.
+       * tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust
+       to use the new lookup_or_synthesize_fn_type, in lieu of
+       lookup_function_type_in_corpus.  Adjust to use lookup_type in lieu
+       of lookup_type_in_corpus.
+
+2016-12-21  Dodji Seketeli <dodji@redhat.com>
+
+       Make abg-fwd.h use *_sptr typedefs
+       * include/abg-ir.h: Move convience typedef declarations and some
+       necessary forward declarations to ...
+       * include/abg-fwd.h: ... here.
+       (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
+       (lookup_type_in_scope): Return a type_base_sptr.
+       (lookup_type_through_scopes): Introduce this to later replace the
+       overload of lookup_type_in_translation_unit that takes a list of
+       strings.
+       (lookup_type_in_scope): Return a type_base_sptr, not a
+       decl_base_sptr.
+       * src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope)
+       (lookup_var_decl_in_scope): Adjust.
+       (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
+       (lookup_node_in_scope): Return a type_or_decl_base_sptr.
+       (lookup_type_in_scope): Return a type_base_sptr.
+       (lookup_node_in_translation_unit): Return a
+       type_or_decl_base_sptr.
+       (lookup_type_through_scopes): Replace
+       lookup_type_in_translation_unit.
+
+2016-12-18  Chenxiong Qi <cqi@redhat.com>
+
+       Fix wrong variable name
+       * tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix
+       wrong variable name distro.
+
+2016-12-18  Chenxiong Qi <cqi@redhat.com>
+
+       Warn properly when cannot find peer RPM
+       * tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None
+       when cannot find peer RPM due to nonexistent arch.
+
+2016-12-19  Chenxiong Qi <cqi@redhat.com>
+
+       Read Koji config via Koji API
+       * tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and
+       DEFAULT_KOJI_SERVER from Koji config via Koji API read_config.
+       (build_commandline_args_parser): --topdir is renamed to
+       --topurl.
+       * doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl.
+
+2016-12-19  Chenxiong Qi <cqi@redhat.com>
+
+       Follow moved packages when download
+       * tools/fedabipkgdiff: (download_rpm) Add --location to curl
+       CLI.
+
+2016-12-13  Chenxiong Qi <cqi@redhat.com>
+
+       More document for local RPMs comparison
+       * doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs
+       comparison. Also fixed a typo.
+
+2016-12-15  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Properly report missing files for abipkgdiff
+       * tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag
+       (parse_command_line): Check if the files given exist.
+       (main): Check the nonexistent_file flag. If any of the input
+       files don't exist, report it and exit. Also, for present and future test
+       uniformity, only show the base names of the packages when using their
+       names in error output.
+       * tests/test-diff-pkg.cc: Add a new regression test.
+       * tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The
+       expected output of the above regression test.
+       * tests/data/Makefile.am: Add the above file to the list.
+
+2016-12-15  Dodji Seketeli <dodji@redhat.com>
+
+       Misc style cleanup
+       * src/abg-dwarf-reader.cc (build_function_type): Remove
+       unnecessary new line.
+
+2016-12-15  Dodji Seketeli <dodji@redhat.com>
+
+       make is_anonymous_type work for unions and classes
+       * src/abg-ir.cc (is_anonymous_type): Make this work for class or
+       union types, no only classes.
+
+2016-12-15  Dodji Seketeli <dodji@redhat.com>
+
+       Naming typedefs of classes are not read properly from abixml
+       * src/abg-reader.cc (build_class_decl): Use
+       read_context::build_or_get_type_decl rather than
+       read_context::get_type_decl to build the naming typedef referred
+       to by the class being built.  Move the handling of naming typedefs
+       after the class is marked as WIP and keyed.
+
+2016-12-15  Dodji Seketeli <dodji@redhat.com>
+
+       Don't early-canonicalize function types when reading abixml
+       * src/abg-reader.cc (read_context::maybe_canonicalize_type):
+       late-canonicalize function types too.
+
+2016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Check --enable-rpm dependencies more rigorously
+       * configure.ac: Check if both rpm2cpio and cpio
+       exist on the system. If not, disable the option and fail the
+       configuration if --enable-rpm was specified explicitly.
+
+2016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       abipkgdiff doesn't mention --no-default-suppression in help
+       * tools/abipkgdiff.cc (display_usage): Mention
+       --no-default-suppression as one of the options.
+
+2016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Fix a few remarks made by cppcheck
+       * src/abg-comparison.cc (types_or_decls_equal::operator()): Pass
+       arguments by reference.
+       (class_diff::ensure_lookup_tables_populated): Expression
+       !A || (A && B) can be reduced to !A || B.
+       * src/abg-suppression.cc (suppression_matches_type_no_name):
+       Likewise.
+
+2016-12-09  Ondrej Oprala <ondrej.oprala@gmail.com>
+
+       Bug 19272 - abipkgdiff doesn't report arch change
+       * src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
+       The architecture change into account.
+       (corpus_diff::has_net_changes): Take architecture and soname
+       changes into account.
+       * tools/abicompat.cc (perform_compat_check_in_normal_mode): Use
+       corpus_diff::{has_net_changes, has_incompatible_changes}.
+       * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New
+       test input.
+       * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
+       New test reference output.
+       * tests/data/Makefile.am: Add the new test material above to
+       source distribution.
+       * tests/test-diff-pkg.cc (in_out_spec): Compare the new package
+       above against an x86_64 one.
+
+2016-08-11  Chenxiong Qi <cqi@redhat.com>
+
+       Bug 20380 - Compare two local RPMs
+       * configure.ac: add dependent mimetype module.
+       * doc/manuals/fedabipkgdiff.rst: Update to add document for the
+       new use case of comparing two local RPMs.
+       * tests/data/Makefile.am: Include new RPMs for tests.
+       * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm:
+       New RPM for running test.
+       * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm:
+       Likewise.
+       * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt:
+       Rename filename by adding .rpm extension.
+       * tests/data/test-fedabipkgdiff/test5-same-dir-dbus-glib-0.100.2-2.fc20.x86_64--dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
+       New reference output for testing comparing local RPMs.
+       * tests/data/test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt:
+       New reference output for testing comparison without non-existent
+       debuginfo or development package.
+       * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
+       Rename filename for test4. Add two new test cases.
+       (run_fedabipkgdiff_tests): Remove semicolon and trailing
+       whitespaces.
+       (main): Likewise.
+       (ensure_output_dir_created): Likewise.
+       * tools/fedabipkgdiff: Require some new modules.
+       Fix of return code.
+       (PkgInfo): Renamed to ComparisonHalf.
+       (match_nvr): New method to determine if a string matches format
+       of N-V-R.
+       (match_nvra): New method to determine if a string matches format
+       of N-V-R.A.
+       (is_rpm_file): New method to guess if a file is a RPM file.
+       (RPM.is_peer): New method to determine if current RPM is a peer
+       of another.
+       (RPM.filename): Use Koji module API to construct the filename.
+       (RPM.nvra): Get nvra from filename instead of constructing
+       manually that is duplicated with Koji module API.
+       (RPMCollection): New class to represent a set of RPMs.
+       (generate_pkg_info_pair_for_abipkgdiff): New method working as a
+       generator to yeild comparison halves for running abipkgdiff.
+       (Brew.getRPM): Fix string format with incorrect argument.
+       (Brew.select_rpms_from_a_build): Return instance of
+       RPMCollection.
+       (abipkgdiff): If there is no debuginfo or development package,
+       just ignore it and leave a warning. If --error-on-warning is
+       specified, raise an exception instead. Arguments are modified
+       to represent the new name ComparisonHalf, and relative docstring
+       is also updated.
+       (magic_construct): Removed.
+       (run_abipkgdiff): Rewrite.
+       (make_rpms_usable_for_abipkgdiff): Removed.
+       (diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using
+       RPMCollection.
+       (diff_latest_rpms_based_on_distros): Likewise.
+       (diff_two_nvras_from_koji): Likewise.
+       (diff_from_two_rpm_files): New method to compare two local RPMs.
+       (build_commandline_args_parser): Add new option
+       --error-on-warning.
+       (main): Add support to compare local RPMs.
+
+2016-12-12  Dodji Seketeli <dodji@redhat.com>
+
+       Fix template_decl::hash::operator()
+       * src/abg-hash.cc (template_decl::hash::operator()): Combine the
+       contribution of the qualified name to the contribution of the type
+       name to the hash.
+
+2016-12-09  Dodji Seketeli <dodji@redhat.com>
+
+       Fix aborting when reading .foo symbols from a ppc64 binary
+       * abg-dwarf-reader.cc (read_context::find_opd_section): Fix
+       comment.
+       (read_context::load_symbol_maps): If for a given function entry
+       point (that we got by looking at the ".opd" section for a given
+       function pointer value) we already had an entry in the
+       function_entry_address -> symbol, maybe it means that the previous
+       entry that we had was from an entry in the symbol table which
+       value was directly the entry point address of a function.  In that
+       case, if the name of the symbol is "foo", the name of the symbol
+       which value is directly the entry point address is ".foo".  What
+       we do in this case is that we just keep the reference to the "foo"
+       symbol in the function_entry_address -> symbol map.
+       (read_context::address_is_in_opd_section): Define new member
+       function.
+       * tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input.
+       * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
+       * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise.
+       * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
+       * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt:
+       New test reference output.
+       * tests/data/Makefile.am: Add the new test input and reference
+       output to source distribution.
+       * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
+       and reference output to the set of inputs that are compared.
+
+2016-12-05  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 20927 - Segfault when $HOME is not set
+       * src/abg-tools-utils.cc
+       (get_default_user_suppression_file_path): Handle the case where
+       the HOME environment variable is not set.
+       * tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
+       Likewise.  When $HOME is empty set then use $TMPDIR.  If it's
+       empty too then use "/tmp".
+
+2016-12-02  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 20887 - Show relative change of offsets
+       * doc/manuals/abidiff.rst: Document the new
+       --no-show-relative-offset-changes.
+       * doc/manuals/abipkgdiff.rst: Likewise.
+       * include/abg-comparison.h
+       (diff_context::show_relative_offset_changes): New accessors.
+       * include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t
+       instead of the less portable size_t.
+       * src/abg-comparison.cc
+       (diff_context::priv::show_relative_offset_changes_): New data
+       member.
+       (dif_context::show_relative_offset_changes): Define accessor.
+       (maybe_show_relative_offset_change): Define new function.
+       (represent): In the overload for var_diff, call the new
+       maybe_show_relative_offset_change.
+       (report_size_and_alignment_changes):  If the size of the type
+       didn't change then say it now.
+       * src/abg-ir.cc (set_data_member_offset, get_data_member_offset):
+       Take or return a uint64_t instead of a size_t.
+       * tools/abidiff.cc (options::show_relative_offset_changes): New
+       data member.
+       (options::options): Initialize it.
+       (display_usage): Display help string for the new
+       --no-show-relative-offset-changes.
+       (parse_command_line): Parse the new
+       --no-show-relative-offset-changes options.
+       (set_diff_context_from_opts): Set the
+       "show-relative-offset-changes" flag according to the new option.n
+       * tools/abipkgdiff.cc (options::show_relative_offset_changes): New
+       data member.
+       (options::options): Initialize it.
+       (display_usage): Add help string for the new
+       --no-show-relative-offset-changes option.
+       (set_diff_context_from_opts): Set the
+       "show-relative-offset-changes" flag according to the new option.
+       (parse_command_line): Parse the new command line option.
+       * tests/data/test-diff-dwarf/test40-report-0.txt: Add new
+       reference output.
+       * tests/data/test-diff-dwarf/test40-v0.c: Source code of the first
+       test binary.
+       * tests/data/test-diff-dwarf/test40-v1.c: Source code of the
+       second test binay.
+       * tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary.
+       * tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary.
+       * tests/test-diff-dwarf.cc (in_out_spec): Add the new test
+       binaries above to the set of binaries that are compared.
+       * tests/data/Makefile.am: Add the new test material to source
+       distribution.
+       * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust.
+       * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
+       * tests/data/test-abidiff/test-enum0-report.txt: Likewise.
+       * tests/data/test-abidiff/test-enum1-report.txt: Likewise.
+       * tests/data/test-abidiff/test-struct1-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test0-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test1-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test10-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test11-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test13-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
+       * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
+       * tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
+       * tests/data/test-diff-dwarf/test4-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test5-report.txt: Likewise.
+       * tests/data/test-diff-dwarf/test6-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/test1-report.txt: Likewise.
+       * tests/data/test-diff-filter/test13-report.txt: Likewise.
+       * tests/data/test-diff-filter/test16-report-2.txt: Likewise.
+       * tests/data/test-diff-filter/test16-report.txt: Likewise.
+       * 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/test18-report.txt: Likewise.
+       * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
+       * tests/data/test-diff-filter/test2-report.txt: Likewise.
+       * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t:
+       Likewise.xt
+       * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test3-report.txt: Likewise.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+       Likewise.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+       Likewise.
+       * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise.
+       * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
+       * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
+       * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: 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/test30-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
+       * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
+       * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: 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-7.txt: Likewise.
+       * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
+
+2016-12-02  Dodji Seketeli <dodji@redhat.com>
+
+       Rename tests/update-test-read-dwarf-output.py
+       * tests/update-test-output.py: renamed
+       tests/update-test-read-dwarf-output.py into this.  Update its
+       comments.  Make this script executable.
+
+2016-11-30  Dodji Seketeli <dodji@redhat.com>
+
+       Add tests/data/test-diff-suppr/test33-report-0.txt to tarball
+       * tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt.
+
+2016-11-30  Dodji Seketeli <dodji@redhat.com>
+
+       Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist
+       * tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
+       Ensure that the cache directory is created, even when
+       XDG_CACHE_HOME is set.  Also, remove the now useless "using
+       abigail::tools_utils::get_random_number_as_string" statement.
+
+2016-11-09  Dodji Seketeli <dodji@redhat.com>
+
+       Very light speed improvements
+       * include/abg-comp-filter.h (has_harmless_name_change): Pass smart
+       pointers by reference.
+       * src/abg-comp-filter.cc (access_changed)
+       (function_name_changed_but_not_symbol)
+       (non_static_data_member_type_size_changed)
+       (static_data_member_type_size_changed, is_compatible_change)
+       (decl_name_changed, has_harmless_name_change):  Pass smart
+       pointers by reference.
+       * include/abg-ir.h (decl_base::set_context_rel): Take a bare
+       pointer, not a smart pointer.
+       * src/abg-ir.cc (decl_base::priv::context_): Make this data member
+       be a naked pointer, not a smart pointer.
+       (decl_base::priv::priv): Initialize it.
+       (decl_base::priv::~priv): New constructor.
+       (decl_base::{get_context_rel, set_scope}): Adjust.
+       (class_decl::method_decl::{method_decl, set_scope}): Likewise.
+       (equals): In the overload for var_decl, compare the type of the
+       var first as that might be faster (to detect var_decls with
+       different types) in the general case where types are
+       canonicalized.
+
+2016-11-08  Dodji Seketeli <dodji@redhat.com>
+
+       Introduce on-the-fly type canonicalization
+       * include/abg-ir.h (environment::do_on_the_fly_canonicalization):
+       Declare new member functions.
+       ({type_base, function_type}::priv_): Make this public so that
+       static non-member functions defined in abg-ir.cc can access it.
+       * src/abg-ir.cc
+       (environment::priv::do_on_the_fly_canonicalization_): New data
+       member.
+       (environment::priv::priv): Initialize it.
+       (environment::do_on_the_fly_canonicalization): Define new member
+       functions.
+       (type_base::get_canonical_type_for): Trigger on-the-fly
+       canonicalization during comparison of the type being canonicalized
+       and an already canonicalized type.
+       (types_are_being_compared, maybe_propagate_canonical_type): Define
+       new static functions.
+       (equals): In overloads for class_decl and function_type, call
+       maybe_propagate_canonical_type when the two types compare equal.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+       Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2016-11-06  Dodji Seketeli <dodji@redhat.com>
+
+       Fix pretty representation of array types
+       * include/abg-ir.h (array_type_def::is_infinite): Fix indentation.
+       * src/abg-ir.cc (qualified_type_def::build_name): An empty set of
+       sub-ranges for a vector is represented by "[]".
+       (array_type_def::is_infinite): If a vector has no sub-range, that
+       means it has an infinite size.  Adjust comment.
+       * tests/data/test-diff-filter/test33-report-0.txt: Adjust.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2016-10-11  Dodji Seketeli <dodji@redhat.com>
+
+       Support naming typedef and use them to speed up type canonicalization
+       * include/abg-ir.h (typedef_decl_wptr): New typedef.
+       (class_decl::{g,s}et_naming_typedef): Declare new member
+       functions.
+       * src/abg-dwarf-reader.cc (build_typedef_type): When the
+       underlying type of a typedef is an anonymous class, the class type
+       is said to have a naming typedef.
+       * src/abg-ir.cc (is_anonymous_type):  An anonymous class that has
+       a naming typedef is said to not be anonymous anymore.
+       (class_decl::priv::naming_typedef): New data member.
+       (class_decl::{g,s}et_naming_typedef): Define new member functions.
+       (class_decl::get_pretty_representation): When called for internal
+       purposes (e.g, for type canonicalization) compute the pretty
+       representation of the class by using its typedef name, when class
+       is anonymous and has a naming typedef.
+       * src/abg-reader.cc (build_class_decl): Read the new
+       "naming-typedef-id" attribute.
+       * src/abg-writer.cc (write_naming_typedef): New function.
+       (write_class_decl_opening_tag): Use the new write_naming_typedef
+       function.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+       Likewise.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2016-11-02  Dodji Seketeli <dodji@redhat.com>
+
+       Implement de-duplication for types and decls at DWARF loading time
+       * include/abg-ir.h (method_type::priv_): Introduce new pimpl
+       pointer here.
+       (method_type::class_type_): Move this into the pimpl idiom.
+       (method_type::method_type): Take a new is_const flag.
+       (method_type::get_class_type): Make this method out-of-line.
+       (method_type::{s,g}et_is_const): Declare new member functions.
+       (get_method_type_name): Declare this function as a friend of
+       the method_type type.
+       * src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and
+       abg-corpus-priv.h.
+       (typedef die_tu_map_type): Fix comment.
+       (typedef die_istring_map_type): New typedef.
+       (class read_context::die_source_dependant_container_set): New
+       class template.
+       (read_context::{die_qualified_name_maps_, die_pretty_repr_maps_,
+       die_pretty_type_repr_maps_}): Define new data members.
+       (read_context::{get_die_qualified_name, get_die_qualified_name,
+       get_die_qualified_type_name, get_die_pretty_type_representation,
+       get_die_pretty_representation, lookup_type_artifact_from_die,
+       lookup_artifact_from_die, lookup_artifact_from_die_representation,
+       associate_die_to_artifact_by_repr,
+       associate_die_to_artifact_by_repr_internal,
+       lookup_type_from_die}): Define new member functions.
+       (read_context::lookup_type_from_die_offset): Fix comment.
+       (get_parent_die, get_scope_die, die_is_decl)
+       (die_is_namespace, die_is_unspecified, die_is_void_type)
+       (die_is_pointer_type, die_is_reference_type)
+       (die_is_pointer_or_reference_type, die_is_class_type)
+       (die_has_object_pointer, die_this_pointer_from_object_pointer)
+       (die_this_pointer_is_const, is_decl_tag)
+       (die_object_pointer_is_for_const_method, die_is_at_class_scope)
+       (die_name, die_qualified_type_name, die_qualified_decl_name)
+       (die_qualified_name, die_qualified_type_name_empty)
+       (die_return_and_parm_names_from_fn_type_die)
+       (die_function_signature, die_peel_qual_ptr)
+       (die_function_type_is_method_type, die_pretty_print_type)
+       (die_pretty_print_decl, die_pretty_print)
+       (build_subranges_from_array_type_die)
+       (build_or_get_fn_decl_if_not_suppressed)
+       (lookup_class_or_typedef_type)
+       (lookup_class_typedef_or_enum_type_from_corpus)
+       (is_function_for_die_a_member_of_class)
+       (add_or_update_member_function): Define new static functions.
+       (read_context::associate_die_to_decl): Call
+       associate_die_to_artifact_by_repr.
+       (read_context::{associate_die_to_type,
+       schedule_type_for_late_canonicalization}): Take just one "die"
+       parameter rather than taking a die offset and a die source; adjust
+       accordingly.
+       (maybe_canonicalize_type): Likewise.
+       (finish_member_function_reading): Take a const reference to
+       function_decl_sptr.
+       (die_loc_and_name): Use the new die_name function.
+       (die_is_type): Rename is_type_die into this.
+       (build_type_decl): Take a new "where_offset" parameter.  Adjust.
+       If a type of the same name as the one for the current DIE is is
+       already present, do not create a new type; just return the
+       already-existing one.
+       (build_enum_type): Take a new "where_offset" parameter.  Adjust.
+       (finish_member_function_reading): Pass two smart pointers by const
+       reference.  Assert that the type of the member function is a
+       method_type.  Some light cleanups.
+       (add_or_update_class_type): Rename build_class_type_and_add_to_ir.
+       If a DIE defining the same class has already been seen, then
+       return that class; don't construct any other internal
+       representation for the same class.  Better handle the updating of
+       member data and functions.  Do not duplicate member types.
+       (build_qualified_type, build_pointer_type_def)
+       (build_reference_type): Support de-duplication here.
+       (build_function_type): Likewise.  Support detection and building
+       of method type.  This also supports *const* method type building.
+       (build_array_type): Use the new
+       build_subranges_from_array_type_die.
+       (build_type_decl): Cleanup logic.
+       (build_or_get_var_decl_if_not_suppressed): Renamed
+       build_var_decl_if_not_suppressed into this.  Perform
+       de-duplication for data members.
+       (build_function_decl): Don't set an empty source location.  If the
+       function type cannot be constructed, do not construct the function
+       decl either.  Adjust.
+       (build_ir_node_from_die): Adjust.  When building a function for a
+       DW_TAG_subroutine_type DIE, use the new
+       build_or_get_fn_decl_if_not_suppressed.
+       * src/abg-ir.cc (translation_unit::bind_function_type_life_time):
+       Fix comment.
+       (strip_typedef): Adjust.
+       (qualified_type_def::build_name): Set the prefix name of a the
+       name of a noop qualifier to "noop-qual", just like what is done in
+       the new die_qualified_name function.
+       (struct method_type::priv): New priv type for the method_type
+       class.
+       (method_type::method_type): Take a new 'is_const' parameter.
+       Adjust as the method_type is now pimpl'ed.
+       (method_type::{get_class_type, set_is_const, get_is_const}):
+       Define new member functions.
+       (function_decl::get_pretty_representation_of_declarator): Better
+       detecter of const-ness.
+       (class_decl::insert_member_decl):  Better setting of the
+       const-ness.
+       (class_decl::method_decl::method_decl): Adjust.  Deduce the
+       const-ness of the method_decl from the const-ness of its
+       method_type.
+       (copy_member_function): Adjust.
+       (set_member_is_static): Do not assume a non-nil scope anymore
+       because member_decl can now be scope-less, at least for a little
+       while.
+       * src/abg-reader.cc (push_decl_to_current_scope): Adjust.
+       (build_function_decl): Style adjustment.  Adjust for method_type
+       const-ness changes.
+       (build_function_type): Likewise.  Also, support the new
+       "method-class-id" property that flags a function type as being a
+       method type.
+       * src/abg-writer.cc (write_function_decl): Style fixes.
+       (write_function_type): Likewise.  Emit a new "method-class-id"
+       property for function type that is actually a method type.  That
+       property's value is the id of the class of the method type.
+       * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Adjust.
+       * 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/test30-pr18904-rvalueref-report0.txt: Adjust.
+       * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
+       * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
+       * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
+       * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust.
+       * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
+       * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
+       * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+
+2016-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Setup per-corpus type maps indexed by type names
+       * include/abg-corpus.h (corpus::priv_): Make this public so that
+       functions from outside of the class can access it.  These
+       functions are meant to be used only by code that is *inside*
+       libabigail.so, though.
+       * src/abg-corpus-priv.h: New file.
+       * src/abg-corpus.cc: Include the new abg-corpus-priv.h file.
+       (struct regex_t_deleter): Move this to abg-sptr-utils.h.
+       (build_sptr<regex_t>): Move the declaration of this function
+       template specialization to abg-sptr-utils.h and its definition to
+       abg-sptr-utils.cc.
+       (typedef regex_t_sptrs_type, typedef str_var_ptr_map_type)
+       (struct corpus::exported_decls_builder::priv, struct
+       corpus::priv): Move these declarations to the new
+       abg-corpus-priv.h.
+       (maybe_update_types_lookup_map): Define overloads of this (one per
+       kind of type).
+       (lookup_{basic, class, enum, typedef, class_or_typedef,
+       class_typedef_or_enum, qualified, pointer, reference, array,
+       function}_type): Define new functions.
+       * include/abg-ir.h (typedef istring_type_base_wptr_map_type)
+       (typedef istring_type_or_decl_base_sptr_map_type): Declare new
+       typedefs.
+       (class_decl::find_member_function_from_signature): Declare new
+       member function.
+       * src/abg-ir.cc: Include the new abg-corpus-priv.h file.
+       (maybe_update_types_lookup_map): Remove this initial function.
+       There are now new overloads in abg-corpus.cc for it.
+       (scope_decl::{add_member_decl, insert_member_decl}): Adjust.
+       (class_decl::{set_is_declaration_only, find_member_function,
+       add_member_function}): Adjust.
+       (class_decl::find_member_function_from_signature): Define new
+       member function.
+       * include/abg-sptr-utils.h (struct regex_t_deleter): Declare new
+       type.
+       (build_sptr<regex_t>): New build function template
+       specializations.
+       * src/abg-sptr-utils.cc: New file.
+       * src/Makefile.am: Add src/abg-sptr-utils.cc and
+       src/abg-corpus-priv.h to the build system.
+
+2016-11-01  Dodji Seketeli <dodji@redhat.com>
+
+       Allow pretty printing function decls for internal purposes
+       * include/abg-ir.h
+       (function_decl::get_pretty_representation_of_declarator): Take an
+       "internal" flag.
+       * src/abg-ir.cc
+       (function_decl::get_pretty_representation_of_declarator): Take an
+       "internal" flag.
+       (function_decl::get_pretty_representation): Pass the "internal"
+       flag to the function
+       function_decl::get_pretty_representation_of_declarator.
+       (function_decl::parameter::get_type_name):  Better handle variadic
+       parameter type.
+       (function_decl::parameter::get_type_pretty_representation):
+       Likewise.
+
+2016-11-26  Dodji Seketeli <dodji@redhat.com>
+
+       Make bash completion files non-executable
+       * bash-completion/abicompat: Make this be non-executable.
+       * bash-completion/abidiff: Likewise.
+       * bash-completion/abidw: Likewise.
+       * bash-completion/abilint: Likewise.
+       * bash-completion/abinilint: Likewise.
+       * bash-completion/abipkgdiff: Likewise.
+       * bash-completion/abisym: Likewise.
+       * bash-completion/fedabipkgdiff: Likewise.
+
+2016-11-26  Dodji Seketeli <dodji@redhat.com>
+
+       A suppressed diff node implies suppressing all equivalent nodes too
+       *class of equivalence* is visited once.  This is not only a way to
+       prevent infinite loops while visiting the graph, but also an
+       optimization as it avoids walking two equivalent diff nodes.
+       But then it can happen that we forget to categorize some diff nodes
+       inside a given class of equivalence, even though we categorized some
+       others.
+       This patch makes it so that when a diff node inside a class of
+       equivalence is categorized as SUPPRESSED, the canonical diff node of
+       that class of equivalence is categorized as SUPPRESSED too.  That way,
+       to know if a diff node is suppressed, we just need to look at its
+       canonical diff node.
+       While doing this, I noticed that abidiff and abipkgdiff are not
+       dropping private types from libabigail's internal representation, even
+       though the Library now has that capability.  The patch fixes that.
+       But then the patch adds a --dont-drop-private-types option to abidiff
+       to avoid dropping those private types from the IR, so that regression
+       tests can make sure that a suppressed diff node implies suppression
+       all equivalent nodes too.
+       * doc/manuals/abidiff.rst b/doc/manuals/abidiff.rst: Document the
+       new --dont-drop-private-types option.
+       * src/abg-comparison.cc (diff::is_filtered_out): If the canonical
+       type was suppressed then the current diff node is filtered out.
+       (suppression_categorization_visitor::visit_{begin,end}):
+       Categorized the canonical node as SUPPRESSED if the current node
+       is suppressed.
+       * tools/abidiff.cc (options::drop_private_types): New data member.
+       (options::options): Initialize it.
+       (display_usage): Add new help string for the new
+       --dont-drop-private-types option.
+       (parse_command_line): Parse the new --dont-drop-private-types
+       option.
+       (set_suppressions): Generate suppression specification from header
+       directories given in parameter and stick them to the read context.
+       * tools/abipkgdiff.cc (compare): Likewise.
+       * tests/data/test-diff-suppr/libtest34-v0.so: New test input.
+       * tests/data/test-diff-suppr/libtest34-v1.so: Likewise.
+       * tests/data/test-diff-suppr/test34-report-0.txt: New reference
+       report.
+       * tests/data/test-diff-suppr/test34-v0.c: Source code for the new
+       test input.
+       * tests/data/test-diff-suppr/test34-v1.c: Likewise.
+       * tests/data/test-diff-suppr/test34-priv-include-dir-v0/test34-priv-include-v0.h:
+       Likewise.
+       * tests/data/test-diff-suppr/test34-priv-include-dir-v1/test34-priv-include-v1.h:
+       Likewise.
+       * tests/data/test-diff-suppr/test34-pub-include-dir-v0/test34-pub-include-v0.h:
+       Likewise.
+       * tests/data/test-diff-suppr/test34-pub-include-dir-v1/test34-pub-include-v1.h:
+       Likewise.
+       * tests/data/Makefile.am: Add new test input material above to
+       source distribution.
+       * tests/test-diff-suppr.cc (in_out_spec): Compare the two new test
+       library provided.  Add --dont-drop-private-types to test30*.
+       signed-off-by: Dodji Seketeli <dodji@redhat.com>
+
+2016-11-26  Dodji Seketeli <dodji@redhat.com>
+
+       Forgot to consider libtest33-v{0,1}.so in test-diff-suppr.cc
+       * tests/data/test-diff-suppr/test33-report-0.txt: New refernce report.
+       * tests/test-diff-suppr.cc (in_out_specs): Compare libtest33-v0.so
+       and libtest33-v1.so.
+
+2016-11-24  Dodji Seketeli <dodji@redhat.com>
+
+       Bump version number to 1.0.rc7
+       * configure.ac:
+
+2016-11-24  Dodji Seketeli <dodji@redhat.com>
+
+       Update website for 1.0.rc6
+       * doc/website/mainpage.txt: Update for 1.0.rc6 release
+
+2016-11-23  Dodji Seketeli <dodji@redhat.com>
+
+       Update NEWS and ChangeLog for 1.0.rc6
+       * ChangeLog: Update this automatically using "make
+       update-changelog".
+       * NEWS: update this by editing the output of 'git shortlog
+       libabigail-1.0.rc5..HEAD'.
+
 2016-11-24  Dodji Seketeli <dodji@redhat.com>
 
        Avoid using size_t to get DWARF data
        * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
        Adjust.
 
-2016-11-23  Dodji Seketeli <dodji@redhat.com>
-
-       Update README and ChangeLog for 1.0.rc6
-       * ChangeLog: Update this automatically using "make
-       update-changelog".
-       * NEWS: update this by editing the output of 'git shortlog
-       libabigail-1.0.rc5..HEAD'.
-
 2016-11-23  Dodji Seketeli <dodji@redhat.com>
 
        Lexicographically sort union data members in change reports
This page took 0.144991 seconds and 5 git commands to generate.