2014-11-18  Dodji Seketeli <dodji@redhat.com>

	Allow introductory text in commit log and ignore it when generating ChangeLog
	* gen-changelog.py (process_commit): Everything that comes between
	the subject line of the commit and the first \t* sequence is
	considered to be introductory text.  Ignore it when generating the
	ChangeLog entry.
	* COMMIT-LOG-GUIDELINES: Update the commit log guidelines to
	reflect the fact that we can now have introductory text in the
	commit log.

2014-11-18  Dodji Seketeli <dodji@redhat.com>

	Initial import of gen-changelog.py
	* gen-changelog.py: Copy from
	https://github.com/GNOME/gnet/blob/master/gen-changelog.py.
	License it under LGPLV v2+ after asking Edward Hervey's kind
	permission.  Ain't Free Software really great?

2014-11-10  Dodji Seketeli <dodji@redhat.com>

	Cleanup of the web page
	* doc/website/libabigail-website.doxy: Remove the redundant
	information that was appearing on the web page.
	* doc/website/mainpage.txt: Clean-up the text of the web page, add
	information for the new IRC channel #libabigail on oftc.net,
	re-organize the content by putting sections where we had
	paragraphs.  Add a table of content.  Also add a web form to
	subscribe/unsubscribe to the mailing list.

2014-11-08  Dodji Seketeli <dodji@redhat.com>

	Sort functions by the their qualified name
	* src/abg-comparison.cc (function_comp::operator()): Sort the
	functions by only looking at their qualified name, as opposed to
	their return type name.

2014-11-08  Dodji Seketeli <dodji@redhat.com>

	Remove too tight assert from de-mangling code
	* src/abg-ir.cc (demangle_cplus_mangled_name):  The return length
	can be zero.  That means, no de-mangling was done.

2014-11-08  Dodji Seketeli <dodji@redhat.com>

	Sort reported changed declarations & types in a given scope
	* src/abg-comparison.cc (struct changed_type_or_decl_comp, struct
	changed_vars_comp): New comparison functors.
	(sort_changed_type_or_decl, sort_changed_vars): New static
	functions.
	(scope_diff::report): Use the above to sort changed declarations,
	and types in a given scope.
	(corpus_diff::report): Likewise for the changed variables.
	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt:
	Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
	Likewise.

2014-11-08  Dodji Seketeli <dodji@redhat.com>

	Sort elf symbols before serializing them
	* include/abg-corpus.h (corpus::{get_sorted_fun_symbols,
	get_sorted_var_symbols}): Declare new member functions.
	* src/abg-corpus.cc (corpus_priv::{sorted_var_symbols,
	sorted_fun_symbols}): New data members.
	(struct elf_symbol_comp_functor): Define new comparison functor.
	(corpus::{get_sorted_fun_symbols, get_sorted_var_symbols}): Define
	new member functions.
	* src/abg-writer.cc (write_elf_symbols_table): Take a sorted
	vector of symbols in parameters, rather than an unsorted map.
	(write_corpus_to_native_xml): Write a sorted vector of symbols,
	rather than an unsorted map of symbols.
	* tests/data/test-read-dwarf/test0.abi: Adjust.
	* tests/data/test-read-dwarf/test1.abi: Likewise.
	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
	* tests/data/test-read-dwarf/test6.so.abi: Likewise.

2014-11-07  Dodji Seketeli <dodji@redhat.com>

	Fix template parameter hashing: make it know about enclosing template
	* include/abg-ir.h (template_parameter_sptr, template_decl_sptr)
	(template_decl_wptr): Declare new typedefs.
	(class template_decl): Make this virtually inherit decl_base and
	pimpl-ify it.
	(class template_parameter): Pimpl-ify this.  Make the constructor
	take the enclosing template parameter.
	(struct template_decl::hash): Declare this here, rather than in
	src/abg-hash.cc
	(class type_tparameter, non_type_tparameter, template_tparameter)
	(class type_composition, function_tdecl, class_tdecl): Pimpl-ify
	this.
	* src/abg-hash.cc (template_parameter::hash::operator()): Hash the
	enclosing template parameter.  Avoid infinite recursion due to the
	loop hash parameter -> hash template -> hash parameter.
	(template_decl::hash::operator()) Define this here, now that it's
	declared in abg-ir.h.  Also, avoid infinite recursion here; this
	is complementary to what is done in the hashing for
	template_parameter.
	({type_tparameter, template_tparameter, }::hash::operator()):
	Cache the calculated hash just as what is done for other types
	hashed.
	(template_decl::priv): Define this new type.
	(template_decl::{add_template_parameter, get_template_parameters,
	~template_decl}): Define these here to pimpl-ify template_decl.
	(template_parameter::priv): Define this new type.
	(template_parameter::template_parameter): Define this here to
	pimpl-ify template_parameter.  Note also that this now takes the
	enclosing template decl.
	(template_parameter::{get_index, get_enclosing_template_decl,
	get_hashing_has_started, set_hashing_has_started, operator::==}):
	Define these here to pimpl-ify template_parameter.
	(type_tparameter::priv): Define this new type.
	(type_tparameter::type_tparameter): Define this here to pimpl-ify
	type_tparameter.   Also, not that this constructor now takes the
	enclosing template decl.
	(class non_type_tparameter::priv): Define new type.
	(non_type_tparameter::{non_type_tparameter, get_type}): Define
	these here to pimpl-ify non_type_tparameter.  The constructor now
	takes the enclosing template.
	(template_tparameter::priv): Define new type.
	(template_tparameter::template_tparameter): Define this here to
	pimpl-ify template_tparameter.  This constructor now takes the
	enclosing template.
	(class type_composition::priv): New type.
	(type_composition::{type_composition, get_composed_type,
	set_composed_type}): Define these here to pimpl-ify
	type_composition.  The constructor now takes the enclosing
	template decl.
	(class function_tdecl::priv): Define new type.
	(function_tdecl::{function_tdecl, set_pattern, get_pattern,
	get_binding}): Define this here to pimpl-ify function_tdecl.
	(class class_tdecl::priv): Define this new type.
	(class_tdecl::class_tdecl): Define this here to pimpl-ify
	class_tdecl.
	(class_tdecl::set_pattern): Adjust to pimpl-ify.
	(class_tdecl::get_pattern): Define new pimpl-ified getter.
	* src/abg-reader.cc (build_function_tdecl, build_class_tdecl):
	Cleanup.  Pass the enclosing template to the template parameters
	that are built.
	(build_type_tparameter, build_type_composition)
	(build_non_type_tparameter, build_template_tparameter)
	(build_template_parameter): Take the enclosing template
	declaration and pass it to the template parameter being created.
	* tests/data/test-read-write/test12.xml: Fix and Adjust.
	* tests/data/test-read-write/test13.xml: Likewise.

2014-11-06  Dodji Seketeli <dodji@redhat.com>

	Style fix
	* include/abg-ir.h (class location): Remove useless white space.
	* src/abg-writer.cc (type_has_existing_id): Use type_base_sptr
	rather than shared_ptr<type_base>.
	(write_template_tparameter): Use template_tparameter_sptr rather
	than shared_ptr<template_tparameter>.

2014-11-05  Dodji Seketeli <dodji@redhat.com>

	Pass -std=gnu++11 to the compiler when --enable-cxx11 for tests
	* tests/Makefile.am: Pass -std=gnu++11 to the compiler when
	--enable-cxx11 has been used.

2014-11-05  Dodji Seketeli <dodji@redhat.com>

	Make the use of a C++-11 compiler optional
	* configure.ac: Define a new --enable-cxx11 switch to control the
	use of the C++-11 compiler.  Define a WITH_CXX11 C macro and an
	automake ENABLE_CXX11 variable.
	* config.h.in: Initialize the new WITH_CXX11 C macro.
	* src/Makefile.am: Include the files coded in C++-11 only if the
	ENABLE_CXX11 automake variable is defined.
	* tests/Makefile.am: Likewise, build the runtestsvg test program
	only if C++-11 usage is enabled.
	* include/abg-diff-utils.h (class d_path_vec): Remove useless
	usage of the 'typename' keyword.
	* include/abg-fwd.h (is_enum_type): Renamed is_enum into this,
	because of a name clash with a tr1 function when not using C++-11.
	(is_pointer_type): Likewise, renamed is_pointer into this because
	of a name clash with a tr1 function when not using C++-11.
	* src/abg-comp-filter.cc (has_harmless_name_change): Adjust for
	the is_enum -> is_enum_type change.
	* src/abg-comparison.cc (type_suppression::suppresses_diff):
	Likewise.
	(class function_suppression::priv): Add a missing "class" keyword
	in friend declaration.
	(diff_context::diff_has_been_traversed)
	(diff_context::mark_diff_as_traversed): Do not use the C++-11
	specific type uintptr_t.
	* src/abg-dwarf-reader.cc (create_default_dwfl): Do not use
	designated initializers.  Sigh.  This is handy though.
	(expr_result::abs): Cast the argument of std::abs to avoid
	ambiguous call.
	(finish_member_function_reading): Adjust for the is_pointer ->
	is_pointer_type renaming.
	* src/abg-hash.cc (scope_decl::hash::operator)
	(class_decl::base_spec::hash::operator)
	(type_composition::hash::operator): Use std::tr1::hash string,
	rather than the C++-11 specific std::hash function.
	* src/abg-ini.cc (read_sections, write_sections): Make
	std::ifstream constructor take a const char* rather than a string.
	* src/abg-ir.cc (is_enum_type, is_pointer_type): Renamed is_enum
	into is_enum_type and is_pointer into is_pointer_type.
	* src/abg-writer.cc (write_translation_unit): Remove useless
	typename keyword.  Make ofstream take a const char* rather than a
	string.
	(write_namespace_decl): Remove useless typename keyword.
	(write_corpus_to_native_xml_file): Make ofstream take a const
	char* rather than a string.
	* tests/test-abidiff.cc (main): Make ofstream take a const char*
	rather than a string.
	* tests/test-diff-dwarf.cc (main): Likewise.

2014-11-05  Dodji Seketeli <dodji@seketeli.org>

	Remove some m4 auto-generated files from version control
	* m4/ltoptions.m4: Remove from version control.
	* m4/ltversion.m4: Remove from version control.
	* m4/lt~obsolete.m4: Remove from version control.

2014-11-03  Dodji Seketeli <dodji@redhat.com>

	Add usage examples to the abidiff manual
	* doc/manuals/abidiff.rst: Add a usage example section along with
	some small and clean examples.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix the API doc string of the abigail::xml_writer namespace
	* src/abg-writer.cc: Fix the API doc of the xml_writer namespace.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix an apidoc typo
	* include/abg-comparison.h (class variable_suppression): Fix a
	typo in the doc string.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Update the manual for variable suppression concepts
	* doc/manuals/libabigail-concepts.rst: Add a section for variable
	suppression specification in the concepts part of the manual.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix some restructured text doc glitches in the fn suppression manual
	* doc/manuals/libabigail-concepts.rst: Fix quoting of the syntax
	of parameter specification string, for the function suppression
	concepts.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Cleanup the mainpage of the API doc
	* include/abg-fwd.h: Cleanup text of the API doc mainpage.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Make get_binary_load_address static
	* src/abg-dwarf-reader.cc (get_binary_load_address): Make this
	function static.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Initial support for variable suppressions
	* include/abg-comparison.h (variable_suppression_sptr)
	(variable_suppressions_type): New convenience typedefs.
	(class variable_suppression): Declare new type.
	* src/abg-comparison.cc (is_var_diff): New predicate.
	(read_variable_suppression): Define new static function.
	(class variable_suppression::priv): Define type for the private
	data of the variable_suppression type.
	(variable_suppression::{variable_suppression,
	~variable_suppression, get_name, set_name, get_name_regex_str,
	set_name_regex_str, get_symbol_name, set_symbol_name,
	get_symbol_name_regex_str, set_symbol_name_regex_str,
	get_symbol_version, set_symbol_version,
	get_symbol_version_regex_str, set_symbol_version_regex_str,
	get_type_name, set_type_name, get_type_name_regex_str,
	set_type_name_regex_str, suppresses_diff}): Define new member
	functions for the variable_suppression type.
	* tests/data/test-diff-suppr/libtest7-var-suppr-v0.so: Add new
	test input.
	* tests/data/test-diff-suppr/libtest7-var-suppr-v1.so: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-1.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-2.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-3.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-4.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-5.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-6.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-7.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-8.suppr: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
	Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-version-script: Likewise.
	* tests/data/test-diff-suppr/test7-var-suppr-v0.cc: Source code
	for the librairie above.
	* tests/data/test-diff-suppr/test7-var-suppr-v1.cc: Source code
	for the librairie above.
	* tests/Makefile.am: Add the new test input data to the source
	distribution.
	* tests/test-diff-suppr.cc: Update to make this harness to run
	over the new test input above.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Update the suppr-doc.txt file for variable suppressions
	* doc/suppr-doc.txt: Add the suppress_variable section example.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Make var_diff and function_decl_diff extend decl_diff_base
	* include/abg-comparison.h (class var_diff, class
	function_decl_diff): Make these types inherit the decl_diff_base
	class.  This is like the fact that all kinds of diff inherit the
	type_diff_base class.
	* src/abg-comparison.cc (var_diff::var_diff)
	(function_decl_diff::function_decl_diff): Adjust to initialize the
	sub-object of decl_diff_base;
	(is_decl_diff): New predicate to know if a diff is about decls.
	(is_function_decl): New predicate to know if a diff is about
	function decls.
	(function_suppression::suppresses_diff): Adjust to use the new
	is_function_decl.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix logic of type suppression evaluation
	* include/abg-comparison.cc (type_suppression::suppresses_diff):
	Try to evaluate the "type_name_regexp" property only if the
	"type_name" is empty.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Remove useless functions from the comparison engine
	* include/abg-comparison.h (read_type_suppression): Remove this
	function declaration.
	* src/abg-comparison.cc (read_type_suppressions): Remove this
	static function definition.
	(read_function_suppressions): Remove this static function
	declaration.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Spit and polish variables presentation in diff report
	* src/abg-comparison.cc (corpus_diff::report): Show the full
	representation of the variable, rather than just its name.  Also,
	show the new representation of the variable only if it has
	changed.
	* tests/data/test-diff-dwarf/test9-report.txt: Adjust test.
	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix various apidoc typos
	* include/abg-comparison.h (class function_suppression): Fix typo
	in the doc string.
	* src/abg-comparison.cc (is_type_diff, read_suppressions)
	(diff::reported_once, typedef_diff::report): Fix the doc string.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Fix regexp escaping section of manual
	* doc/manuals/libabigail-concepts.rst: Re-indent and fix some
	typos in the regexp escaping section of the manual.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Doxygen shouldn't extract doc for static functions or private types
	* doc/api/libabigail.doxy: Do not extract doc for static
	functions, local classes.

2014-11-01  Dodji Seketeli <dodji@redhat.com>

	Update .gitignore
	* .gitignore: Ignore *~ emacs files.

2014-10-29  Dodji Seketeli <dodji@redhat.com>

	Separate alias targets with a comma
	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Separate
	alias targets by a comma.
	* tests/data/test-diff-dwarf/test18-alias-sym-v1.cc: Update test
	to add more than one alias to a given symbol.

2014-10-28  Dodji Seketeli <dodji@redhat.com>

	Fix a typo in the manual about function suppressions
	* doc/manuals/libabigail-concepts.rst: Fix a typo.

2014-10-28  Dodji Seketeli <dodji@redhat.com>

	Initial support for function suppressions
	* include/abg-comparison.h (enum visiting_kind): Change the
	meaning of this.  It was to determine if traversal was to be done
	in a pre or post manner.  But with the recent addition of
	diff_node_visitor::visit_{begin,end}() notifiers, the pre/post
	handling is taken care of in a different way.  So now the meaning
	of this enum is changed to handle whether diff node children
	should be visited or not.  So the enumerators are now
	DEFAULT_VISITING_KIND, and SKIP_CHILDREN_VISITING_KIND.  And it's
	a bit-field.
	(operator{&,~}): Declare more bit manipulation operators for the
	enum visiting_kind.
	(function_suppression_sptr, function_suppressions_type): New
	typedefs.
	(function_suppression, function_suppression::parameter_spec):
	Declare new types.
	(read_function_suppressions): Declare new function.
	(diff_node_visitor::diff_node_visitor): Adjust for the enum
	visiting_kind change.  Value-initialize the visiting_kind_ data
	member.
	* src/abg-comparison.cc (operator{&,~}): Define these operators
	for enum visiting_kind.
	(read_type_suppressions): Forward declare this static function.
	(read_function_suppression, read_parameter_spec_from_string):
	Define new static functions.
	(read_suppressions): Update to read function suppressions too,
	using the new read_function_suppression function above.
	(class function_suppression::parameter_spec::priv): Define new
	type.
	(function_suppression::parameter_spec::*): Define the member
	functions of the new function_suppression::parameter_spec type.
	(class function_suppression::priv): Define new type.
	(function_suppression::*): Define the member functions of the new
	function_suppression type.
	(diff::traverse): There is no more {PRE,POST}_VISITING_KIND
	enumerator.  So nuke the code that was dealing with it.
	(redundancy_marking_visitor::skip_children_nodes_): New data
	member flag.
	(redundancy_marking_visitor::visit_begin): If the current diff
	node is not be reported (is filtered out), do not bother visit its
	children nodes for the purpose of marking redundant nodes.  So use
	the new skip_children_nodes_ flag above to know we are in that case.
	(redundancy_marking_visitor::visit_end): Unset the new
	skip_children_nodes_ flag above when appropriate.
	* include/abg-fwd.h (is_function_decl): Declare new function.
	* include/abg-ir.h
	(function_type::get_parm_at_index_from_first_non_implicit_parm):
	Declare new member function.
	* src/abg-ir.cc (is_function_decl): Define new function.
	(function_type::get_parm_at_index_from_first_non_implicit_parm):
	Define new member function.
	* src/abg-comp-filter.cc (apply_filter): Adjust for the enum
	visiting_kind change.  No need to set it for filters anymore
	* doc/suppr-doc.txt: Update examples of function suppression.
	* doc/manuals/libabigail-concepts.rst: Update the manual for the
	function suppression addition.
	* tests/data/test-diff-suppr/libtest5-fn-suppr-v0.so: New test input.
	* tests/data/test-diff-suppr/libtest5-fn-suppr-v1.so: New test input.
	* tests/data/test-diff-suppr/libtest6-fn-suppr-v0.so: New test input.
	* tests/data/test-diff-suppr/libtest6-fn-suppr-v1.so: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-0.suppr: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-1.suppr: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-2.suppr: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-3.suppr: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-4.suppr: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: New test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-v0.cc: Source code for
	new test input.
	* tests/data/test-diff-suppr/test5-fn-suppr-v1.cc: Source code for
	new test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-0.suppr: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-1.suppr: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-2.suppr: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-3.suppr: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: New test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-v0.cc: Source code for
	new test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-v1.cc: Source code for
	new test input.
	* tests/data/test-diff-suppr/test6-fn-suppr-version-script: New
	test input.
	* tests/Makefile.am: Add the new files above to source
	the distribution.
	* tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
	above to the list of tests to be run by this harness.

2014-10-28  Dodji Seketeli <dodji@redhat.com>

	Add missing virtual destructor in comparison engine code
	* include/abg-comparison.h (type_suppression::~type_suppression):
	Declare missing virtual destructor.
	* src/abg-comparison.cc (type_suppression::~type_suppression):
	Define missing virtual destructor.

2014-10-27  Dodji Seketeli <dodji@redhat.com>

	Pimplify abigail::ir::function_type
	* include/abg-ir.h (function_type::priv_): Declare new data
	member.
	(function_type::<all the methods>): Move the inline methods out of
	line in src/abg-ir.cc.
	(function_type::{return_type_, parms_}): Move these ...
	* src/abg-ir.cc (function_type::priv::{return_type_, parms_}):
	... Here.
	(struct function_type::priv): New type for the private data of
	function_type.
	(function_type::<all the methods>): Move the previously inline
	methods of function_type here.  Adjust them to tap into priv_->*
	to get the private data members.

2014-10-27  Dodji Seketeli <dodji@redhat.com>

	Light style fix
	* include/abg-ir.h (function_decl::get_type): Change the return
	type from shared_ptr<function_type> to function_type_sptr.

2014-10-27  Dodji Seketeli <dodji@redhat.com>

	Allow white spaces in ini file property values
	* src/abg-ini.cc (read_context::char_is_property_value_char): New
	member function.
	(read_context::read_next_char): Fix typos.  Allow escaping of '['
	and ']'.
	(read_context::read_property_value): Use the new
	read_context::char_is_property_value_char above.

2014-10-27  Dodji Seketeli <dodji@redhat.com>

	Fix typo in suppression specification manual
	* doc/manuals/libabigail-concepts.rst: Fix name -> name_regexp.

2014-10-22  Dodji Seketeli <dodji@redhat.com>

	Support comparing symbols not referenced by debug info
	* doc/manuals/abidiff.rst: Adjust intro to mention that w/o debug
	info, abidiff now works but just report about added/removed
	symbols.  Add documentation about the new
	--no-unreferenced-symbols option.
	* include/abg-comparison.h (string_elf_symbol_map): New typedef.
	(diff_context::show_symbols_unreferenced_by_debug_info): Declare
	new accessors.
	* src/abg-comparison.cc
	(diff_context::priv::show_syms_unreferenced_by_di_): New data
	member.
	(diff_context::priv::priv): Adjust.
	(diff_context::show_symbols_unreferenced_by_debug_info): Implement
	these accessors.
	(corpus_diff::priv::{unrefed_fn_syms_edit_script_,
	unrefed_var_syms_edit_script_, added_unrefed_fn_syms_,
	deleted_unrefed_fn_syms_, added_unrefed_var_syms_,
	deleted_unrefed_var_syms_}): New data members.
	(corpus_diff::priv::diff_stats::{num_func_syms_removed,
	num_func_syms_added, num_var_syms_removed, num_var_syms_added}):
	New data members.
	(corpus_diff::priv::diff_stats::diff_stats): Adjust.
	(corpus_diff::ensure_lookup_tables_populated): Populate lookup
	tables for added/removed symbols that are not referenced by any
	debug info.
	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
	stats for the added/removed symbols not referenced by any debug
	info.
	(corpus_diff::priv::emit_diff_stats): Emit stats about
	added/removed symbols that are not referenced by any debug info.
	(corpus_diff::length): Adjust to take in account added/removed
	symbols not referenced by any debug info.
	(show_linkage_name_and_aliases): New static function.
	(corpus_diff::report): When emitting a symbol name, emit its
	version too, and tell if it aliases other symbols.  Avoid emitted
	extra new lines.  Report added/removed symbols not referenced by
	any debug info.
	(compute_diff): In the overload for corpus_sptr, compute the diffs
	for symbols not referenced by debug info.
	* include/abg-corpus.h
	(corpus::get_unreferenced_{function,variable}_symbols): Declare
	new member functions.
	* src/abg-corpus.cc (corpus_priv::{unrefed_fun_symbols,
	unrefed_var_symbols}): New data members.
	(corpus_priv::build_unreferenced_symbols_tables): Define new
	member function.
	(struct comp_elf_symbols_functor): New functor.
	(corpus::is_empty): Adjust to take in account added/removed
	symbols not referenced by debug info.
	(corpus::{get_unreferenced_function_symbols,
	corpus::get_unreferenced_variable_symbols}): Define these
	accessors.
	* include/abg-dwarf-reader.h (enum status): Transform this into
	bitfields.  Add a STATUS_UNKNOWN value that has the value 0.
	(operator|(status, status), operator&(status, status))
	(operator|=(status&, status), operator&=(status, status)): New
	bit-wise operators to manipulate instances of the status bit-field.
	* src/abg-dwarf-reader.cc (get_version_for_symbol): Fix this to
	avoid returning garbage version sometimes.
	(read_debug_info_into_corpus): Fix this to return a non-null but
	empty corpus_sptr when there is no debug info available.
	(operator|(status, status), operator&(status, status))
	(operator|=(status&, status), operator&=(status, status)): Define
	these new bitwise operators to manipulate instances of the status
	bit-field.
	(read_corpus_from_elf): Now that the abigail::dwarf_reader::status
	is a bit-field, set it to reflect if debug info and/or symbol
	tables have been found.  Do not bail out if debug info hasn't been
	found.  Rather, keep going, and go look for symbols-only; this is
	a kind of operating in degraded mode.
	* include/abg-ir.h (elf_symbol::get_aliases_id_string): Add a flag
	that says if the current instance of elf_symbol should be included
	in the list of aliases or not.
	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define it.
	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.o: New test
	input.
	* tools/abidiff.cc
	(options::show_symbols_not_referenced_by_debug_info): New data
	member.
	(options:options): Adjust.
	(display_usage): Add an info string for the new
	--no-unreferenced-symbols command line option.
	(parse_command_line): Parse the new --no-unreferenced-symbols
	command line.
	(set_diff_context_from_opts): Set the diff_context according to
	the presence of --no-unreferenced-symbols.
	(main): Adjust for the fact that abigail::dwarf_reader::status is
	now a bit-field.
	* tools/abilint.cc (main): Adjust for the fact that
	abigail::dwarf_reader::status is now a bit-field..
	():
	* tests/data/test-diff-dwarf/test16-syms-only-report.txt: New test
	reference output.
	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.cc: Source code
	for new test input.
	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.o: New
	test input.
	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.cc: New
	source code for test input.
	* tests/data/test-diff-dwarf/libtest18-alias-sym-v{0,1}.so: New
	test input.
	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
	Reference output for new test input.
	* tests/data/test-diff-dwarf/test18-alias-sym-v{0,1}.cc: Source
	code for new test input.
	* tests/data/test-diff-dwarf/test18-alias-sym-version-script:
	Source code for new test input.
	* tests/Makefile.am: Add the new test materials to the source
	distribution.
	* tests/test-diff-dwarf.cc(in_out_specs): Add the new input tests
	above to the array of tests to run by this harness.
	(main): Emit empty reports for empty resulting diffs.
	* tests/data/test-diff-dwarf/test{0,8,9,12,14-inline-report,}-report.txt:
	Adjust.
	* tests/data/test-diff-filter/test{0,01,2,4,5,7,8,9,10,12,13,15-0,15-1}-report.txt:
	Likewise.
	* tests/data/test-diff-filter/test{19-enum,20-inline,}-report-0.txt:
	Likewise.
	* tests/data/test-diff-suppr/test0-type-suppr-report-{1,2}.txt:
	Likewise.
	* tests/data/test-diff-suppr/test{1,2}-typedef-suppr-report-1.txt:
	Likewise.

2014-10-22  Dodji Seketeli <dodji@redhat.com>

	Allow comparison of shared_ptr of things
	* include/abg-diff-utils.h: Adjust copyright years.
	(deep_ptr_eq_functor::operator()(const shared_ptr<T>, const
	shared_ptr<T>)): New comparison operator.

2014-10-17  Dodji Seketeli <dodji@redhat.com>

	Use the "standard" equality operator when comparing variables
	* src/abg-comparison.cc (compute_diff): In the overload for
	corpus_sptr, use the diff_utils::deep_ptr_eq_functor that is used
	to compare functions too, rather than the ad-hoc early struct
	var_eq_type we were using until now.

2014-10-16  Dodji Seketeli <dodji@redhat.com>

	Yet another fix to the DWARF method "static-ness" detection heuristic
	* include/abg-fwd.h (is_pointer, is_qualified_type): Declare new
	functions.
	* src/abg-ir.cc (is_pointer, is_qualified_type): Implement these
	new functions.
	* src/abg-dwarf-reader.cc (finish_member_function_reading):
	Sometimes, the this pointer of a non-static method can point to a
	*qualified* version of its containing type.  I am seeing that when
	comparing libstdc++.so from RHEL 6.5 and RHEL 7.  Take that in
	account when trying to detect that the first parameter of a member
	function is the this pointer, and thus detect that the function is
	a non static member function.
	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
	New test input.
	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so: New
	test input.
	* tests/data/test-read-dwarf/test8-qualified-this-pointer.cc:
	Source code of new test input.
	* tests/test-read-dwarf.cc: Update copyright year.
	(in_out_spec): Add the new test inputs to this array, so that this
	test harness runs on them.
	* tests/Makefile.am: Add the new test inputs to the source
	distribution.

2014-10-16  Dodji Seketeli <dodji@redhat.com>

	Avoid infinite loops in the comparison code for classes
	* src/abg-ir.cc (equals): In the overload for classes, make sure
	to store the name of the lhs of the class and the rhs into the
	lhs.  Also, when we bail out because we detect that there is a
	comparison underway, do *not* unmark the current class as not being
	involved in the comparison.  Also, break at the first lhs virtual
	member function that is different from the rhs counter part.

2014-10-15  Dodji Seketeli <dodji@redhat.com>

	Update the manual for the suppression specification initial work
	* doc/manuals/abidiff.rst: Add documentation for the new
	--suppressions command line switch.
	(--harmless, --harmful): Refer to the new "concepts" section
	below, where harmful/harmless concepts are now explained.
	(Notes): Move the content of the notes section where
	harmful/harmless concepts were explained, to the newly created
	'Concepts' section.
	* doc/manuals/index.rst: Limit the depth of the table of content
	to 2.  Add the new libabigail-concepts.rst stuff in here.  Adjust
	for the renaming of tools.rst to libabigail-tools.rst.
	* doc/manuals/libabigail-concepts.rst: New file.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	Properly propagate {REDUNDANT, SUPPRESSED}_CATEGORY wrt local changes
	* src/abg-comparison.cc
	(suppression_categorization_visitor::visit_end): If a diff node
	carries local changes, then, even if all of its children node have
	been suppressed, this diff node shall not be categorized as
	suppressed by way of propagation.
	(redundancy_marking_visitor::visit_end): If a diff node carries
	local changes, then, even if all of its children nodes are
	redundant, this diff node shall not be categorized as being
	redundant by way of propagation.
	* tests/data/test-diff-suppr/libtest4-local-suppr-v{0,1}.so: New test
	inputs.
	* tests/data/test-diff-suppr/test4-local-suppr-0.suppr: Likewise.
	* tests/data/test-diff-suppr/test4-local-suppr-report-{0,1}.txt:
	Likewise.
	* tests/data/test-diff-suppr/test4-local-suppr-v{0,1}.{c,h}:
	Source code of the new tests inputs.
	* tests/Makefile.am: Add the new test material to the source
	distribution.
	* tests/test-diff-suppr.cc (in_out_spec): Run this test harness
	over the new test input above.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	Gain ability know if a diff node has local changes
	* include/abg-comparison.h (diff::has_local_changes): Add new pure
	interface.
	({decl_diff_base, type_diff_base, distinct_type_diff, var_diff,
	pointer_diff, reference_diff, array_diff, qualified_type_diff,
	enum_diff, class_diff, base_diff, scope_diff, function_decl_diff,
	type_decl_diff, typedef_diff,
	translation_unit_diff}::has_local_changes): Declare the
	implementation of the pure interface above.
	* src/abg-comparison.cc ({decl_diff_base, type_diff_base,
	distinct_type_diff, var_diff, pointer_diff, reference_diff,
	array_diff, qualified_type_diff, enum_diff, class_diff, base_diff,
	scope_diff, function_decl_diff, type_decl_diff, typedef_diff,
	translation_unit_diff}::has_local_changes): Define the
	implementation of the pure interface above.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	Write comparison functions that hint at the kind of changes they see
	* include/abg-ir.h (enum change_kind): Declare new enum.
	(operator|(change_kind, change_kind), operator&(change_kind,
	change_kind), operator|=(change_kind&, change_kind)): Declare new bit-wise
	operators for the new enum change_kind.
	(equals): Declare this new comparison function for decl_base,
	scope_decl, type_base, type_decl, scope_type_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	array_type_def, enum_type_decl, typedef_decl, var_decl,
	function_decl, function_type, class_decl, and
	class_decl::base_spec.
	(class_decl::base_spec::operator(const decl_base&)): Declare new
	equality operator.
	* src/abg-ir.cc (operator|(change_kind l, change_kind r))
	(operator&(change_kind l, change_kind r), operator|=(change_kind&
	l, change_kind r), operator&=(change_kind& l, change_kind r)):
	Define these new operators.
	(equals): Define this new comparison function for decl_base,
	scope_decl, type_base, type_decl, scope_type_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	array_type_def, enum_type_decl, typedef_decl, var_decl,
	function_decl, function_type, class_decl, and
	class_decl::base_spec.
	({decl_base, scope_decl, type_base, type_decl, scope_type_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	array_type_def, enum_type_decl, typedef_decl, var_decl,
	function_decl, function_type, class_decl,
	class_decl::base_spec}::operator==): Re-write these comparison
	operators in terms of their relevant equal() functions.

2014-09-22  Dodji Seketeli <dodji@redhat.com>

	Fix struct type kind suppression support
	* src/abg-comparison.cc (type_suppression::suppresses_diff): Do
	not crash on diff nodes that are not about struct/classes, when
	"type_kind = struct" has been specified.
	* tests/data/test-diff-suppr/test2-struct-suppr-{0,1}.suppr: New test input.
	* tests/data/test-diff-suppr/test2-struct-suppr-report-{0,1}.txt:
	Likewise.
	* tests/data/test-diff-suppr/test2-struct-suppr-v{0,1}.o: Likewise
	* tests/data/test-diff-suppr/test2-struct-suppr-v{1,0}.cc: Source code
	for binary test input.
	* tests/test-diff-suppr.cc (in_out_spec): Run this harness on the
	new test input above.
	* tests/Makefile.am: Add the new test input files to source
	distribution.

2014-09-22  Dodji Seketeli <dodji@redhat.com>

	Replace is_typedef by type_kind property in type suppressions
	* doc/suppr-doc.txt: Add type_kind property "documentation" in the
	type suppression.
	* include/abg-comparison.h (type_suppression::type_kind): New
	enum.
	(type_suppression::{get_consider_typedefness,
	set_consider_typedefness, get_is_typedef, set_is_typedef}):
	Remove.
	(type_suppression::{get_consider_type_kind,
	set_consider_type_kind, get_type_kind, set_type_kind}): Declare
	new methods.
	* Include/abg-fwd.h (is_type_decl): Declare new function.
	(is_enum): Declare new overload that takes a type_base_sptr.
	* src/abg-comparison.cc
	(type_suppression::priv::{consider_typedefness_, is_typedef_}):
	Remove these data members.
	(type_suppression::priv::{consider_type_kind_, type_kind_}): New
	data members.
	(type_suppression::priv::priv): Adjust.
	(type_suppression::{get_consider_typedefness,
	set_consider_typedefness, get_is_typedef, set_is_typedef}): Remove
	these member functions.
	(type_suppression::{get_consider_type_kind,
	set_consider_type_kind, get_type_kind, set_type_kind}): Define
	these new member functions.
	(type_suppression::suppresses_diff): Adjust to consider the kind
	of types more generally than just considering typedef-ness.
	(read_type_kind_string): New static function.
	(read_type_suppression): Use the above to parse the value of the
	new type_kind property.  Adjust the creation of the resulting
	type_suppression object.
	* src/abg-ir.cc (is_type_decl): Define new function.
	* tests/data/test-diff-suppr/test1-typedef-suppr-0.suppr: Adjust.
	* tests/data/test-diff-suppr/test1-typedef-suppr-1.suppr: Adjust.

2014-09-19  Dodji Seketeli <dodji@redhat.com>

	Initial support for type suppressions
	* include/abg-comparison.h (diff_category::SUPPRESSED_CATEGORY):
	New enumerator.
	(diff_category::{SIZE_OR_OFFSET_CHANGE_CATEGORY,
	VIRTUAL_MEMBER_CHANGE_CATEGORY): Update the enumerator values for
	these.
	(diff::EVERYTHING_CATEGORY): Adjust.
	(suppression_base, type_suppression): Declare new types.
	(suppression_ptr, suppressions_type, type_suppression_sptr)
	(type_suppressions_type): New typedefs.
	(read_type_suppressions, read_suppressions): Declare new
	functions.
	(diff_context::{suppressions, add_suppression, add_suppressions}):
	Declare new methods.
	(diff::is_suppressed): Declare new member function.
	(apply_suppressions): Declare new function & overloads.
	* src/abg-comparison.cc (is_type_diff): Define new static
	function.
	({suppression_base, type_suppression}::priv): Define new types.
	({suppression_base, type_suppression}::*): Define the methods of the new
	suppression_base, type_suppressions types.
	(read_type_suppression, read_type_suppressions, read_suppressions)
	(read_type_suppressions): Define new static functions.
	(diff_context::priv::supprssions_): New data member.
	(diff_context::{suppressions, add_suppression, add_suppressions}):
	New methods.
	(diff::is_filtered_out): Consider that a diff node that is in the
	SUPPRESSED_CATEGORY is filtered out.
	(diff::is_suppressed): Define new member function.
	(operator<<(ostream& o, diff_category c)): Support the
	SUPPRESSED_CATEGORY category.
	(corpus_diff::report): Apply suppressions before reporting
	anything.
	(category_propagation_visitor::visit_end): Do not propagate
	SUPPRESSED_CATEGORY.  This is just like what we do for
	REDUNDANT_CATEGORY.
	(struct suppression_categorization_visitor): New visitor.
	(apply_suppressions): Define function & overloads.
	* include/abg-ini.h (config::section::find_property): New method.
	(config::section): Fix end of class comment.
	* src/abg-ini.cc (config::section::find_property): Define new
	method.
	* tests/data/test-diff-suppr/test0-type-suppr-{0,1,2}.suppr: New
	test input files.
	* tests/data/test-diff-suppr/test0-type-suppr-report-{0,1,2,3}.txt:
	Likewise.
	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.o: Likewise.
	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.cc: Source code
	for new test input.
	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.o: New test
	input files.
	* tests/data/test-diff-suppr/test1-typedef-suppr.h: Source code
	for new test input files.
	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.c: Likewise
	* tests/data/test-diff-suppr/test1-typedef-suppr-{0,1}.suppr: New
	test input files.
	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
	* tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
	* tests/test-diff-suppr.cc: New test harness to run type suppression tests
	using the input files above.
	* tests/data/test-diff-suppr/test3-struct-suppr-0.suppr: New test input.
	* tests/data/test-diff-suppr/test3-struct-suppr-1.suppr: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-v0.cc: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-v0.o: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-v1.cc: Likewise.
	* tests/data/test-diff-suppr/test3-struct-suppr-v1.o: Likewise.
	* tests/Makefile.am: Build the new runtestdiffsuppr test harness
	from the test-diff-filter.cc file.  Add the new test files to the
	build system and source distribution.
	* tools/bidiff.cc (options::suppressions): New data member.
	(display_usage): Add a help string for the new
	--suppressions command line switch.
	(parse_command_line): Parse the --suppressions command line
	switch.
	(set_diff_context_from_opts): Read the suppressions provided by
	the --suppression command line switch and stuff them into the diff
	context.

2014-09-19  Dodji Seketeli <dodji@redhat.com>

	Make all type diff types extend new type_diff_base type
	* include/abg-comparison.h (type_diff_base, decl_diff_base): New
	types.
	(type_diff_base_sptr): New typedef.
	(pointer_diff, reference_diff, array_diff, qualified_type_diff)
	(enum_diff, class_diff, type_decl_diff, typedef_diff): Make this
	extend the new type_diff_base.
	* src/abg-comparison.cc (type_diff_base::priv, type_diff_base):
	Define these new types and their methods.
	(pointer_diff::pointer_diff, array_diff::array_diff)
	(reference_diff::reference_diff)
	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
	(class_diff::class_diff, type_decl_diff::type_decl_diff)
	(typedef_diff::typedef_diff): Adjust.

2014-09-18  Dodji Seketeli <dodji@redhat.com>

	Rename abigail::ini::config::section_vector to sections_type
	* include/abg-ini.h (abigail::ini::config::sections_type): Renamed
	section_vector into this.
	(config::{get_sections, set_sections, read_sections,
	write_sections}): Adjust.
	* src/abg-ini.cc (config::priv::sections_): Adjust.
	(config::priv::priv): Likewise.
	(config::{config, get_sections}): Likewise.
	(read_sections, read_config, write_sections): Likewise.

2014-09-08  Dodji Seketeli <dodji@redhat.com>

	Implement the abigail::ini::config abstraction
	* include/abg-ini.h (config::config): Add an overload that take a
	path and sections.
	(config::{get,set}_sections): New accessors.
	(read_sections): Rename the previous read_config() functions into
	these.
	(read_config): Add these function declarations to really act on
	instances of abigail::ini::config.
	(write_section): Rename the previous write_config functions into
	these.
	(write_config): Add these function declarations to really act on
	instances of abigail::ini::config.
	* src/abg-ini.cc (class config::priv): Implement this.
	(config::{config, ~config, get_path, set_path, get_sections,
	set_sections}): Define these new methods.
	(read_sections): Rename the former read_config into this.
	(read_config): Add this function definitions to really act on
	instances of abigail::ini::config.
	(write_sections): Rename the former write_config into this.
	(write_config):: Add this function definitions to really act on
	instances of abigail::ini::config.
	* tools/binilint.cc (main): Adjust.

2014-09-05  Dodji Seketeli <dodji@redhat.com>

	Initial support of ini-style file parsing
	* include/abg-ini.h: New file.
	* include/Makefile.am: Add include/abg-ini.h to the source
	distribution.
	* src/abg-ini.cc: New file.
	* src/Makefile.am: Add src/abg-ini.cc to the source distribution.
	* tools/binilint.cc: New testing tool.
	* tools/Makefile.am: Add tools/binilint.cc to the source distribution.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	Initial examples of suppression list specifications
	* doc/suppr-doc.txt: New file.

2014-10-11  Dodji Seketeli <dodji@redhat.com>

	Put IR artifacts in the abigail::ir namespace
	* include/abg-fwd.h: Wrap IR artifacts into abigail::ir namespace.
	Inject that new abigail::ir namespace into the abigail namespace.
	* include/abg-ir.h: Wrap IR artifacts into abigail::ir namespace.
	(function_decl::parameter::get_type_name): Adjust the call to
	abigail::get_type_name.  It's now a call to
	abigail::ir::get_type_name.
	* src/abg-ir.cc: Wrap IR artifacts into abigail::ir namespace.
	* include/abg-traverse.h: Wrap the ir traversing artifact into the
	abigail::ir namespace too.
	* src/abg-traverse.cc: Adjust.
	* include/abg-corpus.h: Wrap corpus type stuff into abigail::ir.
	* include/abg-dwarf-reader.h: Inject namespace abigail::ir stuff
	into the abigail::dwarf_reader namespace.
	* include/abg-reader.h: Inject namespace abigail::ir stuff into
	the abigail::xml_reader namespace.
	* src/abg-reader.cc: Adjust.
	* include/abg-writer.h: Inject namespace abigail::ir stuff into
	the abigail::xml_writer namespace.
	* src/abg-writer.cc: Inject namespace abigail::ir stuff into
	abigail namespace here too.
	* src/abg-hash.cc: Inject the abigail::ir namespace into the
	abigail namespace.
	* tools/abg-tools-utils.cc: Adjust for the injection of
	abigail::function_decl. It's now abigail::ir::function_decl.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	Misc style cleanups
	* src/abg-comparison.cc: ({pointer_diff, reference_diff}::length):
	Add some vertical spaces here.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	constify dm_context_rel::operator==
	* include/abg-ir.h (dm_context_rel::operator==): Make this const.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	A distinct_diff node has no children node
	* src/abg-comparison.cc (distinct_diff::chain_into_hierarchy): Do
	not append any children node here.

2014-10-13  Dodji Seketeli <dodji@redhat.com>

	Remove useless redundant_filter
	* include/abg-comp-filter.h (class redundant_filter): Remove this
	now useless type declaration
	* src/abg-comparison.cc (filtering::redundant_filter::visit):
	Remove this useless member function definition.

2014-10-10  Dodji Seketeli <dodji@redhat.com>

	Sort diff reports about function parameters by their indexes
	* include/abg-comparison.h (changed_parms_type): New convenience
	typedef.
	* src/abg-comparison.cc (struct changed_parm_comp): New comparison
	functor.
	(sort_changed_parm_map): New sorting function.
	(function_decl_diff::report): Use the new sort_changed_parm_map to
	sort the diffs for function parameters by their indexes.

2014-10-10  Dodji Seketeli <dodji@redhat.com>

	Don't be too eager to use distinct_diff
	* src/abg-comparison.cc (try_to_diff):  For this to actually
	select a diff kind, the two diff subject must be of type
	'DiffType'.
	(compute_diff_for_types, compute_diff_for_decls): Use
	distinct_diff in last resort.

2014-10-10  Dodji Seketeli <dodji@redhat.com>

	Implement generic diff tree walking and port categorization over it
	* include/abg-comp-filter.h (apply_filter): Declare new overload
	that takes a corpus_diff_sptr ...
	* src/abg-comp-filter.cc (apply_filter): ... and define it.  On
	the existing overload for diff_sptr, make sure to traverse all
	diff nodes, even those that have already been traversed.
	* include/abg-comparison.h (enum diff_category): Remove
	NOT_REDUNDANT_CATEGORY, add REDUNDANT_CATEGORY.
	(operator&=, +operator<<): Declare new operators for enum diff_category.
	(diff_context::{forbid_traversing_a_node_twice,
	traversing_a_node_twice_is_forbidden):
	(diff_context::categorizing_redundancy): Remove this declaration.
	(diff_context::maybe_apply_filters): Declare a new overload that
	takes a corpus_diff_sptr.  And a take a new flag that says if it
	should visit all nodes including those that have already been
	visited.
	(diff::priv_): Make this data member protected.
	(diff::{begin_traversing, is_traversing, end_traversing,
	finish_diff_type, children_nodes, append_child_node,
	get_pretty_representation, chain_into_hierarchy, traverse}):
	Declare new member functions.
	(distinct_diff::{finish_diff_type, get_pretty_representation,
	chain_into_hierarchy}): Likewise.
	(distinct_diff::traverse): Remove.
	(pointer_diff::pointer_diff): Take the underlying type diff in
	parameter.
	(pointer_diff::{finish_diff_type, get_pretty_representation,
	chain_into_hierarchy}): Declare new member functions.
	(pointer_diff::traverse): Remove.
	(reference_type_def::reference_type_def): Take the underlying type
	diff in parameter.
	({array_type_def, reference_type_def}::{finish_diff_type,
	get_pretty_representation, chain_into_hierarchy}): Declare new
	member functions.
	({array_type_diff, reference_type_def}::traverse): Remove.
	(qualified_type_diff::qualified_type_diff): Take the underlying
	type diff in parameter.
	({enum_diff, qualified_type_diff, class_diff}::{finish_diff_type,
	get_pretty_representation, chain_into_hierarchy}): Declare new
	member functions.
	({enum_diff, qualified_type_diff, class_diff}::traverse): Remove.
	(is_class_diff): Declare new function.
	(base_diff::base_diff): Take the underlying type diff in
	parameter.
	({scope_diff, base_diff}::{finish_diff_type, get_pretty_representation,
	chain_into_hierarchy}): Declare new member functions.
	({scope_diff, base_diff}::traverse): Remove.
	(function_decl_diff::function_decl_diff): Take the return type
	diff as parameter.
	({function_decl_diff, type_decl_diff}::{finish_diff_type,
	get_pretty_representation, chain_into_hierarchy}): Declare new
	member functions.
	({function_decl_diff, type_decl_diff}::traverse): Remove.
	(typedef_diff::typedef_diff): Take the underlying type diff as
	parameter.
	(typedef::{finish_diff_type, get_pretty_representation,
	chain_into_hierarchy}): Declare new member functions.
	({typedef, translation_unit_diff}::traverse): Remove member
	function.
	(corpus_diff::{finish_diff_type, children_nodes,
	append_child_node, changed_variables, get_pretty_representation,
	chain_into_hierarchy}): Declare new member functions.
	(class diff_node_visitor::{visit_begin, visit_end}): Declare new
	member functions.
	(propagate_categories, print_diff_tree, categorizing_redundancy)
	(clear_redundancy_categorization, apply_filters): New functions
	and function overloads.
	* src/abg-comparison.cc (TRY_PRE_VISIT, TRY_PRE_VISIT_CLASS_DIFF)
	(TRY_POST_VISIT, TRY_POST_VISIT_CLASS_DIFF)
	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE)
	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Remove these macros.
	Hurrah.
	(diff_context::priv::categorizing_redundancy_): Remove.
	(diff_context::priv::forbid_traversing_a_node_twice_): Add new
	data member.
	(diff_context::priv::priv): Adjust.
	(diff_context::{forbid_traversing_a_node_twice,
	traversing_a_node_twice_is_forbidden}): Define new member
	functions.
	(diff_context::maybe_apply_filters): Once filters are applied (and
	categories are set to the relevant diff tree nodes, run a pass
	over the diff tree to propagate the categories to the relevant
	diff tree parent nodes.  Add an overload for corpus_diff_sptr.
	(diff_context::categorizing_redundancy): Remove member function.
	(diff_context::maybe_apply_filters): Define a new overload for
	corpus_diff_sptr
	(struct diff::priv::{finished_, traversing_, children_,
	pretty_representation_}):  New data members.
	(diff::priv::priv): Adjust.
	(diff::{begin_traversing, is_traversing, end_traversing,
	finish_diff_type, children_nodes, append_child_node, traverse,
	set_category, get_pretty_representation, chain_into_hierarchy}):
	Define new member functions.
	(diff::is_filtered_out): Do not refer to NOT_REDUNDANT_CATEGORY
	anymore.  Rather, use the new REDUNDANT_CATEGORY.
	({distinct_diff, var_diff, pointer_diff, array_diff,
	reference_diff, qualified_type_diff, enum_diff, class_diff,
	base_diff, scope_diff, function_decl_diff, type_decl_diff,
	typedef_diff}::{get_pretty_representation, chain_into_hierarchy,
	finish_diff_type}): Define new member functions.
	({distinct_diff, var_diff, pointer_diff, array_diff,
	reference_diff, qualified_type_diff, enum_diff, class_diff,
	base_diff, scope_diff, function_decl_diff, type_decl_diff,
	typedef_diff, translation_unit_diff}::traverse): Remove member
	functions.
	(operator&=, operator<<): Define new operators for diff_category.
	({function_decl_diff, typedef_diff}::priv::priv): Add a new
	constructor.
	(pointer_diff::{priv::priv, pointer_diff})
	(reference_diff::{priv::priv, reference_diff})
	(qualified_type_diff::{priv::priv, qualified_type_diff})
	(enum_diff::{priv::priv, enum_diff}, base_diff::{priv::priv,
	base_diff}, function_decl_diff::function_decl_diff): Take the
	underlying type diff in parameter.
	(compute_diff): Adjust the pointer_diff, reference_diff,
	qualified_type_diff, base_diff, function_decl_diff overloads.
	(class_diff::priv::{count_filtered_bases,
	count_filtered_subtype_changed_dm, count_filtered_changed_dm,
	count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
	count_filtered_deleted_mem_fns}): Adjust for the call to
	diff_context::maybe_apply_filters.
	(corpus_diff::priv::{finished_, pretty_representation_}): New data
	member.
	(corpus_diff::priv::priv): New constructor.
	(corpus_diff::priv::clear_redundancy_categorization): Define new
	member function.
	(corpus_diff::priv::apply_filters_and_compute_diff_stats):
	Adjust for call to diff_context::maybe_apply_filters.  Also, call
	clear_redundancy_categorization at the end.
	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
	Revisit logic.
	(corpus_diff::{chain_into_hierarchy, finish_diff_type,
	children_nodes, append_child_node, changed_variables,
	get_pretty_representation}): Define new member functions.
	(corpus_diff::report): Categorize redundancy for every top level
	function/variable diff.
	(corpus_diff::traverse): Adjust to the new traversing interface.
	(diff_node_visitor::{visit_begin, visit_end}): Define new member
	functions.
	(struct category_propagation_visitor, struct diff_node_printer)
	(struct redundancy_marking_visitor, struct
	redundancy_clearing_visitor): New diff tree node visitors.
	(propagate_categories, print_diff_tree, categorize_redundancy)
	(clear_redundancy_categorization, apply_filters): Define new
	functions.
	* tests/Makefile.am: Add the new tests/print-diff-tree.cc to the
	source distribution.  Build it into a tests/printdifftree binary.
	* tools/abidiff.cc (print_diff_tree): Add debugging functions to
	call from within the debugger.  By default, this function and its
	overloads are not compiled.

2014-10-10  Dodji Seketeli <dodji@redhat.com>

	Update copyright notice for tests/test-diff2.cc
	* tests/test-diff2.cc: Update copyright year.

2014-10-09  Dodji Seketeli <dodji@redhat.com>

	Do not crash on function_decl_diff for fns that have no symbol
	* src/abg-comparison.cc (function_decl_diff::report): If a
	function decl has no associated elf symbol, do not crash while
	trying to report about its elf symbol aliases.

2014-10-09  Dodji Seketeli <dodji@redhat.com>

	Avoid broken output for virtual member fns w/o symbols
	* src/abg-comparison.cc (represent): When a virtual member
	function has no associated elf symbol, do not emit garbage in lieu
	of the linkage name.  Just emit no linkage name;
	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Sort added/removed/changed functions reported by the comparison engine
	* src/abg-comparison.cc (struct function_comp, struct
	changed_function_ptr_comp): New comparison functors.
	(sort_string_function_ptr_map)
	(sort_string_changed_function_ptr_map): Define new static
	functions.
	(corpus_diff::report): Sort the added/removed/changed functions
	that are reported.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test01-report.txt: Adjust.
	* tests/data/test-diff-filter/test2-report.txt: Adjust.
	* tests/data/test-diff-filter/test9-report.txt: Adjust.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Mention virtual-ness of member function in their pretty representation
	* include/abg-fwd.h (get_member_function_is_virtual): Declare new
	overload for pointers.
	* src/abg-ir.cc (get_member_function_is_virtual): Define it.
	(function_decl::get_pretty_representation): Print virtual-ness of
	the function_decl being pretty printed.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Do not crash when reporting diffs about virtual member fns that have no symbol
	* src/abg-comparison.cc (represent): If a virtual member function
	has no symbol do not crash.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Fixup member functions which virtual-ness has just been set
	* include/abg-ir.h (fixup_virtual_member_function): Declare new
	function.
	(class_decl): Declare fixup_virtual_member_function() as a member.
	* src/abg-ir.cc (set_member_function_is_virtual): Ensure that the
	member function that has seen its virtualness set is also put
	correctly put in the vector of virtual member functions of its
	class.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Assert that only decls with elf symbols are part of comparison
	* src/abg-corpus.cc (corpus::priv::build_public_decl_table): Assert
	that when read from DWARF, only decls with elf symbols are part of
	the public decls table.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Emit all virtual member functions in group
	* src/abg-writer.cc (write_class_decl): Emit virtual member
	functions contiguously.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Always emit vtable offset for virtual member function
	* src/abg-writer.cc (write_voffset): Emit the vtable offset of
	virtual function even when the offset is zero.

2014-10-02  Dodji Seketeli <dodji@redhat.com>

	Do not forget priv_->in_pub_sym_tab_ when copying decl_base
	* src/abg-ir.cc (decl_base::decl_base(const decl_base& d)): Do
	not forget to copy priv_->in_pub_sym_tab_.

2014-10-01  Dodji Seketeli <dodji@redhat.com>

	Fix reading several clones of the same member function from DWARF
	* include/abg-fwd.h (set_member_function_is_ctor)
	(set_member_function_is_dtor, set_member_function_is_const)
	(set_member_function_vtable_offset): Declare new functions.
	* include/abg-ir.h (class_decl::sort_virtual_mem_fns): Declare new
	member function.
	(mem_fn_context_rel::{vtable_offset, is_constructor is_destructor,
	is_const}): Add these setters.
	(set_member_function_is_ctor, set_member_function_is_dtor)
	(set_member_function_is_static, set_member_function_is_const)
	(set_member_function_vtable_offset)
	(set_member_function_is_virtual): Declare these new friend
	function to class class_decl::method_decl.
	* src/abg-dwarf-reader.cc (finish_member_function_reading): Split
	this out from build_class_type_and_add_to_ir.  Use the new setters
	for member functions properties introduced above.
	(build_class_type_and_add_to_ir): Factorize the creation of member
	function by using build_ir_node_from_die.  Once that function has
	created the member function in a rather generic way, use the new
	finish_member_function_reading to set the remaining specific
	properties for member functions.
	(build_function_decl): When called to read additional properties
	of a function_decl, allow this to read and update the elf symbol
	properties too.  This is useful for building a clone of a function
	that already has an elf symbol.
	(build_ir_node_from_die):  When building a function decl, consider
	the case of a DIE that has both DW_AT_specification and
	DW_AT_abstract_origin set.  That is, DW_AT_abstract_origin is set,
	and the origin has DW_AT_specification set.  This is basically a
	clone of a function that implements an interface (this happens for
	destructors, for instance).  In this case, really do the cloning
	of the interface implementation.  If the cloned function happens
	to be member function, use finish_member_function_reading to read
	the properties relevant to its method-ness.
	* src/abg-ir.cc (set_member_function_is_ctor)
	(set_member_function_is_dtor, set_member_function_is_const)
	(set_member_function_vtable_offset)
	(class_decl::sort_virtual_mem_fns): Define new functions.
	(sort_virtual_member_functions): Define new static function.
	(struct virtual_member_function_less_than): New functor.
	(class_decl::add_member_function): Keep virtual member functions
	vector sorted.
	* data/test-read-dwarf/test1.abi: Adjust.  Now, both the
	cdtor specification and all the clones that implements the
	different are emitted.
	* data/test-read-dwarf/test2.so.abi: Likewise.

2014-10-01  Dodji Seketeli <dodji@redhat.com>

	Do not crash when comparing functions that have no symbol
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): Just skip functions
	that have no ELF symbol.

2014-09-30  Dodji Seketeli <dodji@redhat.com>

	Rename member_function_is_virtual to get_member_function_is_virtual
	* include/abg-fwd.h (get_member_function_is_virtual): Renamed the
	declaration of member_function_is_virtual into this.
	* src/abg-ir.cc (get_member_function_is_virtual): Likewise for its
	definition.
	* include/abg-ir.h (class decl_base): Adjust the friend function
	member_function_is_virtual references.
	* src/abg-comp-filter.cc (has_virtual_mem_fn_change)
	(has_non_virtual_mem_fn_change): Adjust.
	* src/abg-comparison.cc (represent)
	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED, class_diff::report):
	Likewise.
	* src/abg-hash.cc (class_decl::hash::operator()): Likewise.
	(function_decl::clone, class_decl::add_member_function): Adjust.

2014-09-30  Dodji Seketeli <dodji@redhat.com>

	Factorize a no-op deleter for shared pointer
	* include/abg-sptr-utils.h (struct noop_deleter): Move this here
	from ...
	* src/abg-comparison.cc (struct noop_deleter): ... here.

2014-09-30  Dodji Seketeli <dodji@redhat.com>

	Link manuals from the main web page
	* doc/website/mainpage.txt: Add a link to the manuals.

2014-09-26  Dodji Seketeli <dodji@redhat.com>

	Initial documentation for libabigail
	* doc/manuals/Makefile: New file, generated by sphinx-quickstart.
	* doc/manuals/abidiff.rst: New manual for abidiff.
	* doc/manuals/abidw.rst: New manual for abidw.
	* doc/manuals/abilint.rst: New manual for abilint.
	* doc/manuals/conf.py: New configuration file generated by sphinx-quickstart.
	* doc/manuals/index.rst: The root of the this documentation.
	* doc/manuals/libabigail-overview.rst: The overview of libabigail.
	* doc/manuals/tools.rst: The root of the tools manuals.

2014-09-26  Dodji Seketeli <dodji@redhat.com>

	Do not install the abisym program
	* tools/Makefile.am: Do not install abisym.  It's really there
	just for testing purposes and is of almost no use for generic
	users.

2014-09-26  Dodji Seketeli <dodji@redhat.com>

	Rename bi* tools to abi* tools
	* tests/data/test-bidiff: Rename this directory to
	tests/data/test-abidiff.
	* tests/test-bidiff.cc: Renamed this to tests/test-abidiff.cc.
	* tools/biar.cc: Renamed to tools/abiar.cc
	* tools/bidiff.cc: Renamed to tools/abidiff.cc
	* tools/bidw.cc: Renamed to tools/abidw.cc
	* tools/bilint.cc: Renamed to tools/abilint.cc
	* tools/bisym.cc: Renamed to tools/abisym.cc
	* tests/test-alt-dwarf-file.cc: Renamed references to bidw* to abidw*.
	* tests/test-diff-filter.cc: Renamed references to bidiff to abidiff.
	* tests/test-lookup-syms.cc: Renamed references to bisym to abisym.
	* tools/Makefile.am: Adjust.
	* tests/Makefile.am: Likewise.

2014-09-19  Dodji Seketeli <dodji@redhat.com>

	Light cleanup in abg-corpus.cc
	* src/abg-corpus.cc
	(symtab_build_visitor_type::regex_fns_suppress): use
	sptr_utils::build_sptr, rather than building the shared_ptr of
	regex_t by hand.

2014-09-18  Dodji Seketeli <dodji@redhat.com>

	Pimplify abigail::comparison::diff type
	* include/abg-comparison.h (diff::{priv, sptr}): New types.
	(diff::priv_): New member.
	(diff::*): Remove all the other previous data members and
	transform the inline member function definition into declarations
	only.
	* src/abg-comparison.cc (class diff::priv): New private data type.
	(diff::*): Define the previous inline member functions as
	out-of-line here.

2014-09-18  Dodji Seketeli <dodji@redhat.com>

	Rename shared_ptr<regex_t> into regex_t_sptr
	* include/abg-sptr-utils.h (build_sptr()): Rename the return type
	from shared_ptr<regex_t> to regex_t_sptr.

2014-09-19  Dodji Seketeli <dodji@redhat.com>

	Fix a comment in abg-comparison.h
	* include/abg-comparison.h (class base_diff): Fix comment.

2014-09-05  Dodji Seketeli <dodji@redhat.com>

	Light style cleanup in tools/bidiff.cc
	* tools/bidiff.cc (display_usage): Remove useless space before '&'.

2014-09-05  Dodji Seketeli <dodji@redhat.com>

	src/Makefile.am cleanup
	* src/Makefile.am: Remove the unused 'headers' variable.

2014-09-16  Dodji Seketeli <dodji@redhat.com>

	Emit reports about not-yet categorized diff nodes
	* include/abg-comparison.h (NO_CHANGE_CATEGORY): Better comment
	this enumerator.
	* src/abg-comparison.cc (diff::is_filtered_out): Not-yet
	categorized changes are not filtered out anymore.
	(distinct_diff::report): Avoid extraneous new line here.

2014-09-16  Dodji Seketeli <dodji@redhat.com>

	Better support for inline related diffs
	* include/abg-comparison.h
	(diff_category::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY): New
	enumerator.
	(diff_category::EVERYTHING_CATEGORY): Adjust.
	* include/abg-ir.h (elf_symbol::get_aliases_id_string)
	(elf_symbol::does_alias, elf_symbols_alias)
	(compute_aliases_for_elf_symbol): Declare new functions ...
	* src/abg-ir.cc (elf_symbol::get_aliases_id_string)
	(elf_symbol::does_alias, elf_symbols_alias)
	(compute_aliases_for_elf_symbol): ... and define them.
	(function_decl::operator==): Take in account elf symbol aliases.
	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
	Define new static functions.
	(harmless_filter::visit): Categorize function name changes that
	n	doesn't impact underlying elf symbols (or the fact that two
	symbols were aliases and are not anymore) as harmless.
	* src/abg-comparison.cc (function_decl_diff::report): Properly
	report function name changes, or symbol aliases changes for that
	matter.  Also report inline-ness declaration changes.
	* src/abg-dwarf-reader.cc (die_is_declared_inline): New static
	function.
	(build_function_decl): Use the above.
	* tools/bidiff.cc (set_diff_context_from_opts): Add
	abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY into the
	harmless change camp.
	* tests/data/test-diff-dwarf/test14-inline-report.txt: New test
	input.
	* tests/data/test-diff-dwarf/test14-inline-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test14-inline-v1.o: Likewise.
	* tests/data/test-diff-dwarf/test14-inline-v0.cc: Source code for
	test input.
	* tests/data/test-diff-dwarf/test14-inline-v1.cc: Source code for
	test input.
	* tests/test-diff-dwarf.cc: Run this test harness over the new
	input above.
	* tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
	* tests/data/test-diff-filter/test20-inline-report-1.txt:
	Likewise.
	* tests/data/test-diff-filter/test20-inline-v0.o: New test input.
	* tests/data/test-diff-filter/test20-inline-v1.o: New test input.
	* tests/data/test-diff-filter/test20-inline-v0.cc: Source code for
	test input.
	* tests/data/test-diff-filter/test20-inline-v1.cc: Likewise.
	* tests/test-diff-filter.cc: Run this test harness over the new
	input above.

2014-09-16  Dodji Seketeli <dodji@redhat.com>

	Better support for enum diffs
	* include/abg-comparison.h (changed_enumerator_type): New typedef.
	(diff_category::{HARMLESS_ENUM_CHANGE_CATEGORY}): New enumerator.
	* src/abg-comp-filter.cc (has_type_size_change)
	(has_enumerator_insertion, has_enumerator_removal_or_change)
	(has_harmful_enum_change): New functions.
	(harmless_filter::visit): Categorize enumerator insertions that
	don't change the size of the type into HARMLESS_ENUM_CHANGE_CATEGORY.
	(harmful_filter::visit): Categorize enumerator removal or any enum
	change that changes the size of the type into
	SIZE_OR_OFFSET_CHANGE_CATEGORY.
	* src/abg-comparison.cc (enumerator_value_comp)
	(changed_enumerator_comp): New types.
	(sort_enumerators, sort_changed_enumerators): New static
	functions.
	(enum_diff::report): Sort enum related reports by the value of the
	enumerators.
	* src/abg-dwarf-reader.cc (build_enum_type): Name anonymous enums
	as __anonymous_enum__.
	* tools/bidiff.cc (set_diff_context_from_opts): Add
	abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY into the harmless
	stuff camp.
	* tests/data/test-diff-dwarf/test15-enum-report.txt: New test
	input.
	* tests/data/test-diff-dwarf/test15-enum-v1.o: Likewise.
	* tests/data/test-diff-dwarf/test15-enum-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test15-enum-v0.cc: Source code for
	test input.
	* tests/data/test-diff-dwarf/test15-enum-v1.cc: Likewise.
	* tests/data/test-diff-filter/test19-enum-report-0.txt: New test input.
	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
	* tests/data/test-diff-filter/test19-enum-v0.o: Likewise.
	* tests/data/test-diff-filter/test19-enum-v1.o: Likewise.
	* tests/data/test-diff-filter/test19-enum-v0.cc: Source code for
	test input.
	* tests/data/test-diff-filter/test19-enum-v1.cc: Likewise.
	* tests/test-diff-dwarf.cc: Run this test harness on the new test
	inputs above.
	* tests/test-diff-filter.cc: Likewise.
	* tests/Makefile.am: Add the new files above to the source distribution.

2014-09-16  Dodji Seketeli <dodji@redhat.com>

	Add constness to elf_symbol::operator==
	* include/abg-ir.h (elf_symbol::operator==): Add a const to the
	declaration ...
	* src/abg-ir.cc (elf_symbol::operator==): ... and to the definition.

2014-09-15  Dodji Seketeli <dodji@redhat.com>

	Misc style cleanups
	* src/abg-comparison.cc (ChangedDataMemberComp): Rename this to
	changed_data_member_comp
	(sort_changed_data_members): Adjust.
	(DataMemberComp): Rename this to data_member_comp.
	(sort_data_members): Adjust.

2014-09-15  Dodji Seketeli <dodji@redhat.com>

	Constify some function parameters in abg-comp-filter.cc
	* src/abg-comp-filter.cc (type_size_changed): Now take const
	parameters.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Add .gitignore files.
	* .gitignore: Add new file.
	* m4/.gitignore: Likewise.
	* tools/.gitignore: Likewise.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Place -L/-l flags into *_LIBADD/*_LDADD
	* src/Makefile.am: -L and -l ought to be in LIBADD/LDADD because
	that is the only place guaranteed to be in the right spot.  So add
	Them to libabigail_la_LIBADD.
	* tools/Makefile.am: Likewise.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Add libelf to libabigail.la's linker line
	* configure.ac: Check for the existence of libelf at configure
	time by looking at the presence of the elf_end symbol.  Add the
	libelf to the link command line.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Drop hardcoded substitutions
	* doc/Makefile.am: Do not use @docdir@.  It's indeed replaced at
	configure time. But there is no need for this limitation with
	automake, as $(docdir) is available and replaceable anytime.
	* src/Makefile.am: Likewise for @DEPS_LIBS@ and @DEPS_CFLAGS@.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Replace indirect variable assignments
	* configure.ac(DEVEL_CFLAGS, DEVEL_CXXFLAGS):  Remove these
	useless variables.
	(CFLAGS, CXXFLAGS): Set these variables directly.
	* include/Makefile.am (pkginclude_HEADERS): Use this predefined
	variable.
	(publicheaders_DATA, publicheadersdir): Remove these.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Remove empty and autogenerated files from git repository
	* ChangeLog: Remove this empty file for now.  It'll be added back
	right before the first release by automatic generation from the
	commit logs.
	* INSTALL: Remove this empty file for now.
	* NEWS: Remove this empty file for now.  It'll be added back right
	before the first release.
	* configure.ac (AM_INIT_AUTOMAKE): As the mandatory but empty
	files above are being removed for now, let's put in the 'foreign'
	mode of automake for the moment.  We'll likely remove it at
	release time.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Set automake options globally
	* configure.ac(AM_INIT_AUTOMAKE): Set the subdir-object option
	here ..
	* src/Makefile.am: ... not here.
	* tests/Makefile.am: Likewise.
	* tools/Makefile.am: Likewise.

2014-09-09  Jan Engelhardt <jengelh@inai.de>

	Stash some autogenerated tools in build-aux/
	* configure.ac: Reduce the pollution in the top-level directory a
	bit.

2014-09-10  Dodji Seketeli <dodji@redhat.com>

	Fix memory leaks due to cycles in types ownership
	* include/abg-fwd.h (std::tr1::weak_ptr): Inject this type in the
	abigail namespace.
	* include/abg-ir.h: Write a memory management guideline for the IR
	artifacts.
	(Type_base_wptr, function_type_wptr)
	(class_decl_wptr): New typedefs.
	(translation_unit::get_canonical_function_type): Declare new
	member function.
	(qualified_type_def::underlying_type_)
	(reference_type_def::pointed_to_type_)
	(typedef_decl::underlying_type_, function_decl::parameter::type_)
	(function_type::return_type_, method_type::class_type_)
	(non_type_tparameter::type_, type_composition::type_): Make this a
	weak pointer.
	(qualified_type_def::get_pointed_to_type)
	(reference_type_def::get_pointed_to_type)
	(array_type::get_element_type, typedef_decl::get_underlying_type)
	(var_decl::get_type, function_decl::parameter::get_type)
	(function_type::get_return_type, method_type::get_class_type)
	(non_type_tparameter::get_type)
	(type_composition::get_composed_type): Adjust to make this return
	a shared pointer initialized with the content of the weak pointer.
	(function_decl::function_decl, method_decl::method_decl): Remove
	the overload that doesn't take a type.  This is because now,
	function types need to be registered to their containing
	translation unit.
	(struct function_type::hash): Declare here.
	* src/abg-hash.cc (struct function_type::hash): Declare this in
	abg-ir.h and just define the methods here.
	* src/abg-ir.cc (fn_type_ptr_map): New typedef.
	(translation_unit::priv::canonical_types_): Remove this unused
	member.
	(translation_unit::priv::canonical_function_types_): New member.
	(translation_unit::get_canonical_function_type): Define this
	function.
	(array_type_def::priv::element_type_, var_decl::priv::type_)
	(function_decl::priv::type_): Make this a weak pointer.
	(qualified_type_def::get_underlying_type)
	(pointer_type_def::get_pointed_to_type)
	(reference_type_def::get_pointed_to_type)
	(array_type_def::get_element_type)
	(typedef_decl::get_underlying_type, var_decl::get_type)
	(function_decl::get_type): Adjust to make this return a shared
	pointer initialized with the content of the weak pointer.
	(qualified_type_def::build_name)
	(pointer_type_def::get_qualified_name)
	(reference_type_def::get_qualified_name): Adjust.
	(method_type::set_class_type): Cleanup the logic.
	(function_decl::priv::priv): Remove the overload that takes a bare
	pointer to a type.  This should not be used now that we need the
	function type to registered with the translation unit.
	(function_decl::function_decl): Remove the overload that doesn't
	take a type.  This is because now, function types need to be
	registered to their containing translation unit.
	* src/abg-dwarf-reader.cc (build_function_decl): Register the
	function type within its translation type and use its canonical
	version.  This complies with the new memory management rules.
	* src/abg-reader.cc (build_function_decl): Likewise.

2014-09-10  Dodji Seketeli <dodji@redhat.com>

	Compare class names when comparing methods
	* src/abg-ir.cc:

2014-09-10  Dodji Seketeli <dodji@redhat.com>

	Slight white space fix
	* src/abg-hash.cc (method_type::hash::operator()(const
	method_type&)): White space fix.

2014-09-10  Dodji Seketeli <dodji@redhat.com>

	Update copyright notice
	* include/abg-ir.h: Update year of copyright notice.

2014-07-05  Ondrej Oprala <ooprala@redhat.com>

	Unite help output for tools
	* tools/biar.cc (std::ostream): Add a using directive.
	(display_usage): Make it take a string reference and an ostream
	as parameters. Use the ostream argument as an output stream
	instead of a hard-coded cout.
	Prettify output.
	(main): Call display_usage with new parameters.
	* tools/bidiff.cc (display_usage): Declare it static.
	Prettify output.
	* tools/bidw.cc (display_usage): Prettify output.
	* tools/bilint.cc (display_usage): Declare it static.
	Prettify output.
	* tools/bisym.cc (std::cerr): Add a using directive.
	(prog_name): Rename progname into this.
	(display_usage): Rename show_help into this.
	Add an ostream as a parameter. Use the ostream argument
	as output stream insted of a hard-coded cout.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	Adjust copyright year
	* tests/test-diff-dwarf.cc: Adjust year in copyright notice.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	Sort reported changed data members by increasing offset
	* include/abg-comparison.h (changed_type_or_decl_vector): New
	typedef.
	* include/abg-fwd.h (is_data_member): Change the overload that
	takes a decl_base_sptr to make it return the real var_decl_sptr
	rather than just a bool.
	* src/abg-comparison.cc (ChangedDataMemberComp, DataMemberComp):
	New comparison functors.
	(sort_changed_data_members, sort_data_members): Sorting functions
	for changed data members and data members.
	(class_diff::report): Sort reports for deleted, inserted and
	change data members by the increasing value of the offsets of said
	data members.
	* src/abg-ir.cc (is_data_member): Change the overload that takes a
	decl_base_sptr to make it return the real var_decl_sptr rather
	than just a bool.
	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test13-report.txt: New test input.
	* tests/data/test-diff-dwarf/test13-v0.cc: Source code for new
	test input.
	* tests/data/test-diff-dwarf/test13-v0.o: New test input.
	* tests/data/test-diff-dwarf/test13-v1.cc: Source code for new
	test input.
	* tests/data/test-diff-dwarf/test13-v1.o: New test input.
	* tests/Makefile.am: Add the new test inputs above to the source
	distribution.
	* tests/test-diff-dwarf.cc: Run this test harness on the new test
	input.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	Do not filter out diff nodes that are only in NOT_REDUNDANT_CATEGORY
	* src/abg-comparison.cc (diff::is_filtered_out): If a diff not is
	only in the NOT_REDUNDANT_CATEGORY category consider it as not
	being filtered.
	* tests/data/test-diff-filter/test18-report.txt: New test input.
	* tests/data/test-diff-filter/test18-v0.cc: Source code for new
	test input.
	* tests/data/test-diff-filter/test18-v0.o: New test input.
	* tests/data/test-diff-filter/test18-v1.cc: Source code for new
	test input.
	* tests/data/test-diff-filter/test18-v1.o: New test input.
	* tests/Makefile.am: Add the new test inputs to the source distribution.
	* tests/test-diff-filter.cc: Run this test harness on the new test
	input above.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	White space cleanup
	* src/abg-ir.cc (get_data_member_offset): Remove useless
	horizontal white space.

2014-09-03  Dodji Seketeli <dodji@redhat.com>

	Add some comments in the comparison engine
	* src/abg-comparison.cc: Add a comment for the file.
	(struct class_diff::priv::{subtype_changed_dm_,changed_dm_}): Add
	comment for these data members.

2014-09-02  Dodji Seketeli <dodji@redhat.com>

	Remove useless new line from comparison engine's report
	* src/abg-comparison.cc (class_diff::report):  Do not emit new
	lines after reporting about inserted data members.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test3-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test01-report.txt: Adjust.
	* tests/data/test-diff-filter/test1-report.txt: Adjust.
	* tests/data/test-diff-filter/test11-report.txt: Adjust.
	* tests/data/test-diff-filter/test14-0-report.txt: Adjust.
	* tests/data/test-diff-filter/test14-1-report.txt: Adjust.
	* tests/data/test-diff-filter/test15-0-report.txt: Adjust.
	* tests/data/test-diff-filter/test15-1-report.txt: Adjust.
	* tests/data/test-diff-filter/test16-report.txt: Adjust.
	* tests/data/test-diff-filter/test17-0-report.txt: Adjust.
	* tests/data/test-diff-filter/test17-1-report.txt: Adjust.
	* tests/data/test-diff-filter/test2-report.txt: Adjust.
	* tests/data/test-diff-filter/test3-report.txt: Adjust.
	* tests/data/test-diff-filter/test9-report.txt: Adjust.

2014-09-01  Dodji Seketeli <dodji@redhat.com>

	Adjust copyright years
	* src/abg-corpus.cc: Adjust copyright years.
	* src/abg-libzip-utils.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2014-09-01  Dodji Seketeli <dodji@redhat.com>

	Factorize basic redundancy detection in diff report
	* src/abg-comparison.cc
	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER{2,3}): New
	macros.
	({pointer_diff, array_diff, reference_diff, qualified_type_diff,
	class_diff, typedef_diff}::report): Use the new macros above.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust
	because type pretty representation are now always quoted.
	* tests/data/test-bidiff/test-struct1-report.txt: Adjust likewise.

2014-08-31  Dodji Seketeli <dodji@redhat.com>

	Display package configuration at the end of configure
	* configure.ac: Display the configure of the package at the end of
	the configure script.

2014-08-31  Dodji Seketeli <dodji@redhat.com>

	Make zip archive support optional
	* configure.ac: Support a new --enable-zip-archive option.  By
	default its value is set to the 'auto', meaning that if libzip is
	installed, that turns the option on -- just like if
	--enable-zip-archive was called with the value 'yes'; if libzip is
	not installed, that turns the option off -- just like if
	--enable-zip-archive was called with the value 'no'.  If libzip is
	detected, the pre-processor macro HAVE_LIBZIP is set to 1.  If
	--enable-zip-archive is turned on, the pre-processor macro
	WITH_ZIP_ARCHIVE is set to 1.
	* config.h.in (HAVE_LIBZIP, WITH_ZIP): New define.
	* src/abg-corpus.cc: Include config.h.  Guard the inclusion of
	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE macro.  Likewise for
	the use of declarations coming from abg-libzip-utils.h.
	* src/abg-libzip-utils.cc: Include config.h.  Guard the file's
	content with the WITH_ZIP_ARCHIVE macro.
	* src/abg-reader.cc: Include config.h.  Guard the inclusion of
	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE.  Likewise for the
	use of declarations coming from abg-libzip-utils.h.
	* src/abg-writer.cc: Likewise.
	* tests/Makefile.am: Build runtestwritereadarchive and runtestdot
	only if zip archives are supported.
	* tools/Makefile.am: The biar program is built only if
	zip archives are supported.
	* tools/bidiff.cc: Handle zip archives only if the
	WITH_ZIP_ARCHIVE macros is defined.
	* tools/bilint.cc: Likewise.

2014-08-28  Dodji Seketeli <dodji@redhat.com>

	Tell bidiff --help, wrong options and missing argument apart
	* tools/bidiff.cc (options::{display_usage,missing_operand}): New
	data members.
	(options::options): Initialize them.
	(parse_command_line):  Flag missing operands.  Return false only
	when an option could not be parsed.  Flag when the user wants us
	to display help.
	(main): Tell --help, wrong options and missing argument apart and
	give an appropriate message on stderr.  The help string goes to
	stdout though.  Just like what GNU diff does.

2014-08-28  Dodji Seketeli <dodji@redhat.com>

	In bidiff, don't emit a report when the binaries have the same ABI
	* tools/bidiff.cc (main): For differences of zero length, do not
	emit any report.

2014-08-29  Dodji Seketeli <dodji@redhat.com>

	Take variables in account in corpus changes detection
	* src/abg-comparison.cc (corpus_diff::length): Take changes about
	variables into account.

2014-08-28  Dodji Seketeli <dodji@redhat.com>

	During redundancy marking start with the current node as non redundant
	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE):  If the
	diff node is being traversed for the first time, mark it as being
	in the NOT_REDUNDANT_CATEGORY.  I don't know why I was doing this
	only for classes and basic types.  Update comments.
	* tests/data/test-diff-filter/test16-report.txt: New test input.
	* tests/data/test-diff-filter/test16-v0.cc: Source code of new
	test input.
	* tests/data/test-diff-filter/test16-v0.o: New test input.
	* tests/data/test-diff-filter/test16-v1.cc: Source code of new
	test input.
	* tests/data/test-diff-filter/test16-v1.o: New test input.
	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
	* tests/data/test-diff-filter/test17-v0.cc: Source code of new
	test input.
	* tests/data/test-diff-filter/test17-v0.o: Likewise.
	* tests/data/test-diff-filter/test17-v1.cc: Source code of new
	test input.
	* tests/data/test-diff-filter/test17-v1.o: Likewise.
	* tests/Makefile.am: Add the new files to the source distribution.
	* tests/test-diff-filter.cc (in_out_spec): Run this test harness
	over the new test inputs.

2014-08-28  Dodji Seketeli <dodji@redhat.com>

	Give anonymous struct the name "__anonymous_struct__"
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Set
	the name of anonymous structs to '__anonymous_struct_'.

2014-08-28  Dodji Seketeli <dodji@redhat.com>

	Style fix in the comparison engine
	* src/abg-comparison.cc (represent): Remove useless white space.

2014-08-27  Dodji Seketeli <dodji@redhat.com>

	In bidiff, change --no-linkage-names to --no-linkage-name
	* tools/bidiff.cc (display_usage): Change--no-linkage-names -o
	--no-linkage-name in the help string.
	(parse_command_line): Adjust the command line parsing accordingly.
	* tests/test-diff-filter.cc (in_out_specs): Adjust.

2014-08-27  Dodji Seketeli <dodji@redhat.com>

	In diff reports, show symbol version info in linkage names
	* src/abg-comparison.cc (represent, corpus_diff::report): show
	symbol version info in linkage name info.

2014-08-27  Dodji Seketeli <dodji@redhat.com>

	In diff reports, fns & members add/remove at the top, changes later.
	* src/abg-comparison.cc (class_diff::report): Put virtual member
	function adding/removal/change first, then data members
	add/removal, then the rest (including data members changes).
	(corpus_diff::report): Put function adding/removal first, then
	function changes.  Likewise for variables.
	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test9-report.txt: Adjust.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test01-report.txt: Adjust.
	* tests/data/test-diff-filter/test1-report.txt: Adjust.
	* tests/data/test-diff-filter/test13-report.txt: Adjust.
	* tests/data/test-diff-filter/test2-report.txt: Adjust.
	* tests/data/test-diff-filter/test3-report.txt: Adjust.
	* tests/data/test-diff-filter/test9-report.txt: Adjust.

2014-08-27  Dodji Seketeli <dodji@redhat.com>

	Consider symbol versions' public-ness during comparison
	* src/abg-ir.cc (elf_symbol::operator==): Rather than comparing
	bindings, compare public-ness here.  That is, if two symbol
	versions' differ because one is GLOBAL and the other one is WEAK,
	they should still be considered equal, from an ABI standpoint.

2014-08-27  Dodji Seketeli <dodji@redhat.com>

	Lookup proper names of symbol during determination of deleted/added decls
	* src/abg-comparison.cc
	({class,corpus}_diff::ensure_lookup_tables_populated):  Now that in the
	intermediate maps we store symbol *ids* rather than symbol names,
	make sure to really refer to symbol names for symbol lookups,
	rather than (wrongly) referring to symbol ids.

2014-08-26  Dodji Seketeli <dodji@redhat.com>

	Cleanup bidiff help string some more
	* tools/bidiff.cc (display_usage): Add help strings for --harmless
	and --no-harmful.
	(main): Emit the help string to stdout, not stderr.

2014-08-26  Dodji Seketeli <dodji@redhat.com>

	bidiff --no-harmless is no more
	* tools/bidiff.cc (display_usage): Remove the help string for the
	--no-harmless option that doesn't exist anymore, as it's on by
	default.

2014-08-26  Dodji Seketeli <dodji@redhat.com>

	During comparison use symbol name + version as decl ID
	* include/abg-ir.h ({var,function}_decl::get_id): New member
	function declarations.
	* src/abg-ir.cc ({var,function}_decl::get_id): New member function
	definitions.
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
	::get_id() function to get an identifier for the function or
	variable.
	* src/abg-corpus.cc (symtab_build_visitor_type::build_id): Use the
	get_id of the function/variable.

2014-08-26  Dodji Seketeli <dodji@redhat.com>

	Fix access to alternate die -> decl map
	* src/abg-dwarf-reader.cc (read_context::alternate_die_decl_map):
	Return the real alternate die decl map, rather than what we was
	doing previously b/c of a stupid copy/paste.  Oh well.

2014-08-25  Dodji Seketeli <dodji@redhat.com>

	Take symbol versions in account when computing added/removed decls
	* include/abg-corpus.h
	(corpus::lookup_{function,variable}_symbol): Add an overload
	declaration that takes the version of the symbol to lookup.
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): So when looking
	up the corpora for symbols, take their versions in account.
	* src/abg-corpus.cc (corpus::lookup_{function,variable}_symbol):
	Add an overload definition that takes the version of the symbol to
	lookup.
	(symtab_build_visitor_type::build_id): New
	member functions.
	(corpus::priv::build_public_decl_table): Use the new member
	functions above.
	* src/abg-ir.cc (elf_symbol::version::operator==): Do not take the
	is_default flag in account when comparing two symbol versions.
	* libtest12-v{0,1}.so: New test input files.
	* libtest12-v{0,1}.c: Source code for the test input files.
	* test12-version-script: Version script to build the files above.
	* test12-report.txt: Test input file.
	* tests/Makefile.am: Add the new test input files above to the
	source distribution.
	* tests/test-diff-dwarf.cc (in_out_specs[]): Add an entry to this
	table for the new test input files.

2014-08-25  Dodji Seketeli <dodji@redhat.com>

	Misc style cleanups
	* include/abg-corpus.h (corpus::lookup_function_symbol)
	(corpus::lookup_variable_symbol): Add the name of the function
	parameter in the declaration.
	* include/abg-ir.h (elf_symbol::version::version): Properly indent
	this constructor declaration.
	* src/abg-corpus.cc
	(symtab_build_visitor_type::symtab_build_visitor_type): Properly
	indent constructor parameters.
	* src/abg-ir.cc (function_decl::operator==): Fix typo in
	comments.

2014-08-25  Dodji Seketeli <dodji@redhat.com>

	bidiff --harmful is not supported anymore
	* tools/bidiff.cc (display_usage): remove the '--harmful' line
	from the help string as this option is now activated by default.
	It's --harmless that exists now.

2014-08-22  Dodji Seketeli <dodji@redhat.com>

	A builtin type name change is not harmless - fix that
	* include/abg-comp-filter.h (has_harmless_name_change): New
	function declaration.
	* include/abg-comparison.h
	(diff_category::DECL_NAME_CHANGE_CATEGORY): Renamed this into
	HARMLESS_DECL_NAME_CHANGE_CATEGORY.
	(diff_category::EVERYTHING_CATEGORY): Update.
	* include/abg-fwd.h (is_enum): New function declaration.
	(is_var_decl): Return the shared_ptr<var_decl> rather than a bool.
	(is_data_member): New overload that takes a shared_ptr<decl_base>.
	* src/abg-comp-filter.cc (decl_name_changed): Consider the
	qualified name here.
	(has_harmless_name_change): Define new function declaration.
	(harmless_filter::visit): Use the new has_harmless_name_change
	function.
	* src/abg-comparison.cc (represent)
	(report_name_size_and_alignment_changes, enum_diff::report)
	(typedef_diff::report, is_data_member): Use the new
	filtering::has_harmless_name_change function to simplify logic of
	emitting the name change related diff
	* tools/bidiff.cc (set_diff_context_from_opts): Adjust
	DECL_NAME_CHANGE_CATEGORY -> HARMLESS_DECL_NAME_CHANGE_CATEGORY.
	* src/abg-ir.cc (is_data_member, is_enum): New function definitions.
	(is_var_decl): Return the var_decl_sptr rather than just a bool.
	* tests/data/test-diff-filter/test13-report.txt: Adjust.
	* tests/data/test-diff-filter/test6-report.txt: Adjust.

2014-08-18  Ondrej Oprala <ooprala@redhat.com>

	Support C and C++ array type.
	* include/abg-comparison.h (array_diff): Declare new class.
	(array_diff_sptr): Shared pointer to type array_diff.
	(compute_diff): Overload the function to take type
	array_diff_sptr as the first two arguments.
	* include/abg-fwd.h (array_type_def): Declare new class.
	(subrange_type): Likewise.
	(is_array_def): Declare new function.
	* include/abg-ir.h (array_type_def_sptr): Shared pointer
	to type array_type_def.
	(array_type_def): Declare new class.
	(ir_node_visitor::visit): Declare a new virtual function
	taking a pointer to type array_type_def as an argument.
	* src/abg-comparison.cc (compute_diff_for_types): Add
	try_to_diff for two instances of type array_type_def.
	(array_diff::priv): declare struct for holding private members
	of type array_diff.
	(array_diff::array_diff): Define constructor.
	(array_diff::{first,second}_array):Define new
	member functions.
	(array_diff::element_type_diff): Likewise.
	(array_diff::{length,report,traverse}): Likewise.
	(compute_diff): Define function overloaded in
	include/abg-comparison.h.
	* src/abg-dwarf-reader.cc (build_array_type): Define new
	function. Handle DW_TAG_array_type and DW_TAG_subrange type.
	(build_ir_node_from_die): Amend case DW_TAG_array_type with
	a call to build_array_type.
	* src/abg-hash.cc (array_type_def::hash): Declare new struct.
	(type_base::dynamic_hash::operator()): Attempt to dynamic_cast
	the argument to type array_type_def as well.
	(array_type_def::hash): Declare new struct.
	* src/abg-ir.cc (array_type_def::array_type_def): Define
	constructors.
	(array_type_def::priv): declare struct for holding private members
	of type array_type_def.
	(array_type_def::operator==(const decl_base&):
	Define new operator.
	(array_type_def::operator==(const type_base&):
	Likewise.
	(array_type_def::append_subrange{,s}): Define
	new functions.
	(array_type_def::{set,get}_size_in_bits): Likewise.
	(array_type_def::get_dimension_count): Likewise.
	(array_type_def::get_qualified_name): Likewise.
	(array_type_def::get_pretty_representation): Likewise.
	(array_type_def::get_subrange_representation): Likewise.
	(array_type_def::traverse): Likewise.
	(array_type_def::get_{element_type,location,subranges}): Likewise.
	(array_type_def::is_infinite): Likewise.
	(array_type_def::~array_type_def): Define destructor.
	(ir_node_visitor::visit): Define function, taking
	pointer to array_type_def as an argument.
	* src/abg-reader.cc (map_id_and_node): Check if node
	is an array.
	(is_array_def): Check if object is an array.
	(handle_element_node): Handle array_type_def as well.
	(build_subrange_type): Define new function.
	(build_array_type_def): Likewise.
	(build_type): Build type array_type_def as well.
	(build_type_composition): Likewise.
	(handle_array_type_def): Define new function.
	* src/abg-writer.cc: (write_decl): Output arrays
	as well.
	(write_member_type): Likewise.
	(write_type_composition): Likewise.
	(write_array_type_def): Define new function.
	* tests/data/test-diff-dwarf/test{10,11}-v{0,1}.{cc,o}: New test source
	files
	* tests/data/test-diff-dwarf/test{10,11}-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test10-report.txt: New test input.
	* tests/data/test-read-dwarf/test7.cc: New test source
	file.
	* tests/data/test-read-dwarf/test7.so: New input binary
	to read.
	* tests/data/test-read-dwarf/test7.so.abi: New reference
	test to compare against.
	* tests/data/test-read-write/test25.xml: New test source
	file.
	* tests/test-diff-dwarf.cc: Adjust to launch the new test.
	* tests/test-read-dwarf.cc: Likewise.
	* tests/test-read-write.cc: Likewise.
	* test/Makefile.am: Add the new test inputs to the source
	distribution.

2014-08-19  Dodji Seketeli <dodji@redhat.com>

	Ignore variables which type couldn't be read from DWARF
	* src/abg-dwarf-reader.cc (build_var_decl): Drop the var on the
	floor if its type couldn't be built.

2014-08-19  Dodji Seketeli <dodji@redhat.com>

	Support TLS variables
	* src/abg-ir.cc (elf_symbol::is_variable): Accept TLS objects as
	variables too.
	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr)
	(die_location_address): Add an output parameter to say if the
	resulting constant value is a tls address or not.
	(lookup_public_variable_symbol_from_elf): Use the proper
	elf_symbol::is_variable() method, rather than trying to figure out
	the low levels of what a variable is here.  Also, cleanup the
	condition.
	(read_context::load_symbol_maps): Consider symbols of type
	STT_TLS, when loading symbols for variables.  Also, to avoir
	symbols that are for versions, filter out symbols of type
	STT_OBJECT and with a SHN_ABS section index.
	(read_context::get_variable_address): If the address is for a tls
	variable, do no try to adjust the address to arrange for things
	like prelink.  As that doesn't seem to affect TLS variables.
	(dwarf_expr_eval_context::set_tls_addr): New data member.
	(dwarf_expr_eval_context::dwarf_expr_eval_context): Initialize it.
	(dwarf_expr_eval_context::set_tls_address): New accessors.
	(dwarf_expr_eval_context::op_manipulates_stack): Handle
	DW_OP_GNU_push_tls_address, a bit like DW_OP_form_tls_address, but
	then, its result is a constant.  Set the
	dwarf_expr_eval_context::set_tls_addr flag when these two OPs are
	run.
	(die_member_offset): Adjust to the new signature of
	eval_last_constant_dwarf_sub_expr.
	* tests/data/test-diff-dwarf/libtest9-v0.so: New test input.
	* tests/data/test-diff-dwarf/libtest9-v1.so: Likewise.
	* tests/data/test-diff-dwarf/test9-report.txt: Likewise
	* tests/data/test-diff-dwarf/test9-v0.cc: Source code for the
	first input.
	* tests/data/test-diff-dwarf/test9-v1.cc: Source code for the
	second input.
	* tests/test-diff-dwarf.cc: Run this harness on the two new inputs
	above.
	* tests/Makefile.am: Add the new inputs to the source distribution.

2014-08-18  Dodji Seketeli <dodji@redhat.com>

	Update copyright for abg-dwarf-reader.cc
	* src/abg-dwarf-reader.cc: Update copyright year.

2014-08-18  Dodji Seketeli <dodji@redhat.com>

	Make the link to the alt debug info file relative
	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
	Make this link be relative.

2014-08-15  Dodji Seketeli <dodji@redhat.com>

	White space fix
	* tests/test-lookup-syms.cc: Remove useless white space.

2014-08-15  Dodji Seketeli <dodji@redhat.com>

	Update copyright notice
	* tests/test-lookup-syms.cc: Update year in copyright notice.
	* tools/bidw.cc: Likewise.

2014-08-15  Dodji Seketeli <dodji@redhat.com>

	Support alternate debug info sections
	* include/abg-dwarf-reader.h (class read_context)
	(typedef read_context_sptr, create_read_context)
	(has_alt_debug_info): Declare these.
	(read_corpus_from_elf): Declare new overload.
	* src/abg-dwarf-reader.cc (find_alt_debug_info)
	(is_die_attribute_resolved_through_gnu_ref_alt)
	(build_primary_die_parent_relations_under)
	(build_alternate_die_parent_relations_under):
	Define new static functions.
	(read_context::{alt_dwarf_,
	alt_debug_info_path_, alternate_die_decl_map_,
	alternate_die_parent_map_}): New data members.
	(read_context::{alt_dwarf, alt_debug_info_path,
	alternate_die_decl_map, associate_die_to_decl_primary,
	associate_die_to_decl_alternate, associate_die_to_decl,
	lookup_decl_from_die_offset_primary,
	lookup_decl_from_die_offset_alternate,
	lookup_decl_from_die_offset, alternate_die_parent_map}): New
	member functions.
	(read_context::load_debug_info): Painfully Get a handle on the
	alternate debug info section too.  We shouldn't have to do all
	this work; we could use the new dwarf_getalt() function from
	libdw, but we cannot as we want to support supports that predate
	that api.  When a version of elfutils gets released with that api
	though, we should conditionally use that instead.
	(build_ir_node_from_die, get_parent_die, get_scope_for_die)
	(build_namespace_decl_and_add_to_ir)
	(build_class_type_and_add_to_ir, build_qualified_type)
	(build_pointer_type_def, build_reference_type, build_typedef_type)
	(build_var_decl, build_function_decl): Take a new parameter that
	tells if the input DIE is from alternate debug info.  Adjust their
	code accordingly.
	(die_die_attribute): Take a new output parameter that tells if the
	resolved DIE is from alternate debug info.  Also take a new
	parameter that tells if the input DIE is from alternate debug info
	sections.
	(build_die_parent_relations_under): Take the DIE -> parent map to
	act upon.  Also, add a new overload that takes a flag saying if
	the DIE is from alternate debug info or not, and act upon that.
	(build_die_parent_maps): Renamed build_die_parent_map into this
	and make it build DIE -> parent DIE relationship for the alternate
	debug info file as well.
	(find_last_import_unit_point_before_die, ): Adjust to use the
	information about if the relevant DIEs are in alternate debug info
	or not.
	(build_translation_unit_and_add_to_ir): Clear the alternate DIE ->
	decl map, that is per TU just as the primary DIE -> decl map.
	Adjust to use the information about if the relevant DIEs are in
	alternate debug info or not.
	(read_debug_info_into_corpus): Build the two DIE -> DIE parent
	maps (one for the primary debug info and one for the alternate
	debug info).
	(create_read_context, has_alt_debug_info): Define new public entry
	points.
	(read_corpus_from_elf): New entry point overload that takes a
	read_context.
	* tools/bidw.cc (options::{check_alt_debug_info_path,
	show_base_name_alt_debug_info_path}): New data members.
	(display_usage): Update for the two new options
	--check-alternate-debug-info and
	check-alternate-debug-info-base-name.
	(parse_command_line): Parse the two options above.
	(main) Handle the two new options above.
	* tests/Makefile.am: Build the new runtestaltdwarf test.  Add the
	new data/test-alt-dwarf-file/* files to the build system.
	* tests/test-alt-dwarf-file.cc: New test driver.
	* tests/data/test-alt-dwarf-file/test0-common.cc: New test input
	files.
	* tests/data/test-alt-dwarf-file/libtest0-common.so: Likewise.
	* tests/data/test-alt-dwarf-file/test0.cc: Likewise.
	* tests/data/test-alt-dwarf-file/libtest0.so: Likewise.
	* tests/data/test-alt-dwarf-file/test0.h: Likewise.
	* tests/data/test-alt-dwarf-file/test0-common-dwz.debug: Likewise.
	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
	Likewise.
	* tests/data/test-alt-dwarf-file/test0-debug-dir/test0-common-dwz.debug:
	Likewise.
	* tests/data/test-read-dwarf/test1.abi: Adjust. bidw doesn't emit
	an abstract constructor/destructor anymore. It emits just the
	functions matching the cdtor symbols found in the binary.
	* tests/data/test-read-dwarf/test2.so.abi: Likewise.

2014-07-26  Dodji Seketeli <dodji@redhat.com>

	Better handle corner cases of void* DWARF parsing
	* src/abg-dwarf-reader.cc (build_pointer_type_def):  Better
	support cases where the underlying type of the pointer is not
	know.  In that case, the pointer should not be created.

2014-07-20  Dodji Seketeli <dodji@redhat.com>

	Support finding symbols with bias wrt DWARF references
	* src/abg-dwarf-reader.cc (get_binary_load_address): New function
	definition.
	(read_context::elf_handle): Add comment.
	(read_context::{dwarf_elf_handle, dwarf_is_splitted,
	maybe_adjust_address_for_exec_or_dyn}): New method definitions.
	(maybe_adjust_fn_sym_address)
	(maybe_adjust_var_sym_address): Move these so they become members
	of read_context.  Also, For shared libraries and executable (that
	could have been e.g prelinked), consider their loading address
	when trying to find which symbol resides at a given place in
	memory.
	(read_context::{get_function_address, get_variable_address):
	Adjust.
	(build_translation_unit_and_add_to_ir): Fix comment.

2014-07-20  Dodji Seketeli <dodji@redhat.com>

	Reset the scope of void_type_decl for each new translation unit
	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
	Clear the void_type_decl on new translation units.

2014-07-18  Dodji Seketeli <dodji@redhat.com>

	Update INSTALL file
	* INSTALL: Adjust the copyright year information because autotools
	2.69 did.

2014-07-18  Dodji Seketeli <dodji@redhat.com>

	Correctly write the name of a const reference type
	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Define new
	function.
	(build_ir_node_from_die): Use the maybe_strip_qualification when
	building a qualified type.
	* src/abg-ir.cc (qualified_type_def::build_name): Fix the
	representation of the name of a reference that is const.
	* tests/data/test-read-dwarf/test1.abi: Adjust.
	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
	* tests/data/test-diff-filter/test0-report.txt: Likewise.
	* tests/data/test-diff-filter/test01-report.txt: Likewise.
	* tests/data/test-diff-filter/test2-report.txt: Likewise.
	* tests/data/test-diff-filter/test3-report.txt: Likewise.
	* tests/data/test-diff-filter/test9-report.txt: Likewise.
	* tests/data/test-diff-filter/test10-report.txt: Likewise.
	* tests/data/test-diff-filter/test13-report.txt: Likewise.
	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.

2014-07-01  Sinny Kumari <skumari@redhat.com>

	Consider symbols with STB_GNU_UNIQUE binding as public
	* src/abg-ir.cc (is_public): Change in function to consider
	symbols with STB_GNU_UNIQUE binding as public
	* tests/data/test-read-dwarf/test6.cc: Test file to generate
	STB_GNU_UNIQUE binding symbols
	* tests/data/test-read-dwarf/test6.so: Test shared library having
	STB_GNU_UNIQUE binding symbols
	* tests/data/test-read-dwarf/test6.so.abi: XML file containing
	dwarf information from test6.so
	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
	* tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
	tests/data/test-read-dwarf/test6.so and
	tests/data/test-read-dwarf/test6.so.abi to the distribution

2014-07-01  Dodji Seketeli <dodji@redhat.com>

	Add comment to test-read-write.cc
	* tests/test-read-write.cc: Update copyright notice and add a
	meaningful comment for the file.

2014-06-23  Dodji Seketeli <dodji@redhat.com>

	Support reading void* type from DWARF
	* include/abg-ir.h (type_decl::get_void_type_decl): Declare new
	static method.
	* src/abg-ir.cc (type_decl::get_void_type_decl): Define it.
	* src/abg-dwarf-reader.cc (build_ir_node_for_void_type): Define
	new static function.
	(build_pointer_type_def): Support void* type nodes here.
	* tests/data/test-read-dwarf/test5.cc: Source code for new test
	input.
	* tests/data/test-read-dwarf/test5.o: New test input.
	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
	* tests/Makefile.am: Add the above to the source distribution.

2014-06-23  Dodji Seketeli <dodji@redhat.com>

	Update a comment in abg-dwarf-reader.cc
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Update a
	comment here.

2014-06-23  Mark Wielaard <mjw@redhat.com>

	Handle C99 restrict qualifier and DWARFv3 DW_TAG_restrict_type.
	* src/abg-dwarf-reader.cc (build_qualified_type): Handle
	DW_TAG_restrict_type by adding CV_RESTRICT.
	(build_ir_node_from_die): Call build_qualified_type for
	DW_TAG_restrict_type.
	* src/abg-reader.cc (build_qualified_type_decl): Handle
	"restrict" attribute by adding CV_RESTRICT.
	* src/abg-writer.cc (write_qualified_type_def): Output
	"restrict" attribute for CV_RESTRICT.
	* tests/data/test-read-dwarf/test4.c: New test file.
	* tests/data/test-read-dwarf/test4.so: Likewise.
	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
	* tests/data/test-read-write/test24.xml: Likewise.
	* tests/test-read-dwarf.cc (in_out_specs): Add test4.
	* tests/test-read-write.cc (in_out_specs): Add test24.xml.

2014-06-23  Dodji Seketeli <dodji@seketeli.org>

	Add subdir-objects automake option where it is needed
	* src/Makefile.am: Add the subdir-object automake option here.
	Do not specify absolute paths for the input files as Automake now
	takes care of that just fine.
	* tests/Makefile.am: Likewise.
	* tools/Makefile.am: Likewise.

2014-06-23  Dodji Seketeli <dodji@seketeli.org>

	Remove autotools artifacts from the repository
	* config.guess: Remove from revision control system.
	* config.sub: Likewise.
	* depcomp: Likewise.
	* m4/libtool.m4: Likewise.
	* missing: Likewise.

2014-06-23  Dodji Seketeli <dodji@redhat.com>

	Avoid reporting diff nodes that have already been reported
	* include/abg-comp-filter.h (class harmful_filter): Update
	comment.
	(class redundant_filter): Declare new filter.
	* include/abg-comparison.h (enum
	diff_category::NOT_REDUNDANT_CATEGORY): New category.  Update the
	values of the other enumerators.
	(diff_context::{add_diff, diff_has_been_traversed}): New overloads.
	(diff_context::{categorizing_redundancy, show_redundant_changes}):
	Declare new methods.
	(diff_context::remove_from_category): Define new inline method.
	* src/abg-comparison.cc (noop_deleter::operator()): Constify the
	parameter.
	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE): New macros.
	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): Use the new
	CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE and
	UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE macros above.
	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): If the (type_decl or class)
	node hasn't been yet traversed, mark it as non-redundant.
	(diff_context::priv::categorizing_redundancy): New member.
	(diff_context::priv::priv): Initialize it.
	(diff_context::{add_diff, diff_has_been_traversed): Define new
	overloads.
	(diff_context::mark_diff_as_traversed): Intern a diff node that is
	marked as being traversed.
	(diff_context::{categorizing_redundancy, show_redundant_changes}):
	Define new methods.
	(diff::is_filtered_out): A redundant function or top-level
	variable is considered filtered-out.  Otherwise, the new
	NOT_REDUNDANT_CATEGORY doesn't play any role when comparing
	allowed categories with the set of categories a diff node belongs
	to.
	(corpus::priv::categorize_redundant_changed_sub_nodes): Define
	new member function.
	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Change
	this to first walk the changed functions and variables to apply
	filters, then categorize redundant changed functions, and then
	walk the changed functions and variables again to count
	filtered-out diff nodes.
	(filtering::redundant_filter::visit): Define new member function.
	* tools/bidiff.cc (options::show_redundant_changes): New data
	member.
	(options::options): Initialize it.
	(display_usage): Add help string for the --redundant command line
	option.
	(parse_command_line): Add support for the --redundant command line
	option.
	(set_diff_context_from_opts): Take the --redundant command line
	option in account.
	* tests/test-diff-filter.cc: Update this to add new test inputs.
	* tests/data/test-diff-filter/test14-0-report.txt: New test input.
	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
	* tests/data/test-diff-filter/test14-v0.cc: Likewise.
	* tests/data/test-diff-filter/test14-v0.o: Likewise.
	* tests/data/test-diff-filter/test14-v1.cc: Likewise.
	* tests/data/test-diff-filter/test14-v1.o: Likewise.
	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
	* tests/data/test-diff-filter/test15-v0.cc: Likewise.
	* tests/data/test-diff-filter/test15-v0.o: Likewise.
	* tests/data/test-diff-filter/test15-v1.cc: Likewise.
	* tests/data/test-diff-filter/test15-v1.o: Likewise.
	* tests/Makefile.am: Add the above to the build system.

2014-06-23  Dodji Seketeli <dodji@redhat.com>

	A name that couldn't be demangled remains the same
	* src/abg-ir.cc (demangle_cplus_mangled_name): When the demangler
	fails to demangle a name, just return the input name as-is.

2014-06-23  Dodji Seketeli <dodji@redhat.com>

	Update copyright notice for a bunch of files
	* include/abg-comp-filter.h: Update copyright notice.
	* include/abg-comparison.h: Likewise.
	* src/abg-comparison.cc: Likewise.
	* src/abg-ir.cc: Likewise.
	* tools/bidiff.cc: Likewise.
	* tests/test-diff-filter.cc: Likewise.

2014-06-19  Sinny Kumari <skumari@redhat.com>

	Keep symbol's multiple aliases within single attribute separated by comma
	* src/abg-writer.cc (write_elf_symbol_aliases): Changing function
	to keep multiple symbol aliases within one alias attribute
	* src/abg-reader.cc (build_elf_symbol_db): Changing function to read
	symbol's alias attribute and split if multiple alias exist with comma(,)
	asi a delimiter and add all aliases to main symbol
	* tests/data/test-read-dwarf/test3.c: Test file to generate multiple aliases
	* tests/data/test-read-dwarf/test3.so: Test shared library having multiple
	aliases of a symbol
	* tests/data/test-read-dwarf/test3.so.abi: XML file containing dwarf
	information from test3.so
	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
	* tests/Makefile.am: Add tests/data/test-read-dwarf/test3.c,
	tests/data/test-read-dwarf/test3.so and tests/data/test-read-dwarf/test3.so.abi
	to the distribution

2014-06-18  Mark Wielaard <mjw@redhat.com>

	DW_TAG_mutable_type doesn't exist.
	* src/abg-dwarf-reader.cc (is_type_tag): Remove DW_TAG_mutable_type.
	(build_ir_node_from_die): Likewise.

2014-06-05  Dodji Seketeli <dodji@redhat.com>

	Look at first parm type and artificial-ness to detect static-ness
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): To
	tell if a member function is static, look if the first parm is a
	pointer to the type of the enclosing class, and if it's
	artificial.  Don't bother trying to be smart by looking at the
	non-presence of DW_AT_object_pointer b/c that attribute wasn't
	emitted by GCC 4_4.

2014-06-04  Dodji Seketeli <dodji@redhat.com>

	Harden debug info path management & better error reporting
	* include/abg-dwarf-reader.h (enum status): New enum.
	(read_corpus_from_elf): Return an instance of status above, and
	return the corpus by parameter.
	* src/abg-dwarf-reader.cc (create_default_dwfl): Add a comment
	about elfutils wanting the Dwfl_Callbacks::debuginfo_path to be an
	absolute path.
	(read_corpus_from_elf): Return an instance of status above, and
	return the corpus by parameter.
	* tools/abg-tools-utils.h (make_path_absolute): Declare new function.
	* tools/abg-tools-utils.cc (make_path_absolute): New
	implementation.
	* tools/bidiff.cc (options::di_root_path[12]): Make these be
	shared pointers.
	(parse_command_line): ensure the debug info root paths are
	absolute.
	(main): Adjust.  Give meaningful errors when the debug info or
	symbol files couldn't be read.
	* tools/bidw.cc (options::di_root_path): Make this be a shared
	pointer.
	(parse_command_line): Ensure the debug info root path is absolute.
	(main): Adjust.  Give meaningful errors when the debug info or
	symbol files couldn't be read.
	* tools/bilint.cc (options::di_root_path): Make this be a shared
	pointer.
	(parse_command_line): Ensure the debug info root path is absolute.
	(main): Adjust.  Give meaningful errors when the debug info or
	symbol file couldn't be read.
	* tests/test-diff-dwarf.cc (main): Adjust.
	* tests/test-read-dwarf.cc (main): Likewise.

2014-06-02  Dodji Seketeli <dodji@redhat.com>

	Do not choke on AR archives
	* tools/abg-tools-utils.h (file_type::FILE_TYPE_AR): New enumerator.
	* tools/abg-tools-utils.cc (guess_file_type): Recognize AR archive
	files.
	* tools/bidiff.cc (main): Support AR archives.
	* tools/bidw.cc (main): Likewise.
	* tools/bilint.cc (main): Likewise.

2014-05-30  Dodji Seketeli <dodji@redhat.com>

	Honor linkage name showing when displaying added/removed member functions
	* src/abg-comparison.cc (represent): Take a diff_context.  If
	instructed to show linkage names, show the linkage name of the
	member function.
	(class_diff::report): Adjust for the new signature of represent().

2014-05-30  Dodji Seketeli <dodji@redhat.com>

	Make bidiff filter output and display symbol names by default
	* tools/bidiff.cc (options::options): Initialize
	options::show_linkage_names to true and
	options::show_harmful_changes to false.
	(parse_command_line): Change --linkage-names into
	--no-linkage-names as the linkage names are now displayed by
	default.  Change --no-harmless into --harmless as harmless changes
	are now filtered by default.
	(display_usage): Update help string for the --linkage-names ->
	--no-linkage-names and --no-harmful -> --harmful change.
	* tests/test-diff-filter.cc: Adjust.

2014-05-29  Dodji Seketeli <dodji@redhat.com>

	Ensure added/removed member functions have their symbols added/removed
	* include/abg-comparison.h (diff_context::{set_corpora,
	get_first_corpus, get_second_corpus}): Declare new member
	functions.
	* src/abg-comparison.cc (diff_context::{set_corpora,
	get_first_corpus, get_second_corpus}): Define them.
	(compute_diff): In the overload for corpus_sptr stick the corpora
	being compared, into the diff context.
	(class_diff::ensure_lookup_tables_populated): If a member function
	is allegedly removed, check that its underlying symbol is removed
	from the corpus as well.  Otherwise, consider that the member
	function hasn't been removed.  Likewise, if a member function is
	allegedly added, check that its underlying symbol has been added
	to the corpus as well.  Otherwise, consider that the member
	function hasn't been added.  The symbols can now be accessed
	through the two corpora that are now present in the diff context.

2014-05-29  Dodji Seketeli <dodji@redhat.com>

	Fix scope for DIEs with specification or abstract_origin attributes
	* src/abg-dwarf-reader.cc (get_scope_for_die): If the DIE has a
	DW_AT_specification or DW_AT_abstract_origin attribute, get the
	scope of the referred-to DIE.
	(build_ir_node_from_die): For a variable DIE that has a
	DW_AT_{specification,abstract_origin} attribute, do not add the
	built variable IR node to its scope because it is already in a
	scope.  It's in a scope because that built variable is for the DIE
	that is referred-to by the DW_AT_{specification,abstract_origin}
	attribute.  Likewise for member functions.  Also, now,
	get_scope_for_die can return a class for a function DIE because
	get_scope_for_die now returns the *logical* scope of the DIE; that
	is, it follows DW_AT_{specification,abstract_origin} attributes.
	* tests/data/test-read-dwarf/test1.abi: Adjust.

2014-05-28  Dodji Seketeli <dodji@redhat.com>

	Add a symbol database to the ABI Corpus & support symbol aliases
	* include/abg-corpus.h (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
	Declare new accessors.
	(corpus::lookup_{variable,function}_symbol): Declare new member
	functions.
	* src/abg-corpus.cc (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
	Define new accessors.
	(corpus::lookup_{variable,function}_symbol): Define new member
	functions.
	* include/abg-ir.h (string_elf_symbol_sptr_map_type)
	(string_elf_symbol_sptr_map_sptr, elf_symbols)
	(string_elf_symbols_map_type, string_elf_symbols_map_sptr): New
	convenience typedefs.
	(elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
	has_aliases, add_alias, get_id_string,
	get_name_and_version_from_id, operator=}): Declare new member
	functions.
	* src/abg-ir.cc (elf_symbol::{get_main_symbol, is_main_symbol,
	get_next_alias, has_aliases, add_alias, get_id_string,
	get_name_and_version_from_id, operator=}): Define new member
	functions.
	* include/abg-reader.h (read_corpus_from_file): Take a shared
	pointer to corpus.
	* src/abg-reader.cc (read_context::{g,s}et_corpus): Define these.
	(build_elf_symbol_db, build_elf_symbol_from_reference)
	(read_symbol_db_from_input): Define new functions.
	(read_corpus_from_input): Adjust.  Make it read symbol databases.
	(build_elf_symbol): Harden this.
	(build_{var,function}_decl): Read the symbol reference.  Do not
	read the local symbol serialization anymore.
	(read_corpus_from_archive): Adjust.
	(read_corpus_from_file): Take a reference to a shared pointer to
	corpus, rather than a reference to the corpus.
	(read_corpus_from_native_xml): Only keep the overload that returns
	a corpus.  Set the current context with the corpus.
	* src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_type)
	(addr_elf_symbol_sptr_map_sptr): New convenience typedefs.
	(read_context::{fun_sym_addr_sym_index_map_,
	var_sym_addr_sym_index_map_): Remove.
	(read_context::{fun,var}_addr_sym_map_): New.  Replace the above
	that got removed.
	(read_context::{var,fun}_syms_): New.
	(read_context::lookup_elf_{fn,var}_symbol_from_address): Adjust.
	(read_context::{fun,var}_addr_sym_map{_sptr}): New.
	(read_context::{fun,var}_syms{_sptr}): New.
	(read_context::load_symbol_maps): Replace
	read_context::load_symbol_addr_to_index_maps.  Adjust to load all
	the new maps.
	(read_context::maybe_load_symbol_maps): New.
	(read_debug_info_into_corpus): Renamed build_corpus into this.
	Update to load symbol maps and set it to the corpus.
	* src/abg-writer.cc (write_context::get_fun_symbol_map): New
	accessor.
	(write_elf_symbol_aliases, write_elf_symbol_reference)
	(write_elf_symbols_table): Define new static functions.
	(write_var_decl): Write the reference to the underlying symbol of
	the variable.  Do not write the full symbol here anymore.
	(write_function_decl):  Likewise, write the reference to the
	underlying symbol of the function.  Do not write the full symbol
	here anymore.
	(write_corpus_to_native_xml): Write the symbol databases at the
	beginning of the corpus document.
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): Now that the
	corpus has symbols, check if a the symbol of an allegedly deleted
	function (resp. variable) is deleted; if not, then do not report
	the function (resp. variable) as deleted.  Similarly, check if the
	symbol of an allegedly added function (resp. variable) is added.
	if not, the do not report the function (resp. variable) as added.
	* tests/test-write-read-archive.cc (main): Adjust.
	* tools/biar.cc (extract_tus_from_archive): Likewise.
	* tests/data/test-diff-filter/test9-report.txt: Adjust.
	* tests/data/test-read-dwarf/test0.abi: Likewise.
	* tests/data/test-read-dwarf/test1.abi: Likewise.
	* tests/data/test-read-dwarf/test2.so.abi: Likewise.

2014-05-21  Dodji Seketeli <dodji@redhat.com>

	Rename 'symbol' in fn names to 'public decl' in abg-corpus.{cc,h}
	* src/abg-corpus.cc (lots of places): Rename references to
	'symbol' in function & variable names to 'public_decl'.

2014-05-22  Dodji Seketeli <dodji@redhat.com>

	Support debug info files being outside the expected system directories
	* include/abg-dwarf-reader.h (read_corpus_from_elf): Take a
	debug_info_root_path parameter.
	src/abg-dwarf-reader.cc (create_default_dwfl): Take a
	debug_info_root_path.  Use that to initialize the Dwfl_Callbacks
	structure used by dwfl_begin.
	(create_default_dwfl_sptr, read_corpus_from_elf): Likewise, Take a
	debug_info_root_path parameter.
	* tests/test-diff-dwarf.cc (main): Adjust.
	* tests/test-read-dwarf.cc (main): Likewise.
	* tools/bidiff.cc (options::dir_root_path[12]): New member.
	(options::options): Initialize it.
	(display_usage): Add help string for the --debug-info-dir[12]
	options.
	(parse_command_line): Handle the new --debug-info-dir[12] options.
	(main): Pass the debug info directories to read_corpus_from_elf.
	* bidw.cc (options::::di_root_path): New member.
	(options::options): Initialize it.
	(display_usage): Add help string for the new --debug-info-dir
	option.
	(parse_command_line): Handle the new --debug-info-dir.
	(main): Pass the debug info root path to read_corpus_from_elf.
	* tools/bilint.cc (options::di_root_path): New member.
	(options::options): Initialize it.
	(display_usage): Add help string for the new --debug-info-dir.
	(parse_command_line): Handle --debug-info-dir command line option.
	(main): Pass the debug info root path to read_corpus_from_elf.

2014-05-21  Dodji Seketeli <dodji@redhat.com>

	Fix detection of destructors
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Simply
	detect that the destructor starts with a '~'.

2014-05-21  Dodji Seketeli <dodji@redhat.com>

	Add clone in the scope of the cloned decl they logically belong to
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Do not try to
	add the cloned function/variable to the current scope because
	cloning should have added the decl into the scope of the cloned
	target.
	* src/abg-ir.cc ({var,function}_decl::clone): Insert the clone
	decl into the scope of the cloned decl.  My understanding is that
	it's where they belong.
	* tests/data/test-read-dwarf/test1.abi: Update this to incorporate
	all the abstract constructors/destructors *and* their clones into
	the classes where they belong.
	* tests/data/test-read-dwarf/test1.abi: Adjust for the abstract
	cdtor being added to the class, as well as their cloned concrete
	instances.
	* tests/data/test-read-dwarf/test2.so.abi: Likewise.

2014-05-20  Dodji Seketeli <dodji@redhat.com>

	Support decl cloning when seeing DW_AT_abstract_origin
	* include/abg-ir.h ({var,function}_decl::clone): New method.
	* src/abg-dwarf-reader.cc (die_die_attribute): Add a flag to avoid
	looking through DW_AT_abstract_origin attribute here.
	(build_function_decl): Set the linkage name from
	DW_AT_linkage_name if it's not set yet.
	(build_ir_node_from_die): For DW_TAG_{variable,subprogram}, when
	we see DW_AT_abstract_origin, clone the decl they refer to.
	Also, avoid dropping the DIE on the floor just because it doesn't
	have die_is_artificial here.
	* src/abg-ir.cc ({var,function}_decl::clone): Implement this.

2014-05-19  Dodji Seketeli <dodji@redhat.com>

	Don't share types across TUs when DW_TAG_partial_unit are involved
	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
	Clear the part of the context that needs to be per TU.
	(build_ir_node_from_die): Assert that this should not be called
	for partial and imported unit because for now our practical
	assumption is that DIEs under partial unit are lazily read only
	when referenced by DIEs that are under DW_TAG_compile_unit.
	* tests/Makefile.am: Add the new test files to the build system.
	* tests/data/test-read-dwarf/test2.so.abi: Fix the reference
	output here to avoid sharing types across TUs, making the output
	valid for bilint.

2014-05-19  Dodji Seketeli <dodji@redhat.com>

	Initial support for DW_TAG_partial_unit
	* src/abg-dwarf-reader.cc (read_context::cur_tu_die_): New member.
	(read_context::read_context): Initialize the new member.
	(read_context::cur_tu_die): New accessors.
	(find_last_import_unit_point_before_die): New static function.
	(get_parent_die): Take a logical current die offset parameter.  If
	the die we want the parent for is a partial unit, then find the
	last DW_TAG_imported_unit that imports that partial unit before
	the logical current die and return the parent of that
	DW_TAG_imported_unit die.
	(get_scope_for_die): Take a logical current die offset parameter.
	Adjust.
	(build_translation_unit_and_add_to_ir): Set/unset the current
	translation unit DIE in the context.  Adjust.
	(build_namespace_decl_and_add_to_ir)
	(build_class_type_and_add_to_ir, build_qualified_type)
	(build_pointer_type_def, build_reference_type, build_typedef_type)
	(build_var_decl, build_function_decl, build_ir_node_from_die):
	Take a logical current die offset parameter.  Adjust.
	(build_corpus): Accept that we can have DIE that are not
	DW_TAG_compile_unit at the top level, because, well, we can now
	have DW_TAG_partial_unit too.
	* tests/data/test-read-dwarf/test2-{0,1}.cc: New test source
	files.
	* tests/data/test-read-dwarf/test2.h: Likewise.
	* tests/data/test-read-dwarf/test2.so: New input binary to read.
	* tests/data/test-read-dwarf/test2.so.abi: New reference test to
	compare against.
	* tests/test-read-dwarf.cc: Adjust to launch the new test.

2014-05-14  Dodji Seketeli <dodji@redhat.com>

	Re-build a test input file with debug info
	* tests/data/test-lookup-syms/test1.so: Rebuild this with debug
	info.

2014-05-14  Dodji Seketeli <dodji@redhat.com>

	Serialize and de-serialize elf symbols for var & function decls
	* abg-ir.h (string_to_elf_symbol_type, string_to_elf_symbol_binding):
	Declare new entry points.
	* src/abg-ir.cc (string_to_elf_symbol_type)
	(string_to_elf_symbol_binding): Define new entry points.
	* include/abg-libxml-utils.h (xml_char_sptr_to_string): Declare
	new entry points.
	* src/abg-libxml-utils.cc (xml_char_sptr_to_string): Define new
	entry points.
	* src/abg-reader.cc (read_elf_symbol_type)
	(read_elf_symbol_binding, build_elf_symbol): Define new static
	functions.
	(build_function_decl, build_var_decl): Use the new
	build_elf_symbol and set the symbol to the function.  Flag the
	function as having a public symbol in the symbol table if the
	symbol is public.
	* src/abg-writer.cc (write_elf_symbol_type)
	(write_elf_symbol_binding, write_elf_symbol): Define new static
	functions.
	(write_var_decl, write_function_decl): Use the new
	write_elf_symbol to serialize the symbol for the decl.
	* tests/data/test-read-dwarf/test[01].abi: Adjust.

2014-05-14  Dodji Seketeli <dodji@redhat.com>

	Don't crash when de-serializing an empty function parm xml node
	* src/abg-reader.cc (build_function_parameter): Do not crash if
	the xml node is NULL.

2014-05-14  Dodji Seketeli <dodji@redhat.com>

	Fix a typo in serializing a decl_base::binding
	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
	Fix a typo here.

2014-05-14  Dodji Seketeli <dodji@redhat.com>

	Add a help string for the --no-absolute-path option of bisym
	* tools/bisym.cc (show_help): Add a missing help string.

2014-05-13  Dodji Seketeli <dodji@redhat.com>

	Do not try to use ELF hash tables in demangling lookup mode
	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf): If in
	demangling mode, do not use ELF hash tables.

2014-05-13  Dodji Seketeli <dodji@redhat.com>

	Use the proper symbol table for  and set linkage_name to symbol name
	* src/abg-dwarf-reader.cc (find_symbol_table_section): Return the
	.symtab if we are looking at an executable or relocatable file and
	.dynsym if we are looking at a DSO.
	(find_symbol_table_section_index): Likewise.  Implement this in
	terms of find_symbol_table_section.
	(build_{function,var}_decl): Set the linkage_name to the symbol
	name, if the symbol name is not empty.
	* tests/data/test-diff-filter/test9-report.txt: Adjust.

2014-05-13  Dodji Seketeli <dodji@redhat.com>

	Remove redundant "'" around linkage names in diff reports
	* src/abg-comparison.cc (corpus_diff::report): Remove the
	redundant "'" from the linkage names in the diff.

2014-05-08  Dodji Seketeli <dodji@redhat.com>

	Initial support for elf symbol (versionning) during decl comparison
	* include/abg-fwd.h (get_linkage_name): Remove.
	* include/abg-dwarf-reader.h (enum symbol_type)
	(enum symbol_binding): Move these into abg-ir.h.
	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
	Adjust.
	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
	Declare this before using it.
	(die_address_attribute, die_location_address)
	(stt_to_elf_symbol_type, stb_to_elf_symbol_binding)
	(find_hash_table_section_index, find_symbol_table_section)
	(find_symbol_table_section_index, find_text_section)
	(find_bss_section, compare_symbol_name)
	(get_symbol_versionning_sections get_version_for_symbol)
	(lookup_symbol_from_sysv_hash_tab)
	(lookup_symbol_from_gnu_hash_tab, get_elf_class_size_in_bytes)
	(bloom_word_at, setup_gnu_ht, lookup_symbol_from_elf_hash_tab)
	(lookup_symbol_from_symtab, maybe_adjust_fn_sym_address)
	(maybe_adjust_var_sym_address): New static functions.
	(enum hash_table_kind): New enum.
	(struct gnu_ht): New struct.
	(read_context::var_decls_to_add_): Renamed var_decls_to_add into
	this.
	(read_context::{fun, var}_sym_addr_sym_index_map_): New member.
	(read_context::{lookup_symbol_from_elf,
	lookup_elf_symbol_from_index, lookup_elf_fn_symbol_from_address,
	lookup_elf_var_symbol_from_address, fun_sym_addr_sym_index_map,
	var_sym_addr_sym_index_map, load_symbol_addr_to_index_maps,
	get_function_address, get_variable_address}): New member
	functions.
	(read_context::lookup_public_{variable,
	function}_symbol_from_elf): Adjust.
	(op_pushes_constant_value): Fix a bug here.
	(lookup_symbol_from_elf): Adjust.  Support cases where there is no
	elf hash table, e.g, for relocatable files.
	(lookup_public_function_symbol_from_elf)
	(lookup_public_variable_symbol_from_elf): Adjust.
	(build_var_decl): Allow updating the var_decl to associate it with
	its underlying symbol.  In that case, if the linkage name is not
	set, set it to the symbol name.
	(build_function_decl): Likewise for function_decl.
	(operator<<(std::ostream&, symbol_type)):
	(operator<<(std::ostream&, symbol_binding)): Move these do
	abg-ir.cc.
	* include/abg-ir.h (class elf_symbol): Declare new class.  Move
	enum symbol_binding and enum symbol_type (from abg-dwarf-reader.h) to
	elf_symbol::binding and elf_symbol::type here.
	(operator<<(std::ostream&, elf_symbol::type))
	(operator<<(std::ostream&, elf_symbol::binding))
	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New
	operators.
	(class elf_symbol::version): Declare new class.
	(class var_decl): Make this pimpl, and add ...
	(var_decl::{g,s}et_symbol): ... new member functions.
	(class function_decl): Likewise, make this pimpl and add ...
	(function_decl::{g,s}et_symbol): ... new member functions.
	* src/abg-ir.cc (struct elf_symbol, elf_symbol::priv): New
	types.
	(elf_symbol::*): Lots of new members and member functions.
	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New.
	(operator<<(std::ostream&, elf_symbol::type)): New.
	(operator<<(std::ostream&, elf_symbol::binding)): New.
	(elf_symbol::version::priv): New type.
	(elf_symbol::version::*): Lots of member functions.
	(get_linkage_name): Removed.
	(var_decl::priv): New type.  Pimplify the thing.
	(var_decl::{s,g}et_symbol): New.
	(var_decl::operator==): Take symbols in account in the comparison.
	(function_decl::priv): New type.
	(function_decl::*): Pimplify.
	(function_decl::{s,g}et_symbol): New.
	(function_decl::operator==): Take symbols in account in the
	comparison.
	* include/abg-comparison.h (diff_context::show_linkage_name): New
	member function.
	* src/abg-comparison.cc (diff_context::priv::show_linkage_name_):
	New member.
	(diff_context::priv::priv): Initialize it.
	(diff_context::show_linkage_names): New member function.
	(corpus_diff::report): If the user used --show-linkage-names,
	display the linkage name after the name of the functions.  Add
	missing "'" in the some spots.
	* tools/bidiff.cc (options.show_linkage_names): New member.
	(display_usage, parse_command_line): Support --linkage-names.
	* tools/bisym.cc (show_help): Add '\n' at the end of help string
	for --demangle.  Add --no-absolute-path option.
	(parse_command_line): Support --no-absolute-path.
	(main): Adjust for symbol (versionning) support.  Consider that
	the program successfully completed even when the symbol wasn't
	found.  Support --no-absolute-path.
	* tests/data/test-lookup-syms/test0-report.txt: New.
	* tests/data/test-lookup-syms/test01-report.txt: New.
	* tests/data/test-lookup-syms/test02-report.txt: New.
	* tests/data/test-read-dwarf/test0.abi: Adjust.
	* tests/data/test-read-dwarf/test1.abi: Adjust.
	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
	* tests/data/test-diff-filter/test10-report.txt: Adjust.
	* tests/data/test-diff-filter/test12-report.txt: Adjust.
	* tests/data/test-lookup-syms/test1-[123]-report.txt: New.
	* tests/data/test-lookup-syms/test1.c: New.
	* tests/data/test-lookup-syms/test1.version-script: New.
	* tests/test-lookup-syms.cc: Adjust for new tests.
	* test/Makefile.am: Adjust makefile.

2014-05-07  Dodji Seketeli <dodji@redhat.com>

	Rename decl_base::get_mangled_name into decl_base::get_linkage_name
	* include/abg-ir.h (decl_base::get_linkage_name): Renamed
	decl_base::get_mangled_name into this.
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated)
	(function_decl_diff::report, type_decl_diff::report)
	(corpus_diff::priv::ensure_lookup_tables_populated)
	(corpus_diff::report, compute_diff): Adjust.
	* src/abg-corpus.cc ({var_comp, func_comp}::operator()): Likewise.
	(corpus::priv::build_symbol_table): Likewise.
	* src/abg-dwarf-reader.cc (die_linkage_name): Renamed
	die_mangled_name into this.
	(die_loc_and_name, build_translation_unit_and_add_to_ir)
	(build_namespace_decl_and_add_to_ir, build_type_decl)
	(build_enum_type, build_class_type_and_add_to_ir)
	(build_typedef_type, build_var_decl, build_function_decl, ): Adjust.
	* src/abg-hash.cc (decl_base::hash::operator()): Likewise.
	* src/abg-ir.cc (decl_base::priv::linkage_name_): Renamed
	decl_base::priv::mangled_name_ into this.
	(decl_base::priv::priv, decl_base::{decl_base, operator==})
	(get_linkage_name, typedef_decl::typedef_decl, var_decl::var_decl)
	(function_decl::function_decl, class_decl::base_spec::base_spec)
	(class_decl::method_decl::method_decl): Adjust.
	(decl_base::{g,s}et_linkage_name): Renamed
	decl_base::{g,s}et_mangled_name into this.
	* src/abg-writer.cc (write_decl, write_typedef_decl)
	(write_var_decl, write_function_decl, dump): Adjust.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Drop symbols not global in a symtab from corpus symtab
	* src/abg-corpus.cc (corpus_priv::build_symbol_table): If a
	function or variable symbol is not public (global or weak) and
	present in an elf symbol table, drop it from the corpus symbol
	table.  As a result functions are variables (not present in the
	elf symbol tables) that we were previously taking in account are
	not dropped on the floor, leading to much less noise.
	* tests/data/test-diff-dwarf/test0-v0.cc: Update to avoid
	generating inline functions.
	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
	* tests/data/test-diff-filter/test0-v0.o: Likewise.
	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
	* tests/data/test-diff-filter/test0-v1.o: Likewise.
	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
	* tests/data/test-diff-filter/test10-v0.o: Likewise.
	* tests/data/test-diff-filter/test10-report.txt: Likewise.
	* tests/data/test-diff-filter/test10-v1.o: Likewise.
	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
	* tests/data/test-diff-filter/test13-v0.o: Likewise.
	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
	* tests/data/test-diff-filter/test13-v1.o: Likewise.
	* tests/data/test-diff-filter/test2-v0.cc: Likewise.
	* tests/data/test-diff-filter/test2-v0.o: Likewise.
	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
	* tests/data/test-diff-filter/test2-v1.o: Likewise.
	* tests/data/test-diff-filter/test4-v0.cc: Likewise.
	* tests/data/test-diff-filter/test4-v0.o: Likewise.
	* tests/data/test-diff-filter/test4-v1.cc: Likewise.
	* tests/data/test-diff-filter/test4-v1.o: Likewise.
	* tests/data/test-diff-filter/test9-v0.o: Likewise.
	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
	* tests/data/test-diff-filter/test9-v1.o: Likewise.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Fix mangled name setting for static data members from DWARF
	* src/abg-dwarf-reader.cc (build_var_decl): Support adding
	properties to an existing var_decl.  For now just add mangled
	name.
	(build_ir_node_from_die): Accept DW_TAG_member too.  This helps
	for when this function is used to add additional properties to an
	existing DW_TAG_member representing a static data member.  Then,
	use build_var_decl to really add the value of the additional
	mangled name property.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Always show pretty representation of variables in report
	* src/abg-comparison.cc (corpus_diff::report): Display the pretty
	representation of the variable, no matter what.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Set "is_in_public_symbol_table" property for vars & fns
	* src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
	Set the "is_in_public_symbol_table" property for the variable or
	function decl.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Support symbol lookups from ELF
	* include/abg-dwarf-reader.h (symbol_type, symbol_binding): New
	enums.
	(operator<<): Declare new overloads for the new enums above.
	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
	Declare new entry points.
	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf)
	(lookup_public_function_symbol_from_elf)
	(lookup_public_variable_symbol_from_elf): Define new static
	functions.
	(read_context::elf_{module_, handle}_): New data members.
	(read_context::{elf_module, elf_handle}): New accessors.
	(read_context::load_debug_info): Store the elf module into
	read_context::_elf_module_.  Adjust.
	(read_context::{lookup_symbol_from_elf,
	lookup_public_function_symbol_from_elf,
	lookup_public_variable_symbol_from_elf}): New member functions.
	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
	(operator<<): Define public entry points.
	* tools/bisym.cc: New tool to lookup a symbol in an elf file.
	* tools/Makefile.am: Add the bisym.cc source file to the
	distribution and arrange to compile it into a 'bisym' executable.
	* tests/test-lookup-syms.cc: New test harness.
	* tests/data/test-lookup-syms/test0-report.txt: New test input
	for the harness above.
	* tests/data/test-lookup-syms/test0.cc: Likewise.
	* tests/data/test-lookup-syms/test0.o: Likewise
	* tests/data/test-lookup-syms/test01-report.txt: Likewise.
	* tests/data/test-lookup-syms/test02-report.txt: Likewise.
	* tests/Makefile.am: Build the new runtestlookupsyms test and add
	the new files to the distribution.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Add corpus::{s,g}et_origin accessors
	* include/abg-corpus.h (enum corpus::origin): New enum.
	(corpus::{g,s}et_origin): New accessors.
	* src/abg-corpus.cc (corpus::priv::origin): New data member.
	(corpus::priv::is_symbol_table_built): Move this up.
	(corpus::priv::priv): Adjust.
	(corpus::{g,s}et_origin): Define accessors.
	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Set the corpus
	origin.  Also set the path.  Oops.
	* src/abg-reader.cc (read_corpus_from_input)
	(read_corpus_from_archive): Set the corpus origin.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Add a get_linkage_name function.
	* include/abg-fwd.h (is_at_global_scope): Declare a new overload.
	(get_linkage_name): Declare ...
	* src/abg-ir.cc (get_linkage_name): ... these new entry points.
	(is_at_global_scope): Define these new overloads useful for the
	new get_linkage_name.

2014-04-21  Dodji Seketeli <dodji@redhat.com>

	Pimplify decl_base and add decl_base::{s,g}et_is_in_public_symbol_table
	* include/abg-ir.h (struct decl_base::priv): New pimpl type.
	(decl_base::priv_): New pimpl.
	(decl_base::{hashing_started, peek_hash_value,
	peek_qualified_name, set_qualified_name}): Declare new protected
	methods.
	(decl_base::{get_context_rel, set_qualified_name, get_location,
	set_location, set_name, set_mangled_name, get_visibility,
	set_visibility}): Move these out-of-line.
	(decl_base::{g,s}et_is_public_symbol_table):
	(class_decl::hashing_started): Remove this as we now have
	decl_base::hashing_started.
	(decl_base::{hash_, hashing_started, location_, context_, name_,
	qualified_parent_name_, qualified_name_, mangled_name_,
	visibility_}): Move all these members into the new ...
	* src/abg-ir.cc (struct decl_base::priv): ... pimpl type.
	(decl_base::decl_base): Move these out-of-line here.  Adjust the
	other overloads.
	(decl_base::{hashing_started, peek_hash_value,
	peek_qualified_name, set_qualified_name}): Define these new
	protected methods.
	(decl_base::{get_context_rel, set_context_rel, get_location,
	set_location, set_name, get_mangled_name, set_mangled_name,
	get_visibility, set_visibility}): Define these out-of-line here.
	(decl_base::{get_hash, set_hash, get_scope,
	get_qualified_parent_name, get_qualified_name, operator==,
	set_scope}): Adjust.
	(qualified_type_def::get_qualified_name): Likewise.
	(pointer_type_def::get_qualified_name): Likewise.
	(reference_type_def::get_qualified_name): Likewise.
	(var_decl::set_scope): Likewise.
	(class_decl::base_spec): Likewise.
	(class_decl::method_decl::set_scope): Likewise.
	(decl_base::{g,s}et_is_in_public_symbol_table): Define new accessors.
	* src/abg-hash.cc ({decl_base, type_decl, scope_decl,
	scope_type_decl, qualified_type_def, pointer_type_def,
	reference_type_def, enum_type_decl, typedef_decl, var_decl,
	class_decl}::hash::operator): Adjust.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Categorize base class changes as SIZE_OR_OFFSET_CHANGE_CATEGORY
	* include/abg-comparison.h (class_diff::{deleted, inserted,
	changed}_bases): Declare new member functions ...
	* src/abg-comparison.cc ((class_diff::{deleted, inserted,
	changed}_bases)): ... and define them.
	* src/abg-comp-filter.cc (base_classes_added_or_removed): Define
	new static functions.
	(harmless_filter): Categorize base classes added or removed.
	* tests/data/test-diff-dwarf/test8-report.txt: New test input.
	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
	* tests/data/test-diff-filter/test13-report.txt: New test input.
	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
	* tests/data/test-diff-filter/test13-v0.o: Likewise.
	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
	* tests/data/test-diff-filter/test13-v1.o: Likewise.
	* tests/Makefile.am: Add the new files above to the source distribution.
	* tests/test-diff-dwarf.cc: Use the new relevant input above to
	run more tests.
	* tests/test-diff-filter.cc: Likewise.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Fix class diff reporting issues for base classes
	* src/abg-comparison.cc (class_diff::report): For base classes,
	report their pretty representation.  Do not try to report a the
	diff of a changed base class that got filtered out.  Avoid
	emitting too many vertical white spaces.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Simplify SIZE_OR_OFFSET_CHANGE_CATEGORY categorizing
	* src/abg-comp-filter.cc (harmful_filter::visit): Now that
	type_size_changed is correctly geared to not be fulled by
	decl-only classes, there is no need for its caller to handle that
	case.  And data_member_offset_changed ain't affected by decl-only
	classes anyway.  So the code is now much simpler.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Fix API doc for static_data_member_type_size_changed
	* src/abg-comp-filter.cc (static_data_member_type_size_changed):
	Fix API doc comment.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Don't blindly drop DIEs defined in the scope of a function
	* src/abg-dwarf-reader.cc (get_scope_for_die): Do not drop a DIE
	on the floor just because it is in the scope of a function.  We
	were dropping a function parameter because its type is a typedef
	defined right before the parameter, in the scope of the function.
	Urgh.  So with this change, that function parameter is not dropped
	anymore.  I have seen that happening in a DWARF generated by GCC
	4.7.1 on libstdc++.so.  Hard to come up with a regression test
	case for this one.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Useless code killing
	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
	const decls_type)): Kill dead code.  Note that there is a proper
	equality operator for decl_base_sptr already.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	File static data member changes in STATIC_DATA_MEMBER_CHANGE_CATEGORY
	* include/abg-comparison.h
	(diff_category::STATIC_DATA_MEMBER_CHANGE_CATEGORY): New category.
	(diff_category::EVERYTHING_CATEGORY): Update
	* src/abg-comp-filter.cc (static_data_member_type_size_changed)
	(static_data_member_added_or_removed): Define new static
	functions.
	(harmless_filter::visit): Categorize changes to static data
	members as STATIC_DATA_MEMBER_CHANGE_CATEGORY.
	* tools/bidiff.cc (set_diff_context_from_opts):
	STATIC_DATA_MEMBER_CHANGE_CATEGORY is falls into the harmless
	group.
	* tests/data/test-diff-filter/test12-report.txt: New test input.
	* tests/data/test-diff-filter/test12-v0.cc: Likewise.
	* tests/data/test-diff-filter/test12-v0.o: Likewise.
	* tests/data/test-diff-filter/test12-v1.cc: Likewise.
	* tests/data/test-diff-filter/test12-v1.o: Likewise.
	* tools/bidiff.cc: Run this test with the additional input data
	above.
	* tests/Makefile.am: Adjust.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Fix typo in comments
	* include/abg-comparison.h
	(diff_category::NON_VIRT_MEM_FUN_CHANGE_CATEGORY): Fix typo in
	comments.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Only non-static data member changes are SIZE_OR_OFFSET_CHANGE_CATEGORY
	* src/abg-comp-filter.cc
	(non_static_data_member_type_size_changed): Renamed
	data_member_offset_changed into this.  Make sure the test detects
	changes on *non-static* data members only.
	(non_static_data_member_added_or_removed): Likewise for
	data_member_offset_changed that got renamed into this.
	(harmful_filter::visit): Adjust.

2014-04-17  Dodji Seketeli <dodji@redhat.com>

	Fix comments in categorization code
	* src/abg-comp-filter.cc (data_member_added_or_removed): Fix
	comments.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Really detect static-ness of data members.  Oops.
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Let's
	consider that a data member being not laid out (i.e, not having a
	data_member_location) is is a static data member.  Otherwise, we
	were not detecting static data members at all.  Well we were only
	inferring their presence from seeing the static variable
	definition later on.  That means we were missing most of the
	static variables.  Woops.
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): Now that we
	are really seeing static data members, let's be prepare to the
	fact that we can the same static data member being declared
	several times in a corpus.
	* tests/data/test-diff-dwarf/test7-report.txt: New test input file.
	* tests/data/test-diff-dwarf/test7-v0.cc: Likewise.
	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
	* tests/test-diff-dwarf.cc: Update this to consume the new test
	input files.
	* tests/Makefile.am: Update this to add the missing test files to
	the source distribution.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Add dumping routines for declaration location
	* include/abg-fwd.h (get_global_scope()): New overload for const
	decl_base&.  Move the other overloads up in the file.
	(get_translation_unit): Add an overload for decl_base&.  Constify
	the others.
	(dump_decl_location): Declare new functions.
	* src/abg-ir.cc (get_global_scope): Define the overload for const
	decl_base&.  Write the other overloads in terms of this one.
	(get_translation_unit): Likewise, define the overload for const
	decl_base&.  Write the other overloads in terms of this one.
	(dump_decl_location): Define these new overloads.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Fix dumping function to make them use generic ostream
	* src/abg-writer.cc (dump(const decl_base_sptr, std::ostream&)):
	Do not dump the content to cerr here.  Rather dump to the output
	stream given in parameter.  Oops.
	(dump(const translation_unit&, std::ostream&)): Likewise.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-ir.cc (get_translation_unit): Remove useless vertical
	white space.
	(is_global_scope): Add missing API doc.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	A virt mem fn deleted and added to the same offset is not harmful
	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): A virtual
	member that gets deleted and added back again to the same vtable
	offset is not considered as being a virtual member function change
	suitable for VIRTUAL_MEMBER_CHANGE_CATEGORY.  Likewise for a
	function sub-type change not involving a change in the vtable
	offset.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Do not categorize size/offset changes when a decl-only class is involved
	* src/abg-comp-filter.cc (there_is_a_decl_only_class)
	(diff_involves_decl_only_class): New static functions.
	(type_size_changed, data_member_added_or_removed)
	(has_virtual_mem_fn_change, has_non_virtual_mem_fn_change): Bail
	out if one of the types involved is a decl-only class.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Work around "mangled name vanishing from one version of mem fn decl" bug
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): If the first version
	of the member function decl doesn't have a mangled name while the
	second has it, try the lookups using the pretty representation of
	the function.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Do not try to represent the offset for a static data member
	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
	ostream&)): If the data member is static, do not try to represent
	its offset.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	A static data member shouldn't be checked for having been laid out
	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
	ostream&)): If the data member is static do not check for it
	having been laid out.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Prefix pretty representation of static data members with 'static'
	* src/abg-ir.cc (var_decl::get_pretty_representation): Prefix
	pretty representation of static data members with 'static'.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Provide a robust way of getting the size of a qualified type
	* include/abg-ir.h (qualified_type_def::get_size_in_bits): Declare
	new member function ...
	* src/abg-ir.cc (qualified_type_def::get_size_in_bits): ... and
	define it.  Keep in mind that some times the size of the
	underlying type can change between the moment the qualified type
	is created and the end of its life time.  That is because a
	subsequent DIE (from DWARF) can alter the size of the underlying
	type.  This overload allows the user to always query the size of
	the underlying type and keep the size of the qualified type in
	sync with it.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Add an assert to the pointer diff reporting code
	* src/abg-comparison.cc (pointer_diff::report): If the pointer
	diff node is deemed to be reported then the underlying diff node
	should be reported as well.

2014-04-16  Dodji Seketeli <dodji@redhat.com>

	Little style adjustment in diff node categorization code
	* src/abg-comp-filter.cc (harmful_filter::visit): Factorize the
	categorization into SIZE_OR_OFFSET_CHANGE_CATEGORY for data member
	adding or removal and for data member type size change.

2014-04-15  Dodji Seketeli <dodji@redhat.com>

	If a diff node is in NO_CHANGE_CATEGORY do not report it anymore
	* src/abg-comparison.cc (diff::is_filtered_out): Now that we seem
	to be flagging every changes to a class into a category, we do not
	need to dive into reporting a diff not that is categorized as
	NO_CHANGE_CATEGORY anymore.  So let's have the implementation that
	one would expect for this function.

2014-04-15  Dodji Seketeli <dodji@redhat.com>

	Categorize changes to virt mem fncts as VIRTUAL_MEMBER_CHANGE_CATEGORY
	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): New static
	function.
	(harmful_filter): Categorize changes to virtual member functions
	into VIRTUAL_MEMBER_CHANGE_CATEGORY.
	* src/abg-comparison.cc
	(class_diff::priv::count_filtered_changed_dm): Move this up, right
	after class_diff::priv::count_filtered_subtype_changed_dm.
	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED): New macro.
	(class_diff::priv::count_filtered_{changed, inserted,
	deleted}_mem_fns): Modify these to properly take member function
	virtual-ness in account.

2014-04-15  Dodji Seketeli <dodji@redhat.com>

	Do not hash non-virtual member functions when hashing a class
	* src/abg-hash.cc (class_decl::hash::operator): Do not hash
	non-virtual member functions.

2014-04-15  Dodji Seketeli <dodji@redhat.com>

	Fix a missing new line in the reports
	* src/abg-comparison.cc (represent(class_decl::method_decl_sptr,
	ostream&)): Add a missing new line.
	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.

2014-04-14  Dodji Seketeli <dodji@redhat.com>

	Add more pretty printing facilities
	* include/abg-comparison.h (get_pretty_representation(diff*)):
	Declare new function.
	* include/abg-fwd.h (get_pretty_representation): Declare functions
	for decl_base*, type_base*, decl_base_sptr and type_base_sptr.
	* src/abg-comparison.cc (get_pretty_representation): Implement
	this for diff*.
	* src/abg-ir.cc (get_pretty_representation): Define
	implementations for decl_base*, type_base*, decl_base_sptr and
	type_base_sptr.

2014-04-14  Dodji Seketeli <dodji@redhat.com>

	Don't compare non-virtual member functions in class comparison
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): Use the virtual
	member functions here, not the member functions in general.
	(compute_diff): Consider virtual member functions only, not
	non-virtual ones.
	* src/abg-ir.cc (class_decl::operator==): Do not compare
	non-virtual member functions.  Only compare virtual member
	functions.
	* tests/data/test-bidiff/test-struct1-report.txt: New test input.
	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
	* tests/data/test-diff-filter/test0-report.txt: New test input.
	* tests/data/test-diff-filter/test01-report.txt: New test input.
	* tests/data/test-diff-filter/test10-report.txt: New test input.
	* tests/data/test-diff-filter/test11-report.txt: New test input.
	* tests/data/test-diff-filter/test2-report.txt: New test input.
	* tests/data/test-diff-filter/test9-report.txt: New test input.

2014-04-14  Dodji Seketeli <dodji@redhat.com>

	Recognize virtual member functions better and store them appart
	* include/abg-fwd.h (set_member_function_is_virtual): Declare new
	function.
	* include/abg-ir.h (class class_decl): Declare
	set_member_function_is_virtual and member_function_is_virtual as
	friends of class_decl.
	(class_decl::add_member_function): Take an is_virtual flag.
	(class_decl::get_num_virtual_functions): Remove.
	(class_decl::get_virtual_mem_fns): New member function.
	(mem_fn_context_rel::is_virtual_): New member.
	(mem_fn_context_rel::mem_fn_context_rel): Adjust to initialize the
	new is_virtual_ member.
	(mem_fn_context_rel::is_virtual): New member functions.
	* src/abg-comparison.cc (represent): Adjust.
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Adjust.
	* src/abg-ir.cc (member_function_is_virtual): Change this to use
	mem_fn_context_rel::is_virtual.
	(set_member_function_is_virtual): Define this new function.
	(class_decl::priv::virtual_mem_fns_): New member to hold virtual
	member functions.
	(class_decl::get_virtual_mem_fns): Implement this member function.
	(class_decl::get_num_virtual_functions): Remove.
	(class_decl::add_member_function): Take a new is_virtual flag.
	Add virtual member functions to
	class_decl::priv::virtual_mem_fns_.
	* src/abg-reader.cc (build_class_decl): Adjust.

2014-04-13  Dodji Seketeli <dodji@redhat.com>

	Filter non-virtual member fns insertions/deletions from class changes
	* include/abg-fwd.h (member_function_is_virtual): Declare new
	function.
	* include/abg-comparison.h
	(diff_category::{NON_VIRT_MEM_FUN_CHANGE_CATEGORY,
	VIRTUAL_MEMBER_CHANGE_CATEGORY}): New enumerators.
	(diff_category::EVERYTHING_CATEGORY): Adjust.
	(class_diff::{changed, deleted, inserted}_member_fns): Declare new
	member functions.
	* src/abg-comp-filter.cc (data_member_added_or_removed): Add
	missing comments.
	(has_non_virtual_mem_fn_change): New static predicate function.
	(harmless_filter::visit): Categorize non-virtual member function
	changes in a diff into NON_VIRT_MEM_FUN_CHANGE_CATEGORY.
	* src/abg-comparison.cc
	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macro.
	(report_mem_header): Count filtered functions for added/deleted
	functions as well.
	(class_diff::priv::count_filtered_changed_mem_fns): Renamed
	priv::count_filtered_member_functions into this.  Filter out
	changes to non-virtual member functions here.
	(class_diff::priv::count_filtered_{inserted, deleted}_mem_fns):
	New member functions.
	(class_diff::{deleted, inserted, changed}_member_fns): Define new
	member functions.
	(class_diff::report): Adjust count for filtered inserted/deleted
	member functions.  Do not report NON_VIRT_MEM_FUN_CHANGE_CATEGORY
	if it's disallowed.
	(class_diff::traverse): Propagate only
	VIRTUAL_MEMBER_CHANGE_CATEGORY from member functions to their
	enclosing class.
	* src/abg-ir.cc (member_function_is_virtual): Define new
	functions.
	* tools/bidiff.cc (set_diff_context_from_opts): Adjust to add
	NON_VIRT_MEM_FUN_CHANGE_CATEGORY into the harmless group and
	VIRTUAL_MEMBER_CHANGE_CATEGORY into the harmful one.
	* tests/data/test-diff-filter/test0-report.txt: New test input.
	* tests/data/test-diff-filter/test10-report.txt: Likewise.
	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
	* tests/data/test-diff-filter/test10-v0.o: Likewise.
	* tests/data/test-diff-filter/test10-v1.cc: Likewise.
	* tests/data/test-diff-filter/test10-v1.o: Likewise.
	* tests/data/test-diff-filter/test11-report.txt: Likewise.
	* tests/data/test-diff-filter/test11-v0.cc: Likewise.
	* tests/data/test-diff-filter/test11-v0.o: Likewise.
	* tests/data/test-diff-filter/test11-v1.cc: Likewise.
	* tests/data/test-diff-filter/test11-v1.o: Likewise.
	* tests/data/test-diff-filter/test2-report.txt: Likewise.
	* tests/data/test-diff-filter/test9-report.txt: Likewise.
	* tests/data/test-diff-filter/test9-v0.cc: Likewise.
	* tests/data/test-diff-filter/test9-v0.o: Likewise.
	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
	* tests/data/test-diff-filter/test9-v1.o: Likewise.
	* tests/test-diff-filter.cc: Consume the test input above to run
	more tests.

2014-04-13  Dodji Seketeli <dodji@redhat.com>

	Make class_decl pimpl and harden comparison infloop prevention
	* include/abg-ir.h (class_decl::{priv}): New private data member.
	(class_decl::{get_is_declaration_only, set_is_declaration_only,
	is_struct, get_definition_of_declaration, get_earlier_declaration,
	add_base_specifier, get_base_specifiers, get_member_types,
	get_data_members, get_member_functions,
	get_member_function_templates, get_member_class_templates}): Move
	these methods out-of-line.
	(class_decl::{comparison_started_,
	declaration_,is_declaration_only_, definition_of_declaration,
	is_struct_, bases_, member_types_, data_members_,
	member_functions_, member_function_template,
	member_class_templates_}): Move these data members into the pimpl
	in ...
	* src/abg-ir.cc
	(class_decl::priv::{declaration_,is_declaration_only_,
	definition_of_declaration, is_struct_, bases_, member_types_,
	data_members_, member_functions_, member_function_template,
	member_class_templates_}): ... here.
	(class_decl::priv::classes_being_compared_): New data member.
	(class_decl::priv::priv): Initialize the data members.
	(class_decl::priv::{mark_as_being_compared,
	unmark_as_being_compared, comparison_started): New methods.
	(class_decl::{get_is_declaration_only, set_is_declaration_only,
	is_struct, get_definition_of_declaration, add_base_specifier,
	get_base_specifiers, get_member_types, get_data_members,
	get_member_functions, get_member_function_templates,
	get_member_class_templates}): Move these out-of-line in here.
	(class_decl::{class_decl, set_definition_of_declaration,
	set_earlier_declaration, insert_member_type, add_member_type,
	add_data_member, add_member_function,
	add_member_function_template, add_member_class_template,
	has_no_base_nor_member}): Adjust.
	(class_decl::operator==): Harden inf-loop prevention during class
	comparison using the new priv::mark/unmark_as_being_compared()
	functions.  Now comparison of a class really compares member
	functions again.  And it is *slooow*.  I should probably change
	this to compare only virtual member functions.  But at least this
	should be correct and robust for now.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* test01-report.txt: Adjust.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Remove the parent member of the diff node
	* include/abg-comparison.h (diff::parent_): Remove.
	(diff::diff): Adjust.
	(diff::{get, set}_parent): Remove.
	* src/abg-comp-filter.cc (harmless_filter::visit): Remove category
	propagation to the parent.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Update the decl_base copy constructor for forgotten members
	* src/abg-ir.cc (decl_base::decl_base): Copy forgotten decl_base
	members hashing_started_, qualified_parent_name_, qualified_name_.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Comment fix in filtering code
	* src/abg-comp-filter.cc (harmful_filter::visit): Fix comment
	typos.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Put data member type size changes in SIZE_OR_OFFSET_CHANGE_CATEGORY
	* src/abg-comp-filter.cc (type_size_changed): New overload for
	type_base_sptr.
	(data_member_type_size_changed): New predicate.
	(harmful_filter::visit): Use the new predicate to categorize data
	member type size changes into the SIZE_OR_OFFSET_CHANGE_CATEGORY.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Represent a removed+added data member at a given offset as changed
	* include/abg-fwd.h (get_data_member_offset): Declare new overload for
	decl_base_sptr.
	* include/abg-comparison.h (unsigned_decl_base_sptr_map)
	(unsigned_changed_type_or_decl_map): New typedefs.
	* src/abg-ir.cc (get_data_member_offset): Define new overload for decl_base_sptr.
	* src/abg-comparison.cc (diff_kind::subtype_change_kind): New
	enumerator for a change about a type or sub-type of a member of a
	structure/enum.
	(report_mem_header): Handle the new enumerator above.
	(class_diff::priv::{deleted_dm_by_offset_, inserted_dm_by_offset_,
	changed_dm_}): New data members.
	(class_diff::priv::subtype_changed_dm_): Renamed
	class_diff::priv::changed_data_members_ into this.
	(class_diff::priv::subtype_changed_dm): Renamed
	class_diff::priv::data_member_has_changed into this. Adjust.
	(class_diff::count_filtered_subtype_changed_dm): Renamed
	count_filtered_data_members into this.  Adjust.
	(class_diff::priv::count_filtered_changed_dm): New member
	function.
	(class_diff::lookup_tables_empty): Adjust.
	(class_diff::ensure_lookup_tables_populated): Adjust.  Detect when
	a data member is deleted and added back to offset N, and be
	prepared to present that as a change of data member at offset N.
	(class_diff::report): Adjust.  Report data members of a given
	offset that have changed.
	* tests/data/test-diff-dwarf/test6-report.txt: New reference
	report for new test input.
	* tests/data/test-diff-dwarf/test6-v0.cc: Source code for new test
	input binary.
	* tests/data/test-diff-dwarf/test6-v0.o: New test input binary.
	* tests/data/test-diff-dwarf/test6-v1.cc: Source code for new test
	input binary.
	* tests/data/test-diff-dwarf/test6-v1.o: New test input binary.
	* tests/test-diff-dwarf.cc: Adjust to include the new test inputs above.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Unmark class_diff node as being traversed once traversal is finished
	* src/abg-comparison.cc (class_diff:traverse): Unmark class_diff
	node as being traversed once traversal is finished

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Do not use the parent diff node link for category propagation
	* src/abg-comparison.cc (class_diff::traverse): Use the new
	TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY macro to propagate
	categorization from the children diff nodes to the current one for
	bases, data members and member functions.
	(scope_diff::traverse): Likewise, use the
	TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY to propagate
	categorization from the children diff nodes to the current one.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Ensure that each diff node is traversed just once
	* include/abg-comparison.cc (pointer_map): New typedef.
	(diff_context::{has_diff_for}): New overload for diff*.
	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
	forget_traversed_diffs}): Declare new methods.
	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Define new macros.
	(diff_context::priv::traversed_diff_nodes_): New data member.
	(diff_context::has_diff_for): New overload for diff*
	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
	forget_traversed_diffs}): Define new member functions.
	(diff_context::maybe_apply_filters): Forget the traversed diffs
	before applying a filter.
	({distinct_diff, var_diff, pointer_diff, reference_diff,
	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
	function_decl_diff, type_decl_diff, typedef_diff,
	translation_unit_diff}::traverse): Ensure that the diff node is
	traversed only once.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Factorize diff sub-tree traversal and category propagation code
	* src/abg-comparison.cc
	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macros.
	({distinct_diff, pointer_diff, reference_diff,
	qualified_type_diff, enum_diff, base_diff, function_decl_diff,
	typedef_diff}::traverse): Use the new macro above in lieu of the
	duplicated sub-tree traversal code in there.

2014-04-11  Dodji Seketeli <dodji@redhat.com>

	Style fixes in the diff nodes traversing code
	* src/abg-comparison.cc (TRY_{PRE, PRO}_VISIT, TRY_{PRE,
	PRO}_VISIT_CLASS_DIFF, ): Add a white space.

2014-04-10  Dodji Seketeli <dodji@redhat.com>

	Supporting reporting data member name change
	* src/abg-comparison.cc (represent): Support reporting data member
	name change.

2014-04-10  Dodji Seketeli <dodji@redhat.com>

	Consider added/removed data members as changing size or offset
	* src/abg-comp-filter.cc (data_member_added_or_removed): New
	static function.
	(harmless_filter::visit): Re-organize logic.  Categorize data
	member addition/removal into SIZE_OR_OFFSET_CHANGE_CATEGORY.

2014-04-10  Dodji Seketeli <dodji@redhat.com>

	Add missing comment
	* src/abg-ir.cc (non_type_tparameter::get_hash): Add missing api doc.

2014-04-09  Dodji Seketeli <dodji@redhat.com>

	Fix and add missing hashing through the virtual decl_base::get_hash
	* include/abg-ir.h (struct {scope_decl, non_type_tparameter,
	type_composition, class_decl}::hash): Declare hashers.
	({scope_decl, var_decl, non_type_tparameter, type_composition,
	class_decl}::get_hash): Provide new overloads of the get_hash.
	* src/abg-hash.cc ({type_decl, scope_type_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	enum_type_decl, typedef_decl, var_decl,
	function_decl}::hash::operator()): If the hash is being
	calculated, do not use the not-yet fully calculated hash value.
	Rather, calculate the hash, cache it and return the value.
	({class_decl, non_type_tparameter}::hash::operator()): Moved the
	{class_decl, non_type_tparameter}::hash declaration out of here
	and stick it in include/abg-ir.h.  Keep the definition of the
	hashing operators here though.
	(type_composition::hash::operator()): New operator definition.
	* src/abg-ir.cc ({scope_decl, var_decl, class_decl,
	non_type_tparameter, type_composition}::get_hash): Define new
	virtual overload.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Fix mis-hashing of base specifiers and function_decl during comparison
	* include/abg-ir.h (function_decl::get_hash): Declare new virtual
	overload.
	* src/abg-hash.cc (class_decl::base_spec::hash::operator()):
	Properly hash the base specifier so that it doesn't collide with
	hashing a class.
	* src/abg-ir.cc (decl_base::get_hash): Abort if we detect a
	missing overload for this;
	(function_decl::get_hash() const): Implement this missing
	overload, allowing using the virtual decl_base::get_hash for
	function_decl.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Properly place opening quote and add missing closing quote in report
	* src/abg-comparison.cc (corpus_diff::report): Move the [{A,D}]
	marker before the opening quote.  And add a closing quote.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test01-report.txt: Adjust.
	* tests/data/test-diff-filter/test2-report.txt: Adjust.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Drive-by indentation fix
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix
	indentation.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Drop ABI artifacts that are local to a function
	* src/abg-dwarf-reader.cc (get_scope_for_die): If the parent die
	is  DW_TAG_subprogram then just drop the whole thing on the floor.
	(build_ir_node_from_die): When the scope is NULL, just drop the
	whole thing on the floor.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Fix the static data member recognition hack
	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
	When trying to recognize the global var_decl as being definition
	variables for static data members, lookup the declaration for the
	data member in the relevant class.  If found, then just flag the
	var_decl for the data member as being static; no need to add a
	var_decl as data member in that case, that would duplicate the
	data member.

2014-04-08  Dodji Seketeli <dodji@redhat.com>

	Fix looking up a node inside a class
	* src/abg-ir.cc (lookup_node_in_scope): Do not forget to actually
	look at the class members.  Sigh.

2014-04-07  Dodji Seketeli <dodji@redhat.com>

	Work around old dwarf producers forgetting mangled names for functions
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): If lookup
	using mangled name for a deleted function yields nada, try the
	lookup with the pretty representation for the function.

2014-04-07  Dodji Seketeli <dodji@redhat.com>

	Make type_base::get_{size,alignment}_in_bits virtual
	* include/abg-ir.h (type_base::get_{size,alignment}_in_bits): Make
	this virtual.
	(typedef_decl::get_{size,alignment}_in_bits): Add new member
	functions.  Get the size,alignment from the underlying type and
	update the current size/alignment if they differ.  Keep in mind
	that the size of an underlying class_decl can change over its
	lifetime, given how the dwarf reader reads the type information,
	i.e, there can be a DIE for a class type with no size information
	that will lead to the creation of a class_decl with size zero.
	Later during the DWARF reading process, another DIE will
	supplement the type information, adding size information to that
	class_decl.  In between, a typedef_decl might have been created
	with the first version of the class_decl that has a zero size.  I
	guess this should be extended to the other type constructs that
	have an underlying type (qualified types, references and pointers).

2014-04-07  Dodji Seketeli <dodji@redhat.com>

	Look through typedefs when setting SIZE_OR_OFFSET_CHANGE_CATEGORY
	* include/abg-fwd.h (is_class_type): Declare new functions.
	* src/abg-comp-filter.cc (harmful_filter::visit): Use the above to
	convert a type into a class.
	* src/abg-ir.cc (is_class_type): Define the new function.

2014-04-06  Dodji Seketeli <dodji@redhat.com>

	Add a new DECL_NAME_CHANGE_CATEGORY change category
	* include/abg-comparison.h (enum
	diff_category::DECL_NAME_CHANGE_CATEGORY): New enumerator.
	* src/abg-comparison.cc (report_name_size_and_alignment_changes)
	({enum, typedef}_diff::report): Adjust to avoid emitting name
	change report if the DECL_NAME_CHANGE_CATEGORY category of change
	is currently disallowed.
	* abg-comp-filter.cc (decl_name_changed): New static function.
	(harmless_filter::visit): Detect that the decl name changed and
	put the current diff node (and its parents) into the
	DECL_NAME_CHANGE_CATEGORY category.
	* tools/bidiff.cc (set_diff_context_from_opts): Set the new
	DECL_NAME_CHANGE_CATEGORY category into the harmless_changes group
	of categories.
	* tests/data/test-diff-filter/test6-report.txt: New test input file.
	* tests/data/test-diff-filter/test6-v0.cc: Likewise.
	* tests/data/test-diff-filter/test6-v0.o: Likewise.
	* tests/data/test-diff-filter/test6-v1.cc: Likewise.
	* tests/data/test-diff-filter/test6-v1.o: Likewise.
	* tests/data/test-diff-filter/test7-report.txt: Likewise.
	* tests/data/test-diff-filter/test7-v0.cc: Likewise.
	* tests/data/test-diff-filter/test7-v0.o: Likewise.
	* tests/data/test-diff-filter/test7-v1.cc: Likewise.
	* tests/data/test-diff-filter/test7-v1.o: Likewise.
	* tests/test-diff-filter.cc: Take the new inputs above to run new tests.
	* tests/Makefile.am: Add the new files above to the distribution.

2014-04-05  Dodji Seketeli <dodji@redhat.com>

	Emit qualified name for typedefs
	* src/abg-comparison.cc (typedef_diff::report): Emit qualified
	names for typedefs in diff reports about typedef name changes.

2014-04-05  Dodji Seketeli <dodji@redhat.com>

	Fix indentation in distinct type diff report
	* src/abg-comparison.cc (distinct_diff::report): Do not forget to
	change line.

2014-04-05  Dodji Seketeli <dodji@redhat.com>

	Really compare return types for function types
	* src/abg-ir.cc (compare_function_types): Compare return types,
	unless this is a method and the return type is the same type as
	the containing class type.
	* tests/data/test-diff-dwarf/test5-report.txt: Reference report
	for the comparison of the two input binaries below.
	* tests/data/test-diff-dwarf/test5-v0.cc: Source code for the
	input binary below.
	* tests/data/test-diff-dwarf/test5-v0.o: Test input binary.
	* tests/data/test-diff-dwarf/test5-v1.cc: Source code for the
	input binary below.
	* tests/data/test-diff-dwarf/test5-v1.o: Test input binary.

2014-04-05  Dodji Seketeli <dodji@redhat.com>

	Add missing tests for previous commits
	* tests/data/test-diff-dwarf/test4-report.txt: Adjust.
	* tests/test-diff-dwarf.cc: Run tests for
	data/test-diff-dwarf/test3-report.txt" and
	data/test-diff-dwarf/test4-report.txt.

2014-04-05  Dodji Seketeli <dodji@redhat.com>

	Categorize through compatible distinct type diffs
	* src/abg-comparison.cc (report_size_and_alignment_changes): Split
	this static function out of ...
	(report_name_size_and_alignment_changes): ... this one.
	(distinct_diff::report): If the typedef-stripped variants of the
	diff subjects are of the same kind, display their diff.
	Otherwise, tell explicitly is the distinct type diff involves a
	type size change.
	(distinct_diff::traverse): If the typedef-stripped variants of the
	diff subjects are of the same kind, traverse that underlying diff
	sub-tree and propagate the categorizing possibly resulting from
	that traversal.
	* tests/data/test-diff-dwarf/test4-v0.o: New test input binary.
	* tests/data/test-diff-dwarf/test4-v0.cc: Source code for the
	input binary above.
	* tests/data/test-diff-dwarf/test4-v1.o: New test input binary.
	* tests/data/test-diff-dwarf/test4-v1.cc: Source code for the
	input binary above.
	* tests/data/test-diff-dwarf/test4-report.txt: Reference report
	for the difference between the two binaries above.
	* tests/data/test-diff-filter/test5-v0.o: New test input binary.
	* tests/data/test-diff-filter/test5-v0.cc: Source code for the
	input binary above.
	* tests/data/test-diff-filter/test5-v1.o: New test input binary.
	* tests/data/test-diff-filter/test5-v1.cc: Source code for the
	input binary above.
	* tests/data/test-diff-filter/test5-report.txt: Reference report
	for the difference between the two binaries above.
	* tests/test-diff-filter.cc: Adjust to produce a filtered diff for
	the two input binaries above.
	* tests/Makefile.am: Adjust to add missing test files to the
	distribution.

2014-04-04  Dodji Seketeli <dodji@redhat.com>

	Slight run-by fixes
	* src/abg-comparison.cc
	(corpus_diff::priv::apply_filters_and_compute_diff_stats)
	(corpus_diff::report): Use compute_diff for types which it has an
	overload rather than going through the compute_diff_for_decls that
	would use dynamic casting.

2014-04-04  Dodji Seketeli <dodji@redhat.com>

	Do not hook type diff nodes to a parent
	* abg/comparison.cc (var_diff::var_diff): Do not set parent node
	for the type diff of the var_diff.
	(var_diff::traverse): Handle category propagation from the
	type diff node to the var_diff node.
	(pointer_diff::underlying_type_diff)
	(reference_diff::underlying_type_diff)
	(qualified_type_diff::underlying_type_diff, enum_diff::enum_diff)
	(base_diff::get_underlying_class_diff)
	(typedef_diff::underlying_type_diff): Do not set the parent node
	here.
	({pointer_diff, reference_diff, qualified_type, enum_diff,
	class_diff, base_diff, function_decl_diff,
	typedef_diff}::traverse): Handle category propagation here.
	* tests/data/test-diff-filter/test4-v0.o: New input binary.
	* tests/data/test-diff-filter/test4-v0.cc: Source code for the
	input binary above.
	* tests/data/test-diff-filter/test4-v1.o: New input binary.
	* tests/data/test-diff-filter/test4-v1.cc: Source code for the
	input binary above.
	* tests/data/test-diff-filter/test4-report.txt: Reference diff
	report for the input binaries above.
	* tests/test-diff-filter.cc:: Run bidiff --no-harmless on the
	binaries above.

2014-04-04  Dodji Seketeli <dodji@redhat.com>

	Fix off-by one comparison bug in comparing function parameters
	* src/abg-comparison.cc
	(function_decl_diff::ensure_lookup_tables_populated): Function
	parameters that are diff'ed start at the first non-implicit
	parameter, not at the first parameter.  Oops.
	* tests/data/test-diff-dwarf/test3-v0.o: New test input binary.
	* tests/data/test-diff-dwarf/test3-v0.cc: Source code for the
	binary above.
	* tests/data/test-diff-dwarf/test3-v1.o: New test input binary.
	* tests/data/test-diff-dwarf/test3-v1.cc: Source code for the
	binary above.
	* tests/data/test-diff-dwarf/test3-report.txt: Reference report
	for the diff of the new test inputs.
	* tests/test-diff-dwarf.cc: Use the test inputs above to run new
	tests.

2014-04-03  Dodji Seketeli <dodji@redhat.com>

	Do not forget parm sub-type changes as opposed to parm changes
	* src/abg-comparison.cc
	(function_decl_diff::ensure_lookup_tables_populated): A parm
	change is valid only when the added parm has a different name from
	the removed parm.  Both have the same index, of course.  In that
	case, do not try to remove the corresponding parm sub-type change.
	* tests/data/test-bidiff/test-enum0-report.txt: Adjust.
	* tests/data/test-bidiff/test-enum1-report.txt: Adjust.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* tests/data/test-diff-filter/test01-report.txt: Adjust.
	* tests/data/test-diff-filter/test1-report.txt: Adjust.
	* tests/data/test-diff-filter/test2-report.txt: Adjust.
	* tests/data/test-diff-filter/test3-report.txt: Adjust.

2014-04-03  Dodji Seketeli <dodji@redhat.com>

	Remove useless white space
	* src/abg-ir.cc (look_through_decl_only_class): Remove useless
	white space.

2014-04-02  Dodji Seketeli <dodji@redhat.com>

	Use mangled name for decl comparison when it's present
	* src/abg-ir.cc (decl_base::operator==(const decl_base& other)
	const): Use the mangled name of the decl in priority.
	* src/abg-hash.cc (struct decl_base::hash::operator()): Likewise.
	* src/abg-comparison.cc (function_decl_diff::report): Do not
	report a function name change if it doesn't involve a mangled name
	change.  This might change when we start dealing with templates.

2014-04-02  Dodji Seketeli <dodji@redhat.com>

	A change involving a decl-only class is not SIZE_OR_OFFSET_CHANGE_CATEGORY
	* src/abg-comp-filter.cc (harmful_filter::visit): If a size change
	involves a decl-only class, it certainly shouldn't trigger putting
	the sub-tree into the SIZE_OR_OFFSET_CHANGE_CATEGORY category.

2014-04-02  Dodji Seketeli <dodji@redhat.com>

	Fix heuristics to detect function static-ness for DWARF < 3
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Make
	the heuristics work for functions with no parameters.

2014-04-02  Dodji Seketeli <dodji@redhat.com>

	Avoid emitting local filtered-out changes in more spots
	* src/abg-comparison.cc (maybe_report_diff_for_member): Take the
	diff_context in parameter.  Use that to check if local changes of
	category ACCESS_CHANGE_CATEGORY are filtered-out and do not report
	the change in that case.
	({var_diff, enum_diff, class_diff, base_diff,
	function_decl_diff}::report): Adjust.

2014-04-02  Dodji Seketeli <dodji@redhat.com>

	Add a COMPATIBLE_TYPE_CHANGE_CATEGORY to bidiff --no-harmless
	* include/abg-comparison.h
	(diff_category::COMPATIBLE_TYPE_CHANGE_CATEGORY): New enumerator.
	(operator|=(diff_category&, diff_category)): New declaration.
	* include/abg-fwd.h (is_typedef, strip_typedef)
	(types_are_compatible): New declarations.
	* include/abg-ir.h (operator==(const decl_base_sptr, const
	decl_base_sptr)): Added the consts here.
	(operator==(const type_base_sptr, const type_base_sptr)): New
	declaration.
	* src/abg-comp-filter.cc (is_compatible_change): New static
	function.
	(harmless_filter::visit): Detect compatible changes and add the
	sub-tree into the new COMPATIBLE_TYPE_CHANGE_CATEGORY if
	applicable. Cleanup the logic.
	* src/abg-comparison.cc (operator|=(diff_category&,
	diff_category)): Define new function.
	(operator==(const decl_base_sptr l, const decl_base_sptr r)): Add
	consts.
	(operator==(const type_base_sptr l, const type_base_sptr r)):
	Define new operator.
	(is_typedef, strip_typedef, types_are_compatible): New function
	definitions.
	* tests/data/test-diff-filter/test3-report.txt: New test report
	reference.
	* tests/data/test-diff-filter/test3-v0.cc: Source code for new
	test input.
	* tests/data/test-diff-filter/test3-v0.o: New test input.
	* tests/data/test-diff-filter/test3-v1.cc: Source code for new
	test input.
	* tests/data/test-diff-filter/test3-v1.o: New test input.
	* tests/test-diff-filter.cc: Adjust to consume the new tests
	inputs above.
	* tools/bidiff.cc: Add the new COMPATIBLE_TYPE_CHANGE_CATEGORY
	into the --harmless group.

2014-04-01  Dodji Seketeli <dodji@redhat.com>

	Don't emit local filtered-out changes
	* src/abg-comparison.cc (represent): For var_decl, do not emit
	filtered-out local size/offset/access changes.
	(report_name_size_and_alignment_changes): Take the diff context.
	Do not report filtered-out local size/offset changes.
	({var_diff, enum_diff, class_diff, type_decl_diff}::report):
	Adjust.
	* test0-report.txt: Adjust.
	* test01-report.txt: New reference report for the same inputs
	test0-v{1,0}.o, but called without the --no-harmless command line.
	* tests/data/test-diff-filter/test2-v0.cc: Source code for new test input.
	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
	* tests/data/test-diff-filter/test2-v0.o: New test input.
	* tests/data/test-diff-filter/test2-v1.o: Likewise.
	* tests/data/test-diff-filter/test2-report.txt: Reference report
	for new test input.
	* tests/test-diff-filter.cc: Consume the test inputs above.
	* tests/Makefile.am: Add the new test inputs above to the
	distribution.

2014-04-01  Dodji Seketeli <dodji@redhat.com>

	Compact & intuitive reporting for changed function parameters
	* include/abg-comparison.h (unsigned_changed_parm_map)
	(unsigned_parm_map): New typedefs.
	* src/abg-comparison.cc
	(function_decl_diff::subtype_changed_parms): Renamed this from
	changed_parms.
	(function_decl_diff::priv::subtype_changed_parms_}): Renamed this
	from changed_parms_;
	(function_decl_diff::priv::{deleted_parms_by_id_,
	added_parms_by_id_, changed_parms_by_id_}): New members.
	(function_decl_diff::ensure_lookup_tables_populated): Update the
	new priv::changed_parms_by_id_ member to contain the parameters
	that got changed, as opposed to the subtype_changed_parms_ member
	that contain parameters that got a sub-type change.  The other
	priv::*_by_id_ members are helpers for this.  Update them too.
	(function_decl_diff::subtype_changed_parms): Renamed this from
	::changed_parms.
	(function_decl_diff::report): Report separately about parameters
	having a sub-type change, and parameters that got changed.  Note
	that in both cases, the change is necessarily to a compatible
	type.
	* data/test-diff-dwarf/test2-v0.cc: New test file.
	* data/test-diff-dwarf/test2-v0.o: Likewise.
	* data/test-diff-dwarf/test2-v1.cc: Likewise.
	* data/test-diff-dwarf/test2-v1.o: Likewise.
	* data/test-diff-dwarf/test2-report.txt: Likewise.
	* tests/Makefile.am: Add the new test files above to the
	distribution.
	* tests/test-diff-dwarf.cc: Consume the input files above to
	actually perform a regression test.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix thinko class_diff traversing.
	* src/abg-comparison.cc (class_diff::traverse): Fix thinking in
	introduced by commit "6709478 Fix infinite loop when traversing
	classes and their members"
	* tests/data/test-diff-filter/test1-v{0,1}.o: New test binary input files.
	* tests/data/test-diff-filter/test1-v{0,1}.cc: Source code for the
	above.
	* tests/data/test-diff-filter/test1-report.txt: Reference report
	for the diffing of the two binary input files above.
	* tests/test-diff-filter.cc: Make the test run on the new input above.
	* tests/Makefile.am: Add the new material to the distribution.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Add forgotten test output adjustment
	* tests/data/test-diff-filter/test0-report.txt: Adjust for the
	commit "a8d5284 Fix diff report indentation issue"
	* tests/data/test-diff-dwarf/test{0,1}-report.txt: Likewise.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Add forgotten source file for binary test input
	* tests/data/test-diff-dwarf/test1-v0.cc: New file.
	* tests/data/test-diff-dwarf/test1-v1.cc: Likewise.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix diff report indentation issue
	* abg-comparison.cc (corpus_diff::report): Indent the details of
	function changes.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix infinite loop when traversing classes and their members
	* src/abg-comparison.cc (TRY_{PRE,POST}_VISIT_CLASS_DIFF): New
	macros.
	(class_diff::priv::traversing_): New flag.
	(class_diff::priv::priv): New constructor to initialize the new
	flag above.
	(class_diff::traversing): Do not traverse the diff again if it's
	being traversed already.

2014-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix access_changed and data_member_offset_changed predicates
	* src/abg-comp-filter.cc (access_changed)
	(data_member_offset_changed): Fix detection of membership.

2014-03-29  Dodji Seketeli <dodji@redhat.com>

	Take filtering in account in diff stats & better categorizing
	* include/abg-comparison.h
	(diff_category::ACCESS_CHANGE_CATEGORY): Renamed
	ACCESS_CHANGED_CATEGORY into this.
	(diff_category::SIZE_OR_OFFSET_CHANGE_CATEGORY): Renamed
	SIZE_CHANGED_CATEGORY into this.  Changed its semantics to
	incorporate offset changes as well.
	* src/abg-comparison.cc (struct noop_deleter): Move this up.
	(represent): Do not report filtered out data members.
	(report_mem_header): Add a new num_filtered parameter to take
	filtered-out members in account in members report headers.
	Adjust.
	(class_diff::priv::{count_filtered_bases,
	count_filtered_data_members, count_filtered_member_functions}):
	New member functions.  When a member is filtered, do not report
	it all.
	({enum_diff, class_diff}::report): Adjust.  Take filtered members
	into account in headers.
	(corpus_diff::priv::apply_filters_and_compute_diff_stats): New
	member function.
	(corpus_diff::priv::emit_diff_stats): Renamed
	emit_corpus_diff_stats into this.  Change it to take the stats in
	parameter.
	(corpus_diff::report): Adjust to re-use the above.  Filter
	varibles as well.  Take the filtered functions & variables in
	account in the stats.  Do not report filtered-out functions &
	variables at all.
	* src/abg-comp-filter.cc (type_size_changed, access_changed)
	(data_member_offset_changed): New predicates.
	({harmless, harmful}_filter::visit): Adjust to use the new
	predicates above.  Update the harmful variant for the new
	SIZE_OR_OFFSET_CHANGE_CATEGORY category.
	* tools/bidiff.cc (set_diff_context_from_opts): Adjust for the
	categories name changes.
	* tests/data/test-diff-filter/test0-report.txt: New test input.
	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
	* tests/data/test-diff-filter/test0-v0.o: Likewise.
	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
	* tests/data/test-diff-filter/test0-v1.o: Likewise.
	* tests/test-diff-filter.cc: New test harness.
	* tests/Makefile.am: Add the new test files above to the
	distribution.

2014-03-29  Dodji Seketeli <dodji@redhat.com>

	Fix var_diff length determination
	* src/abg-comparison.cc (var_diff::length):  Just compare the two
	diff subjects.

2014-03-29  Dodji Seketeli <dodji@redhat.com>

	Fix typos in the test-diff-dwarf.cc source code
	* tests/test-diff-dwarf.cc: Fix various typos.

2014-03-27  Dodji Seketeli <dodji@redhat.com>

	Initial implementation of diff tree node filtering
	* include/abg-comp-filter.h: New file.
	* include/Makefile.am: Add the new include/abg-comp-filter.h to
	the source distribution.
	* include/abg-comparison.h (enum visiting_kind, diff_category): New enums.
	(operator|): Declare new operator declaration for the new
	visiting_kind enum.
	(operator{|,^,&,~}): Declare new operator decl for the new
	diff_category enum.
	(diff_context::{get_allowed_category, set_allowed_category,
	switch_categories_on, switch_categories_off, diff_filters,
	add_diff_filter, maybe_apply_filters}): Declare new member functions.
	(diff::{parent_, category_}): New members.
	(diff::diff): Adjust.
	(diff::{get_parent, set_parent, get_category, add_to_category,
	is_filtered_out, to_be_reported}):  New members.
	(diff_node_visitor::{get_visiting_kind, set_visiting_kind}): New
	members.
	(diff_node_visitor::visit): Add a new flag to saying if the
	visitor is being called in post or pre children traversing mode.
	* src/abg-comparison.cc (operator|): Declare new operator
	declaration for the new visiting_kind enum.
	(operator{|,^,&,~}): Declare new operator decl for the new
	diff_category enum.
	(diff_context::priv::{allowed_category_, filters_}): New members.
	(diff_context::diff_context): Add all known filters.
	(diff_context::{get_allowed_category, set_allowed_category,
	switch_categories_on, switch_categories_off, diff_filters,
	add_diff_filter, maybe_apply_filters}): Define new member
	functions.
	(diff::{is_filtered_out, to_be_reported}): Define new members.
	(*::report): Use the new diff::to_be_reported function.
	(*::traverse): Adjust for pre/post visiting.
	(var_diff::var_diff): Chain the type diff node to its parent.
	({pointer_diff, reference_diff, qualified_type_diff,
	typedef_diff}::underlying_type_diff): Chain the underlying type
	diff node to its parent.
	(enum_diff::enum_diff): Likewise.
	(base_diff::underlying_class_diff): Likewise.
	({class_diff, corpus_diff}::report): Do not report changed
	(member) functions that have been filtered out.  Rather report
	that they have been filtered out.
	({function_decl_diff, class_diff}::traverse): Chain underlying
	type diff nodes to their parent.
	(diff_node_visitor::visit): Add a new flag to saying if the
	visitor is being called in post or pre children traversing mode.
	Make sure to call the default diff::visit overload.
	* src/abg-comp-filter.cc: New file.
	* src/Makefile.am: Add the new abg-comp-filter.cc to the source
	distribution.
	* tools/bidiff.cc (options::show_harm{ful,less}_changes): New
	members.
	(display_usage): Add usage strings for --no-harmless and
	--no-harmful options.
	(parse_command_line): Parse --no-harmless and --no-harmful command
	line options.
	(set_diff_context_from_opts): Populate the diff context
	accordingly.

2014-03-26  Dodji Seketeli <dodji@redhat.com>

	Add missing headers double inclusion guards
	* include/abg-comparison.h: Add a missing double inclusion guard.
	* include/abg-diff-utils.h: Likewise.

2014-03-26  Dodji Seketeli <dodji@redhat.com>

	Add a missing apostrophe to access reporting
	* src/abg-comparison.cc (represent): For member var_decls, add a
	missing apostrophe after the access.
	* tests/data/test-diff-dwarf/test0-report.txt: Update test report.

2014-03-21  Dodji Seketeli <dodji@redhat.com>

	Fix diff emptiness detection for function_decl_diff nodes
	* src/abg-comparison.cc (function_decl_diff::length): Just compare
	the two functions here, damit.
	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.

2014-03-21  Dodji Seketeli <dodji@redhat.com>

	Fixlets in the bidiff regression testing harness
	* tests/test-bidiff.cc (main): Fix a typo.  Fix the path to the
	output path.

2014-03-21  Dodji Seketeli <dodji@redhat.com>

	Initial regression test for dwarf diffing
	* tests/test-diff-dwarf.cc: New dwarf diffing regression test
	harness.
	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
	* tests/data/test-diff-dwarf/test0-v0.cc: Likewise.
	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
	* tests/Makefile.am: Add the new test inputs from
	tests/test-diff-dwarf.cc and tests/data/test-diff-dwarf/* to
	the build system.

2014-03-21  Dodji Seketeli <dodji@redhat.com>

	Rename test-walker.cc into test-ir-walker.cc
	* tests/test-ir-walker.cc: Renamed test-walker.cc into this.
	* tests/Makefile.am: Adjust.  The generated binary is now testirwalker.

2014-03-21  Dodji Seketeli <dodji@redhat.com>

	Initial diff tree traversal infrastructure
	* include/abg-comparison.h (struct diff_traversable_base, struct
	diff_node_visitor): New type.
	(class diff): Extends the new diff_traversable_base.
	({diff, distinct_diff, var_diff, pointer_diff, reference_diff,
	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
	function_decl_diff, type_decl_diff, typedef_diff,
	translation_unit_diff, corpus_diff}::traverse): New methods.
	(function_decl_diff::return_type_diff): New accessor.  Renamed
	return_diff into this.
	(translation_unit_diff::{first, second}_translation_unit): New
	accessors.
	(corpus_diff::{deleted, added, changed}_functions): New accessors.
	* src/abg-comparison.cc ({distinct_diff, var_diff,
	pointer_diff, reference_diff, qualified_type_diff, enum_diff,
	class_diff, base_diff, scope_diff, function_decl_diff,
	type_decl_diff, typedef_diff, translation_unit_diff,
	corpus_diff}::traverse): New function implementations.
	(maybe_report_diff_for_member): Renamed
	maybe_report_diff_for_class_members into this.
	(var_diff::report): Adjust.
	(struct translation_unit_diff::priv): New private type.
	(translation_unit_diff::translation_unit_diff): Instantiate the
	new priv_ member.
	(translation_unit_diff::{first,second}_translation_unit): New
	accessors.
	(corpus_diff::{deleted, added, changed}_functions): New function
	implementations.
	(diff_node_visitor::visit): New function implementations.

2014-03-19  Dodji Seketeli <dodji@redhat.com>

	Make tree walking preemptive
	* include/abg-traverse.h (traversable_base::traversable): Change
	the signature of this to return a boolean.
	* include/abg-ir.h (ir_traversable_base::traverse): Change the
	signature of this to return a boolean.
	(*::traverse): Adjust.
	(ir_node_visitor::visit): Change the signature of this to return a
	boolean.
	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Adjust.
	* src/abg-ir.cc (::traverse): Adjust.
	* tests/test-walker.cc (name_printing_visitor::visit): Adjust.

2014-03-26  Jonathan Wakely <jwakely@redhat.com>

	Fix comment typos
	* include/abg-diff-utils.h (compute_diff): Fix typo in apidoc
	comment.

2014-03-24  Dodji Seketeli <dodji@redhat.com>

	Follow DW_AT_abstract_origin and add missing mangled name
	* src/abg-dwarf-reader.cc (build_function_decl): Change signature
	to take function_decl to which one shall add properties that got
	added by subsequent DIEs later.
	(build_class_type_and_add_to_ir): Adjust.
	(build_function_decl): Allow adding new properties to an existing
	function_decl.  Add the mangled name in particular.
	* tests/data/test-read-dwarf/test1.abi: Update test.

2014-03-20  Dodji Seketeli <dodji@redhat.com>

	Fix destructor naming.
	* src/abg-ir.cc (function_decl::get_pretty_representation): In
	DWARF at least, the destructor function name already contains the
	'~'.  No need to add it.

2014-03-20  Dodji Seketeli <dodji@redhat.com>

	Better static function determination heuristic
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Better
	heuristic.

2014-03-20  Dodji Seketeli <dodji@redhat.com>

	Dynamically wire class_decl::base_spec hashing
	* include/abg-ir.h (decl_base::get_hash): Make this virtual.
	(class_decl::base_spec::get_hash): Declare a new virtual overload.
	* src/abg-ir.cc (class_decl::base_spec::get_hash): Define.

2014-03-20  Dodji Seketeli <dodji@redhat.com>

	Slight indentation fix in the diff report
	* src/abg-comparison.cc (class_diff::report): Indentation fix for
	member function changes report.

2014-03-20  Dodji Seketeli <dodji@redhat.com>

	Get rid of class_decl::member_function
	* include/abg-fwd.h (is_member_function)
	(get_member_function_is_{ctor,dtor,const})
	(get_member_function_vtable_offset): New function declarations.
	* include/abg-ir.h (class_decl::member_function): Remove.
	(class_decl::member_functions): Adjust.  This is now just a vector
	of method_decl_sptr.
	(class_decl::add_member_function): Remove the overload taking
	class_decl::member_function.  Adjust the other overload to take a
	method_decl_sptr.
	(class mem_fn_context_rel): New class.
	(class_decl::method_decl::set_scope): New virtual overload.
	(class_decl::member_function): Remove.
	(operator==): Remove the overload taking a
	class_decl::member_function.
	(class_decl::member_function::hash): Remove.
	(ir_node_visitor::visit): Remove the overload taking a
	class_decl::member_function.
	* include/abg-comparison.h (changed_member_function_sptr)
	(string_member_function_sptr_map): Adjust.
	* src/abg-comparison.cc (represent): Adjust the overload taking a
	class_decl::member_function to take a class_decl::method_decl.
	(class_diff::{report, ensure_lookup_tables_populated}): Adjust.
	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
	overload taking a class_decl::member_function.
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
	Adjust.
	* src/abg-hash.cc (decl_base::hash::operator()): Use the fully
	qualified name of the decl in the hash, to increase the likelihood
	of avoiding hash collisions.
	(method_type::hash::operator()): Likewise.
	(function_decl::hash::operator()): Take member functions in
	account.
	(class_decl::member_function::hash::operator()): Remove.
	(class_decl::hash::operator()): Adjust.
	(type_base::dynamic_hash::operator()): Adjust.
	* src/abg-ir.cc (is_member_function)
	(get_member_function_is_{ctor,dtor,const})
	(get_member_function_vtable_offset): New function definitions.
	(function_decl::get_pretty_representation): Adjust.
	(function_decl::operator): Take member functions in account here.
	(class_decl::insert_member_decl): Adjust.
	(mem_fn_context_rel::~mem_fn_context_rel): New definition.
	(class_decl::member_function::*): Remove.
	(class_decl::method_decl::set_scope): New definition.
	(class_decl::get_num_virtual_functions): Adjust.
	(class_decl::add_member_function): Remove overload taking a
	class_decl::member_function.  Define a new overload taking a
	class_decl::method_decl.
	(ir_node_visitor::visit): Remove the overload taking a
	class_decl::member_function.
	* src/abg-reader.cc (build_class_decl): Adjust.
	* src/abg-writer.cc (write_voffset, write_class_decl): Adjust.

2014-03-19  Dodji Seketeli <dodji@redhat.com>

	Get rid of class_decl::data_member
	* include/abg-fwd.h (has_scope): Delete the overloads for
	type_base.
	(get_member_is_static): Add an overload for decl_base*.
	({is,get,set}_data_member,{get_,set}_data_member_is_laid_out)
	({get,set}_data_member_offset): New access declarations.
	* include/abg-ir.h (class context_rel): Move up.
	(decl_base::set_context_rel): New definition.
	(class dm_context_rel): New type.
	(decl_base::hash_as_member): Remove.
	(var_decl::set_scope): Declare new virtual member.
	(class_decl::data_member): Remove.
	(ir_node_visitor::visit): Remove the overload for
	class_decl::data_member.
	(represent_data_member): Remove the represent overload for
	class_decl::data_member into this.  Make it take a var_decl.
	(represent): Change the overload that takes two
	class_decl::data_member take two var_decl.  And adjust it.
	(class_diff::report): Adjust.
	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
	overload that takes a class_decl::data_member*.  Adjust the
	overload that takes a var_decl to recognize (static) data members.
	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
	(build_class_type_and_add_to_ir, build_ir_node_from_die):
	Adjust.
	* src/abg-hash.cc (var_decl::hash::operator()): Adjust.
	(class_decl::data_member::hash::operator()): Remove.
	(decl_base::hash::operator()): Take the context relationship in
	account here.
	(decl_base::hash_as_member::operator()): Remove.
	({enum_type_decl,typedef_decl}::hash::operator()): Adjust.
	(class_decl::member_function::hash::operator()): Adjust.
	(type_base::dynamic_hash::operator()): Adjust.
	* src/abg-ir.cc (dm_context_rel::~dm_context_rel): New definition.
	(has_scope): Remove overload for type_base.
	(get_member_is_static): New overload for decl_base*.
	(is_data_member): New function definition.
	({get,set}_data_member_{offset,is_laid_out}): Define new
	accessors.
	(var_decl::set_scope): Define new member function.  Make this set
	a dm_context_rel as the context relationship.
	(var_decl::operator==): Adjust to take in account the new data
	member relationship.
	(class_decl::class_decl): Adjust.
	(class_decl::insert_member_decl): Adjust.
	(class_decl::add_data_member): Remove the overload for
	class_decl::data_member.
	(class_decl::add_data_member): Adjust the overload for var_decl.
	(operator==): Remove overload for class_decl::data_member*.
	(class_decl::data_member::operator==): Likewise.
	(ir_node_visitor::visit): Remove overload for
	class_decl::data_member.
	* src/abg-writer.cc (write_layout_offset, write_class_decl):
	Adjust.
	* tests/data/test-read-write/test20.xml: Adjust.

2014-03-18  Dodji Seketeli <dodji@redhat.com>

	Better base class diff reporting
	* include/abg-comparison.h (class base_diff): New.
	* include/abg-ir.h (function_decl::get_first_non_implicit_parm):
	New member function.
	(function_type::get_first_non_implicit_parm): Likewise.
	* src/abg-comparison.cc (base_has_changed): Change parm to take
	class_decl::base_spec_sptr.
	(class_diff::ensure_lookup_tables_populated): Compare the base
	specs not just the base classes.
	(class_diff::report): Adjust.  Report sub-type changes in the
	member functions.
	(base_diff::*): Define member functions.
	(compute_diff): Define an overload for base_diff_sptr.
	* src/abg-hash.cc ({function_type,
	method_type}::hash::operator()): Do not hash the implicit parm of
	member functions.
	(class_decl::hash::operator()):  Do not hash member types.
	* src/abg-ir.cc (decl_base::decl_base): Initialize the
	hashing_started_ member that got moved here from class_decl.
	(decl_base::get_hash): Do not set the hash if it's being set b/c
	we are in a class_decl.
	(decl_base::operator==) Do not compare hashes for now.  Two decls
	can have different hashes and compare equal; think about an
	incomplete type foo, that compares equal with a complete foo.
	Their hashes will be different though.  So for now, just avoid
	comparing these.
	(compare_function_types): Avoid comparing the implicit parameter
	for member functions.
	({function, method}_type::get_first_non_implicit_parm): New
	definition.
	* tests/data/test-read-write/test20.xml: Update.

2014-03-13  Dodji Seketeli <dodji@redhat.com>

	Do not report change in typedef underlying type is there is none
	* src/abg-comparison.cc (typedef_diff::report): Do not forget to
	check the length of the diff of the underlying type before sending
	its diff report down the wire.

2014-03-13  Dodji Seketeli <dodji@redhat.com>

	Avoid hashing a access & static-ness of member types twice
	* src/abg-hash.cc (class_decl::hash::operator()): Do hash the
	'member' part of the member types here, it has been hashed
	already.

2014-03-13  Dodji Seketeli <dodji@redhat.com>

	Set class {size,loc} when adding members to a decl-only class
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
	forget to set class size and location when adding members to a
	declaration-only class, turning it into a definition class.

2014-03-13  Dodji Seketeli <dodji@redhat.com>

	Use the same representation for member and non-member types
	* include/abg-fwd.h (is_at_class_scope): Add new oveloads.
	(as_non_member_type, as_non_member_class_decl): Remove.
	(has_scope, is_member_decl, is_member_type): New function
	declarations.  (get_member_is_static, set_member_is_static):
	Likewise.  * include/abg-ir.h (enum access_specifier): Move to
	the abigail:: namespace, from ...
	(class_decl::access_specifier): ... here.  (class
	context_rel): New type.  (decl_base::hash_as_member): New
	hasher.  (decl_base::context_): Change the type of this to
	context_rel_sptr.  (decl_base::get_context_rel): New protected
	getter.  (decl_base::get_scope): Move this out-of-line.
	(class_decl::member_type): Remove.
	(class_decl::member_types): Adjust this typedef.
	(class_decl::{insert,add}_member_type): Make these take a
	type_base_sptr now.  (class_decl::add_member_type): Change the
	overload that returned a member_type to return a
	type_base_sptr.  (get_member_access_specifier,
	set_member_access_specifier): New function declarations.  *
	include/abg-comparison.h (class member_type_diff): Remove.
	(compute_diff): Remove the overload for member_type_diff.  *
	src/abg-comparison.cc (compute_diff_for_types): Adjust for the
	removal of class_decl::member_type.
	(maybe_report_diff_for_class_members): New static function.
	(report_name_size_and_alignment_changes): Do not report a name
	change just because of a struct -> class change.  ({var_diff,
	enum_diff, function_decl_diff}::report): Use the new
	maybe_report_diff_for_class_members.  (class_diff::report):
	Adjust for the removal of class_decl::member_type.  Use the
	new maybe_report_diff_for_class_members.  (class member_diff):
	Remove.  * src/abg-dwarf-reader.cc (die_access_specifier)
	(get_scope_for_die, build_translation_unit_and_add_to_ir)
	(build_class_type_and_add_to_ir, build_function_decl)
	(build_ir_node_from_die): Adjust.  * abg-hash.cc (struct
	decl_base::hash_as_member): Define.  ({scope_type_decl,
	enum_type_decl, typedef_decl}::hash::operator()): Use the
	decl_base::hash_as_member.
	* src/abg-ir.cc (decl_base::decl_base): Adjust.
	(decl_base::get_scope): New out-of-line getter.
	(decl_base::{operator==, set_scope): Adjust.
	(has_scope, is_member_decl, is_member_type)
	(get_member_access_specifier, set_member_access_specifier)
	(get_member_is_static, set_member_is_static, is_at_class_scope):
	New function definitions.
	(as_non_member_type, as_non_member_class_decl): Remove.
	(get_node_name): Adjust.
	(class_decl::{class_decl, set_earlier_declaration,
	insert_member_decl, insert_member_type, add_member_type):
	Likewise.
	(class_decl::member_type::*) Remove.
	* src/abg-reader.cc (read_access, build_qualified_type_decl)
	(build_reference_type_def, build_typedef_decl)
	(build_class_decl): Adjust.
	* src/abg-writer.cc (write_access, write_member_type)
	(write_class_decl): Likewise.

2014-03-12  Dodji Seketeli <dodji@redhat.com>

	Avoid more static_casts in the (comparison) code
	* src/abg-ir.cc (class_decl::insert_member_type, operator==):
	Remove static_casts.
	(class_decl::member_type::operator==): Likewise.
	(class_decl::member_class_template::operator==): Likewise.

2014-03-12  Dodji Seketeli <dodji@redhat.com>

	Allow adding members to decl-only classes making them defined classes
	* include/abg-fwd.h (lookup_type_in_scope)
	(lookup_var_decl_in_scope): New declarations.
	* include/abg-ir.h (class_decl::get_is_declaration_only): Rename
	is_declaration_only on this.
	(class_decl::set_is_declaration_only):
	* src/abg-comparison.cc (try_to_diff<class_decl>)
	(class_diff::ensure_lookup_tables_populated)
	(scope_diff::ensure_lookup_tables_populated): Update for the
	get_is_declaration_only renaming.
	* src/abg-dwarf-reader.cc (get_scope_for_die): Likewize.
	(build_class_type_and_add_to_ir): Make sure that a member type or
	data member is not already present in the class before adding it.
	Also, if a decl-only class gets a data member, it's not a
	decl-only class anymore.
	* src/abg-hash.cc (class_decl::hash::operator()): Update for the
	get_is_declaration_only renaming.
	* src/abg-ir.cc (scope_decl::find_iterator_for_member)
	(look_through_decl_only_class): Likewise.
	(lookup_type_in_scope, lookup_var_decl_in_scope, get_node_name)
	(convert_node_to_decl, lookup_node_in_scope)
	(lookup_type_in_scope): New definitions.
	(class_decl::{set_definition_of_declaration,
	set_earlier_declaration, operator==}): Update for the
	get_is_declaration_only renaming.
	* src/abg-reader.cc (build_class_decl): Likewise.
	* src/abg-writer.cc (write_class_is_declaration_only): Likewise.

2014-03-12  Jonathan Wakely <jwakely@redhat.com>

	Fixed typos in abg-diff-utils.h
	* include/abg-diff-utils.h (compute_diff): Fix typos in the API
	doc.

2014-03-11  Dodji Seketeli <dodji@redhat.com>

	Initialize a variable
	* tools/bilint.cc (main): Initialize the 'r' variable.

2014-03-11  Dodji Seketeli <dodji@redhat.com>

	Do not declare classes before defining them anymore
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
	declare classes before defining them because both the declaration
	and the definition now compare equal.
	* tests/data/test-read-dwarf/test1.abi: Update test.
	* tests/data/test-read-write/test20.xml: Likewise.

2014-03-11  Dodji Seketeli <dodji@redhat.com>

	Little style fix
	* src/abg-comparison.cc (class_diff::report): Slight style fix.

2014-03-10  Dodji Seketeli <dodji@redhat.com>

	Better support for decl-only classes in diffing and comparison
	* include/abg-fwd.h (look_through_decl_only_class): New function
	declaration.
	* src/abg-comparison.cc (class_diff::length): Just compare the two
	classes.
	(compute_diff): Look through the two classes if they are
	decl-only, and use their declaration for the diffing.
	* src/abg-ir.cc (look_through_decl_only_class): Define this new
	entry point.
	(class_decl::set_definition_of_declaration): Allow setting a
	definition that is itself a declaration-only.
	* src/abg-writer.cc (write_class_decl): Declaration-only can now
	have members, namely member types.

2014-03-10  Dodji Seketeli <dodji@redhat.com>

	Fix comparison wrt hash number
	* src/abg-ir.cc (decl_base::operator==): Do not consider empty
	hashes.
	(class_decl::operator==): Better support for comparing decl-only
	classes against non-decl-only classes.

2014-03-10  Dodji Seketeli <dodji@redhat.com>

	Better support of class DIEs with DW_AT_specification
	* src/abg-dwarf-reader.cc (get_scope_for_die): The definition of a
	declaration-only class can be NULL.  Do not look through in that
	case.
	(build_class_type_and_add_to_ir): Support adding class members to
	an existing class.
	(build_ir_node_from_die): If a class DIE has a DW_AT_specification,
	get the specification DIE, get its matching IR node and add the
	current members of the current DIE to that IR node.

2014-03-10  Dodji Seketeli <dodji@redhat.com>

	Tell struct and class apart
	* include/abg-ir.h (class_decl::is_struct_): New member.
	(class_decl::class_decl): Take an additional is_struct member.
	(class_decl::is_struct): New getter.
	* src/abg-ir.cc (class_decl::class_decl): Initialize the new
	is_struct_ data member.
	(class_decl::get_pretty_representation): Tell struct and class
	apart.
	* abg-reader.cc (read_is_struct): New static function.
	(build_class_decl): Capture the struct-ness of the class.
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
	Likewise.
	* src/abg-writer.cc (write_is_struct): New static function.
	(write_class_decl): Write the struct-ness of the class.
	* tests/data/test-read-dwarf/test1.abi: Update test.

2014-03-06  Dodji Seketeli <dodji@redhat.com>

	Fix typedef_diff emptyness detection
	* src/abg-comparison.cc (typedef_diff::length): Do not mask away the
	dynamic type of the typedef_decl before the comparison.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Add --drop/--keep options to bidiff
	* include/abg-sptr-utils.h: New file.
	* include/Makefile.am: Add abg-sptr-utils. to the build system.
	* include/abg-libxml-utils.h (reader_sptr, xml_char_sptr): Remove
	these typedefs as there are now in abg-sptr-utils.
	(build_sptr): Likewise for this template and its specializations
	declarations.
	* src/abg-libxml-utils.cc (sptr_utils::build_sptr): Mode the
	definition of the specializations for xmlTextReader and xmlChar
	into the sptr_utils namespace.
	* include/abg-corpus.h
	(corpus::{get_regex_patterns_of_fns_to_suppress,
	get_regex_patterns_of_vars_to_suppress,
	get_regex_patterns_of_fns_to_keep,
	get_regex_patterns_of_vars_to_keep}): Declare new member
	functions.
	* src/abg-comparison.cc (sptr_utils::regex_t_deleter): Define new
	functor.
	(build_sptr) Define new specialization for regex_t.
	(struct array_deleter): Remove unused functor.
	(corpus::priv::regex_patterns_{fns,vars}_to_{suppress,keep}): New data
	members.
	(symtab_build_visitor_type::regex_patterns_{fns,vars}_to_{suppress,keep}):
	Likewise.
	(symtab_build_visitor_type::r_{fns,vars}_{suppress,keep})):
	Likewise.
	(symtab_build_visitor_type::symtab_build_visitor_type): Update the
	signature of this constructor to take regex patterns for functions
	and variables to suppress and to keep.  Also, initialize the data
	members from these new parameters.
	(symtab_build_visitor_type::regex_{fns,vars}_{suppress,keep}): New
	member functions.
	(symtab_build_visitor_type::{add_fn_to_wip_fns,
	add_var_to_wip_vars}): Likewise.
	(symtab_build_visitor_type::visit) Use either add_fn_to_wip_fns or
	add_var_to_wip_vars depending on the overload of the visit()
	member.
	(corpus::priv::build_symbol_table): Update for the change of the
	symtab_build_visitor_type constructor signature.
	(corpus::get_regex_patterns_of_{fns,vars}_to_{suppress,keep}):
	Define new member functions.
	* tools/bidiff.cc (options::{drop,keep}_{fn,var}_regex_patterns}):
	New data member.
	(display_usage): Add help strings for --drop, --drop-fn,
	--drop-var, --keep, --keep-fn, --keep-var
	(parse_command_line): Parse the command lines above.
	(set_corpus_keep_drop_regex_patterns): Define new static function.
	(main): Use the new set_corpus_keep_drop_regex_patterns.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Style fix in the dwarf reader
	* src/abg-dwarf-reader.cc (die_is_public_decl): Rename
	is_public_decl into this.
	(die_is_declaration_only): Rename is_declaration_only into this.
	(build_class_type_and_add_to_ir, build_var_decl)
	(build_function_decl): Adjust for the renames above.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Skip artificial (member) functions from DWARF
	* src/abg-dwarf-reader.cc (die_is_artificial): New static
	function.
	(build_class_type_and_add_to_ir, build_ir_node_from_die): Use the
	die_is_artificial function to test if the function DIE is
	artificial and then skip it.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix function parameter addition/deletion/change detection
	* include/abg-ir.h (function_decl::parameter::get_name_id):
	Declare new entry point.
	* src/abg-comparison.cc
	(function_decl_diff::ensure_lookup_tables_populated): Use the new
	function_decl::parameter::get_name_id() for the unique name of the
	parameter.  Also, fix a little logic error: if a parm is deleted
	and inserted, in all cases, consider it as not deleted.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Add a --stat option to bidiff
	* include/abg-comparison.h (diff_context::show_stats_only):
	Declare new accessors.
	* src/abg-comparison.cc
	(diff_context::priv::show_stats_only_): New member.
	(diff_context::show_stats_only): Define new accessors.
	(corpus_diff::report): If showing stats only, quit right after
	showing the summary.
	* tools/bidiff.cc (options::show_stats_only): New data member.
	(options::options): Initialize the new data member.
	(display_usage): Add help string for --stat.
	(parse_command_line): Parse the --stat option.
	(set_diff_context_from_opts): Update to set the show_stats_only
	onto the context.  Cleanup the logic to make it more compact.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Report about functions of different names
	* src/abg-comparison.cc (function_decl_diff::report): Consider the
	case of functions with different names.  This doesn't happen in
	the current pipeline b/c they just show up as deleted/added
	functions so the function reporter doesn't see them as they have
	been already reported by now.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix length calculation for type diffs.
	* src/abg-comparison.cc (diff_length_of_type_bases): Fix stupid
	harmful thinko here.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix calculation of the length of distinct_diff
	* src/abg-comparison.cc (distinct_diff::length): Also perform a
	deep comparison here.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix diff length calculation for typedef diffs
	* src/abg-comparison.cc (typedef_diff::length): Just use
	comparison for this.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix layout of diff summary
	* src/abg-comparison.cc
	(corpus_diff::priv::emit_corpus_diff_stats): Remove useless
	vertical and horizontal white spaces.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix indentation of pieces of class diff report
	* src/abg-comparison.cc (represent, class_diff::report): Fix
	indentation.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Fix detection of entities of different kinds for diff purposes
	* src/abg-comparison.cc
	(distinct_diff::entities_are_of_distinct_kinds): Consider two NULL
	decls are distinct types for the purpose of diffing.  This is just
	a shortcut to avoid creating a null_diff type for now.  But then,
	stop considering same pointers as different.  This was a bug.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Constify function_decl::parameter::get_type_pretty_representation()
	* include/abg-ir.h
	(function_decl::parameter::get_type_pretty_representation): This
	is now const.

2014-02-28  Dodji Seketeli <dodji@redhat.com>

	Improve API doc for the location machinery
	* include/abg-ir.h (class location): Improve doc.
	(decl_base::{get,set}_location): Likewise.

2014-02-26  Dodji Seketeli <dodji@redhat.com>

	Remove useless dynamic cast
	* src/abg-ir.cc (class_decl::insert_member_decl): Remove useless
	dynamic cast from here.

2014-02-26  Dodji Seketeli <dodji@redhat.com>

	Insert reference, pointers and qual types at their declaration point
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Insert
	reference, pointers and qualified types at the point where we see
	them, in their scope, rather than under the scope of their
	underlying type.  This is because their might be first declared as
	member types and we don't want to loose that information.

2014-02-24  Dodji Seketeli <dodji@redhat.com>

	Fix documentation for the diff_utils namespace
	* include/abg-diff-utils.h (namespace diff_utils): Add comment.
	(compute_diff): Update comments for some overloads where they were
	missing.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): use
	as_non_member_class_decl rather that complicated casting.
	src/abg-ir.cc (var_decl::get_pretty_representation): Use
	get_type_declaration rather than casting.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Fix a glitch in member data diff reporting
	* src/abg-comparison.cc (represent): Do not forget the "'" around
	the access specifier.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Proper support for diffing member types
	* include/abg-comparison.h (class member_type_diff): New class.
	(member_type_diff_sptr): New convenience typedef.
	(compute_diff): New overload for member_type_diff.
	* src/abg-comparison.cc (struct member_type_diff::priv): New
	definition.
	(member_type_diff::{first_member_type, second_member_type,
	underlying_type_diff, length}): New member function definitions.
	(compute_diff): New definition for member type diffs.
	(compute_diff_for_types): Support diffing
	member types.
	(class_diff::report): Do not use strip member types now that we
	can properly diff them.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Fix the support for printing cv-qualified names
	* include/abg-ir.h (decl_base::{location_, name_,
	qualified_parent_name_, qualified_name_}): Make these data members
	protected rather than private.
	(decl_base::get_qualified_parent_name): Declare new member
	functions.
	(decl_base::get_qualified_name): Make the core overload virtual.
	Simplify the other overload that calls the core one.
	(qualified_type_def::build_name): Declare new protected helper
	function.
	(qualified_type_def::{get_cv_quals_string_prefix,
	get_qualified_name}): Declare new functions.
	(pointer_type_def::{get_qualified_name}}): Likewise.
	(class_decl::member_type::get_qualified_name): Likewise.
	* src/abg-ir.cc (decl_base::get_qualified_parent_name): New
	definition.
	(decl_base::get_name): Make this out-of-line.
	(decl_base::get_qualified_name): The signature of this got
	simplified.  Make it use the new get_qualified_parent_name.
	(qualified_type_def::{build_name, get_qualified_name,
	get_cv_quals_string_prefix}): New definitions.
	(qualified_type_def::qualified_type_def): Update the constructor
	to use the new build_name function above.
	(pointer_type_def::get_qualified_name): New definitions.
	(reference_type_def::get_qualified_name): Likewise.
	(class_decl::member_type::get_qualified_name): Likewise.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Misc style fix
	* src/abg-comparison.cc (represent): Remove useless curly braces
	and vertical spaces.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Support DW_AT_specification on class/struct DIEs
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Support
	DW_AT_specification on DW_TAG_{class,structure}type.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Avoid comparing member types and class templates
	* src/abg-comparison.h (compute_diff): For class_decl_sptr, do not
	compare member types and member class templates.  This adds a lots
	of noise that is not necessarily useful for now.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Update tests.
	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Fix the report of added/removed function parameters
	* src/abg-comparison.cc
	(function_decl_diff::priv::{inserted_parms_, removed_parms_}):
	Remove these.
	(function_decl_diff::ensure_lookup_tables_populated): Fix thinko.
	Avoid using the members removed above.  Use one less loop to
	update the changed params.
	(function_decl_diff::report): Avoid using the removed_parms_
	data member that was removed above.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Put the setter of access specifiers in class_decl::member_base
	* include/abg-ir.h
	(class_decl::member_base::set_access_specifier): Put the setter
	for access specifier here, where it belongs ...
	(class_decl::member_type::set_access_specifier): ... not here.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	First approach to avoid duplication of IR nodes for forward-declared classes
	* src/abg-dwarf-reader.cc (is_declaration_only): Put this back (I
	removed it earlier).
	(build_class_type_and_add_to_ir): If the class is a
	declaration-only (a forward declaration), do not add a new
	declaration only IR node.

2014-02-21  Dodji Seketeli <dodji@redhat.com>

	Do not forget to set the indexes of fn parms
	* include/abg-ir.h (function_type::function_type): In the
	constructor that takes a vector of parms, walk the vector and set
	the indexes of the parms.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Misc diff reporting output cleanup
	* src/abg-comparison.cc (function_decl_diff::report): Do not talk
	about changed function anymore.  Rather, say that some indirect
	sub-types changed in the function.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Do not forget some member types/functions we built IR nodes for
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
	Associate the member type IR node to the offset of the die of the
	member type.
	(build_ir_node_from_die): For a DW_TAG_subprogram DIE that has a
	DW_AT_specification pointing to another subprogram DIE, associate
	the offset of this DIE to the IR node of that other DIE.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Better support of static member variables
	* include/abg-fwd.h (fqn_to_components)
	(lookup_type_in_translation_unit, demangle_cplus_mangled_name):
	Declare new public entry points
	* src/abg-comparison.cc (corpus_diff::report): Report stuff about
	global variables using their mangled name, and demangle them.  If
	there is no mangled name for the variable, then use its pretty
	representation.
	(compute_diff): For the corpus overload, compare global variables
	using their mangled name, if its available; otherwise, fall back
	to using their pretty representation.
	* src/abg-corpus.cc (var_comp::operator()(const var_decl*,
	const_var_decl*)): Compare variables using their mangled name in
	priority.  If it's not available then use their pretty
	representation.
	* src/abg-dwarf-reader.cc
	(read_context::var_decls_to_re_add_to_tree): New accessor.
	(build_translation_unit_and_add_to_ir): If there is what appears
	to be a definition of a static member variable variable -- this is
	in case this definition lacks the DW_AT_specification attribute
	that links it to the DW_TAG_member or DW_TAG_variable DIE that is
	a child of the right class/structure DIE -- that is not at the
	right place in the DIE tree, remove it from the its current place
	in the tree and try to hang it off of the right DIE.  To do this,
	de-mangle its mangled name, look at what is supposed to be the
	parent class name, look it up in the translation unit IR, and if
	found, stick the variable IR node in there, as a static member
	variable.  If not found, then bad luck.
	(build_class_type_and_add_to_ir): Do not try to see if a member
	variable is static here as the way I was doing it was unreliable.
	Build the data member node directly w/o going through building a
	variable node first.  Register the data member in the die offset
	-> IR node map.
	(build_ir_node_from_die): When seeing DW_TAG_variable, look for a
	DW_AT_specification attribute.  If there is one, then it points to
	a the DIE of a data member and means that data member is static.
	Flag the IR node of that data member as static thus.  Update the
	die offset -> IR node map.  If there is no DW_AT_specification
	attribute or if it doesn't point to a data member DIE, schedule
	this variable tag for a stage when after the whole IR is built for
	the translation unit, the variable's mangled named is inspected,
	its hypothetical parent struct/class is looked up and the variable
	IR node is put into the node of the right struct/class IR node.
	* src/abg-ir.cc (enum lookup_entity_kind): New.
	(fqn_to_components, iterator, lookup_type_in_translation_unit)
	(lookup_node_in_translation_unit, lookup_type_in_translation_unit)
	(demangle_cplus_mangled_name): New function definitions.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Shorten an accessor name in the DWARF reader
	* src/abg-dwarf-reader.cc (read_context::cur_tu): Rename
	read_context::current_translation_unit into this.
	(read_context::current_scope, die_location)
	(build_translation_unit_and_add_to_ir, build_enum_type)
	(build_function_decl): Adjust wrt the change above.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Unset decl scope when removing the decl from its scope
	* src/abg-ir.cc (remove_decl_from_scope): Unset the scope of the
	decl.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Support adding data member from var_decl
	* src/abg-ir.cc (class_decl::insert_member_decl):  Support taking
	a var_decl.
	(class_decl::add_data_member): Do not insert a data member twice.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Fix qualified type pretty printing
	* src/abg-ir.cc (qualified_type_def::qualified_type_def): Remove
	useless white space.

2014-02-19  Dodji Seketeli <dodji@redhat.com>

	Add class_decl::member_base::set_is_static() accessor
	* include/abg-ir.h (class_decl::member_base::get_is_static):
	Rename is_static into get_is_static.
	(class_decl::member_base::set_is_static): New accessor.
	* src/abg-comparison.cc (represent): Adjust for
	class_decl::member_base::is_static -> get_is_static.
	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Likewise.
	src/abg-hash.cc (class_decl::member_function::hash::operator()):
	Likewise.
	* src/abg-ir.cc (class_decl::member_base::operator==): Likewise.
	* src/abg-writer.cc (write_class_decl): Likewise.

2014-02-13  Dodji Seketeli <dodji@redhat.com>

	Fixes needed to diff libstdc++ v4_4 against master
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): Support several
	instances of the same member function being deleted.  That can
	happen when the same member function was present in the initial
	class several times.  Yeah, I've seen that in dwarf.
	* src/abg-corpus.cc (corpus::priv::build_symbol_table): Do not add
	the same variable (identified by its mangled name) twice in the
	variable symbol table.

2014-02-13  Dodji Seketeli <dodji@redhat.com>

	Fix wrong deleted functions count when diffing corpora
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): If a function
	has changed, deleted it from the list the removed functions.

2014-02-13  Dodji Seketeli <dodji@redhat.com>

	Several fixes needed to read libstdc++.so
	* src/abg-reader.cc (read_context::map_id_and_node): Allow
	duplicated class and basic type declarations.
	(build_type_decl): Allow duplicated type decls.
	(build_qualified_type_decl, build_pointer_type_def)
	(build_reference_type_def): As there can be several distinct
	duplicated types, compare them by value.
	(build_class_decl): There can be duplicated class decls.
	* src/abg-writer.cc (write_enum_type_decl): The name of the enum
	needs to be xml-escaped.

2014-02-12  Dodji Seketeli <dodji@redhat.com>

	qualified, pointer and reference types can be member types
	* src/abg-reader.cc (build_qualified_type_decl)
	(build_pointer_type_def, build_reference_type_def): Consider that
	these types can be member types.

2014-02-12  Dodji Seketeli <dodji@redhat.com>

	Consider two typedefs with different names to be different
	* src/abg-ir.cc (typedef_decl::operator==): Consider two typedefs
	with different names to be different.

2014-02-12  Dodji Seketeli <dodji@redhat.com>

	Really Avoid trying to build IR nodes for non-public functions
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
	DW_TAG_subprogram case, bail out early if the current function is
	non-public.

2014-02-12  Dodji Seketeli <dodji@redhat.com>

	Add --{changed,deleted,added}-{fns,vars} options to bidiff
	* include/abg-comparison.h
	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Declare
	new accessors.
	(corpus_diff::context): Declare new getter.
	* src/abg-comparison.cc
	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Define
	these new accessors.
	(corpus_diff::priv::emit_corpus_diff_stats): Define new function.
	(corpus_diff::context()): Define new getter.
	(corpus_diff::report): Use the new
	corpus_diff::priv::emit_corpus_diff_stats to emit diff stats at
	the beginning of the report.  Conditionalise emitting the
	different parts of the reports (changed,deleted,added stuff) on
	the values of the new properties that were just added.
	* tools/bidiff.cc
	(options::{show_{deleted,changed,added}_{fns,vars}): New
	properties.
	(display_usage, parse_command_line): Update for the newly added
	--{changed,deleted,added}-{fns,vars} command line options.
	(set_diff_context_from_opts): Define new static function.
	(main): Create a diff context, initialize it from the options
	(using set_diff_context_from_opts) and pass it to compute_diff.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	Add --show-symtabs to bidiff
	* tools/bidiff.cc (display_usage): Update usage string.
	(parse_command_line): Recognize the --show-symtab cmdline option.
	(display_symtabs): New static function.
	(main): Call the new display_symtabs.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	Harden class_decl node traversal code
	* src/abg-ir.cc (class_decl::traverse): Add a few asserts here and there.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	Fix the pretty representation for member functions
	* src/abg-ir.cc (function_decl::get_pretty_representation): Fix
	this to properly display the representation of member functions.
	* tests/data/test-bidiff/test-enum0-report.txt: Update this.
	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	Do not forget to traverse member types
	* include/abg-ir.h (class_decl::member_type::traverse): Declare new virtual
	function.
	(ir_node_visitor::visit): Declare new virtual function
	* src/abg-ir.cc (class_decl::member_type::traverse): Implement the
	traversal of a member type.
	(ir_node_visitor::visit): Provide a default implementation for the
	visitor of member type.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	From DWARD, avoid adding IR nodes for member functions twice
	* include/abg-fwd.h (as_non_member_class_decl): Declare new overload.
	* src/abg-ir.cc (as_non_member_class_decl): Define new overload.
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Add
	member functions to the DIE -> IR Node map.
	(build_ir_node_from_die): Assert that DW_TAG_subprogram cannot be
	for a member function here because getting the scope of the member
	function would have constructed the entire class that contains it,
	including the member function.  Then, calling
	build_ir_node_from_die for the DIE of the member function would
	find the already IR Node in the DIE -> IR Node map.

2014-02-11  Dodji Seketeli <dodji@redhat.com>

	Fix access specifiers value
	* include/abg-ir.h (class_decl::enum access_specifier): Give the enumerators
	the same values as what the DWARF spec says.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Misc diff report cleanups
	* include/abg-ir.h (function_decl::parameter::get_type_name): Add
	comment.
	(function_decl::parameter::get_type_pretty_representation): New
	member fn.
	* src/abg-comparison.cc (represent): When representing changed
	members, use their pretty representation.
	(function_decl_diff::{ensure_lookup_tables_populated, report}): Use the
	pretty representation of parameters type.
	(typedef_diff::report): Enclose the underlying type in "'".
	(corpus_diff::report): Add proper spacing.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Re-organize the output of diffing two corpora
	* src/abg-comparison.cc (corpus_diff::report): Emit
	information about the number of added/removed/changed
	functions.  If the report is big, prefix any added
	function with '[A]' deleted function with '[B]'.  Also,
	fix indentation.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Support diffing entities of different kinds.
	* include/abg-comparison.h (class distinct_diff): Declare new
	type.
	(compute_diff_for_distinct_kinds): Declare new function.
	* src/abg-comparison.cc (distinct_diff::{distinct_diff, first,
	second, entities_are_of_distinct_kinds, length, report}): Define
	new member functions.
	(compute_diff_for_distinct_kinds, try_to_diff_distinct_kinds):
	Define new function.
	(compute_diff_for_types, compute_diff_for_decls): Support diffing
	entities of different kinds.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Avoid recursive comparison on class_decl & perform some optimizations
	* src/abg-ir.cc (class_decl::operator==(const decl_base& other)
	const): Bail out early in case of recursive comparison, or if type
	hashes are different.  Do not try to compute qualified name unless
	it's really necessary.  The optimizations part of this change were
	hinted by profiling.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Handle the DIE for a fn that has a 'specification' attribute
	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
	DW_TAG_subprogram case, if the function has a DW_AT_specification
	attribute, build the IR node for the specification DIE instead.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Add an assert in the dwarf reader
	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
	Assert that the result of build_function_decl on a member function
	is a method_decl.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Do not forget that build_ir_node_from_die can return member types
	* src/abg-dwarf-reader.cc (get_scope_for_die): Handle member class
	types.
	(build_function_decl): Likewise.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	A member function can have an empty mangled name
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): If a member function
	has an empty mangling name, use its pretty representation.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Remove too eager asserts
	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): Do not assert that
	the same member type cannot be deleted/inserted twice.  It
	actually can for, pointers, references, typedefs, etc.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Fix some new line handling in diff reports
	* src/abg-comparison.cc (represent): Remove extra new line after
	reporting virtual function number.
	(class_diff::report): Do not forget to emit a new line between two
	inserted functions.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Perform the diff of changed functions and variables in the right order
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): In a changed
	function or variable, do not mix up the new and old value.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Fix typo in report
	* src/abg-comparison.cc (reference_diff::report): Fix typo
	refereneced -> referenced.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Fix various crashes
	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
	const decls_type) const): Do not crash when of the decl_types is
	NULL.
	({pointer_diff, reference_diff, enum_diff}::length): Avoid
	crashing if the underlying type is NULL.
	* abg-ir.cc (function_decl::get_pretty_representation): Avoid
	crashing on member functions with empty parameter set.
	signed-off-by: Dodji Seketeli <dodji@redhat.com>

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	More optimizations hinted by profiling
	* include/abg-ir.h (decl_base::qualified_name_): New member.
	(decl_base::get_qualified_name): Cache the qualified name.
	(decl_base::get_type): Return a reference on the shared pointer.
	(method_type::get_class_type): Likewise.
	(class_decl::get_definition_of_declaration): Likewise.
	(class_decl::member_type::get_underlying_type): Likewise.
	(class_decl::base_spec::get_base_class): Likewise.
	* src/abg-ir.cc (decl_base::get_qualified_name): Implement the
	caching.
	(class_decl::member_type::get_qualified_name): Return a reference
	on the shared pointer.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Avoid crashing when getting function parm type name
	* include/abg-ir.h (function_decl::parameter::get_type_name): New
	member function.
	* src/abg-comparison.cc
	(function_decl_diff::ensure_lookup_tables_populated): Use the new
	member function above.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Small optimization hinted by profiling
	* include/abg-diff-utils.h (d_path_vec::max_d): Avoid using member
	functions.  This is relevant only when compiling w/o optimization.

2014-02-10  Dodji Seketeli <dodji@redhat.com>

	Fix allocation of diff_utils::d_path_vec
	* include/abg-diff-utils.h (d_path_vec::d_path_vec):  Do not
	forget to allocate enough data for reverse vectors as well.  The
	comment of the constructor is accurate.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* include/abg-hash.h (combine_hashes): Remove trailing white
	spaces.
	* include/abg-ir.h (class function_decl): Add end-of-class
	comment.
	(struct type_base::cached_hash): Fix comment.
	* src/abg-comparison.cc: Remove useless new line.
	* src/abg-corpus.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Support looking through decl-only classes and update diff reports accordingly
	* include/abg-comparison.h (class diff_context): New class.
	(class diff::{ctxt_, reported_once_, currently_reporting_}): New
	data members.
	(diff::diff): Initialize the new data members above.
	(diff::{context, currently_reporting, reported_once}): New
	accessors.
	(compute_diff, var_diff::var_diff, pointer_diff::pointer_diff)
	(reference_diff::reference_diff, qualified_type_diff)
	(enum_diff:enum_diff, class_diff::class_diff)
	(scope_diff::scope_diff, function_decl_diff::function_decl_diff)
	(type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
	(translation_unit_diff::translation_unit_diff, corpus_diff::corpus_diff):
	Take an additional pointer to diff_context.
	* abg-comparison.cc (diff_context::{has_diff_for,
	has_diff_for_types, add_diff}): New methods.
	(try_to_diff, compute_diff_for_types, compute_diff_for_decls)
	(represent): Take an additional pointer to
	diff_context in argument.  In the later function, do not re-report
	a diff if it has already been reported, or if it's being reported
	already.
	(var_diff::var_diff, pointer_diff::pointer_diff)
	(reference_diff::reference_diff)
	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
	(class_diff::class_diff, scope_diff::scope_diff)
	(function_decl_diff::function_decl_diff, type_decl::type_decl)
	(typedef_diff::typedef_diff)
	(translation_unit_diff::translation_unit_diff)
	(corpus_diff::corpus_diff): Take an additional pointer to
	diff_context in argument.
	({pointer_diff, qualified_type_diff,
	reference_type_diff}::report): do not re-report a diff about the
	underlying type if it has already been reported, or if it's being
	reported already.
	(enum_diff::report): Fix this to properly use the populated lookup
	tables.
	(compute_diff): take an additional pointer to diff_context in
	argument. For the var_decl, pointer_diff reference_type_diff,
	qualified_type_diff enum_diff, scope_diff, function_decl_diff,
	type_decl_diff and typedef_diff overloads, do not re-build a diff
	object, if one exits already.  Otherwise, record the new diff
	object created so that it can be re-used later.
	(enum_diff::ensure_lookup_tables_populated): Fix logic to avoid
	one loop.
	(class_decl::priv::{deleted_member_functions_,
	inserted_member_functions_, changed_member_function_}): New
	members to support reporting about member functions changes.
	(class_decl::{lookup_tables_empty, clear_lookup_tables, length):
	Update for the new additions above.
	(class_decl::ensure_lookup_tables_populated): Likewise.  Fix to
	properly use the lookup tables and also avoid a going through
	several loops to compute the changed members.
	(class_decl::report): Flip a switch to make the beginning and end
	of the reporting, in the context.  Also, do not try to report
	again, if we were already reporting this diff.  Fix quite some
	spots to properly use the lookup tables.
	(scope_diff::ensure_lookup_tables_populated): Skip decl-only
	classes during comparison. Fix some thinkos.  Fix logic to avoid a
	loop.
	(scope_diff::report): Adjust to pass a context to
	compute_diff_for_types.
	(function_decl_diff::ensure_lookup_tables_populated): Fix logic to
	avoid a loop.
	(function_decl_diff::report): Adjust call to
	compute_diff_for_types to pass the context.
	(typedef::report): Avoid re-reporting the diff of the underlying
	types, if we are already reporting it.
	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
	pretty representation of the function rather than its name to key
	the maps of deleted and added functions. Fix logic to avoid going
	through an additional loop for the changed functions.
	(corpus_diff::report): Add a title for removed/added/changed
	functions.  Fix indentation for added/removed/changed functions.
	* include/abg-ir.h (class_decl::comparison_started_): New member
	* src/abg-dwarf-reader.cc (is_public_decl): Style fix.
	(is_declaration_only_): New static function.
	(build_class_type_and_add_to_ir): Create decl-only classes (IR) for
	classes flagged as declaration-only in the DWARF.
	* src/abg-hash.cc (class_decl::hash::operator()): Do not forget to
	include the "is_declaration_only" flag into the hashing.
	* src/abg-ir.cc (class_decl::operator==): Look through decl-only
	classes to get their definitions and compare the definitions
	instead.  Avoid comparing member types and fns if the comparison
	of this type has already started.
	* src/abg-reader.cc (build_class_decl): Set the definition of a
	declaration, when we see it.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Update.
	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
	signed-off-by: Dodji Seketeli <dodji@redhat.com>

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Support reading *.bi input with duplicated qualified type ids.
	* src/abg-reader.cc (read_context::map_id_and_node): Support
	qualified types with duplicated ids.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Fix comparison of member types
	* src/abg-ir.cc (class_decl::member_type::operator==): Compare the
	underlying type of the member type.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Avoid duplicated entries in the symbol tables of the corpus
	* include/abg-ir.h ({var_decl, function_decl}::ptr_equal): New
	equality functor for pointers to var_decl and function_decl.
	({function_decl, var_decl}::hash): Make these hashing functors
	public.
	* include/abg-hash.cc (struct var_decl::hash, struct
	function_decl::hash): Remove these from here.  There are now in
	the public abg-ir.h.
	({var_decl, function_decl}::hash::operator()): Define these here.
	* src/abg-corpus.cc (symtab_build_visitor_type::{fns_map,
	fn_is_in_map, add_fn_to_map, vars_map, var_is_in_map,
	add_var_to_map}): New accessors.
	(corpus::priv::build_symbol_table): Avoid duplicated entries in
	variables and functions symbols tables.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Ease debugging of abigail::diff_utils::compute_diff
	* include/abg-diff-utils.h (compute_diff): Add asserts on for the
	length of the shortest edit script during the divide and conquer
	part of the diff algorithm.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Fix further reaching reverse path calculation in core diff algo
	* include/abg-diff-utils.h (end_of_frr_d_path_in_k_plus_delta):
	Favour moving left when the two abscissas at the previous steps
	are equal.
	(compute_diff): Update the length of the shortest edit script when
	the size of one of the inputs is zero.
	* tests/test-core-diff.cc (in_out_spec): Add a new input to diff
	two sequences for regression testing.
	* tests/data/test-core-diff/report13.txt: New reference for
	the comparison of the new regression test above.

2014-02-07  Dodji Seketeli <dodji@redhat.com>

	Add debugging facilities for core diffing issues
	* include/abg-ir.h (fns_to_str): Declare new fn.
	* src/abg-ir.cc (get_next_string, fn_to_str, fns_to_str): New
	static functions.
	(fns_to_str): Define new fn.
	* tools/abg-tools-utils.cc (dump_functions_as_string)
	(dump_function_names, compare_functions): New functions.

2014-01-20  Dodji Seketeli <dodji@redhat.com>

	Fix apidoc comment
	* src/abg-ir.cc (decl_base::operator==): Fix comment.

2014-01-20  Dodji Seketeli <dodji@redhat.com>

	Fix bilint outputting for translation units & corpus
	* tools/bilint.cc (main): Fix logic.

2014-01-20  Dodji Seketeli <dodji@redhat.com>

	Remove debugging assertion when diffing
	* include/abg-diff-utils.h (d_path_vec::at): Do not check for
	bounds.

2014-01-20  Dodji Seketeli <dodji@redhat.com>

	Do not use exceptions in dynamic_cast
	* src/abg-ir.cc (class_decl::member_function::operator==)
	(class_decl::member_function::operator==): Do not use the
	exception path for dynamic casting.  This was near the top of many
	profiles.

2014-01-20  Dodji Seketeli <dodji@redhat.com>

	Just add decls sequentially when reading from DWARF
	* src/abg-dwarf-reader.cc (insert_decl_into_ir_under_scope)
	(build_namespace_decl_and_add_to_ir, build_enum_type)
	(build_class_type_and_add_to_ir, build_ir_node_from_die)
	(build_ir_node_from_die): Remove.
	* tests/data/test-read-dwarf/test0.abi: Update because now type
	IDs can be used before they are defined.
	* tests/data/test-read-dwarf/test1.abi: Likewise.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Misc Doxygen API doc fixes
	* include/abg-comparison.h: Various doxygen api doc string fixes.
	* include/abg-diff-utils.h: Likewise.
	* include/abg-dwarf-reader.h: Likewise.
	* include/abg-ir.h: Likewise.
	* include/abg-reader.h: Likewise.
	* include/abg-writer.h: Likewise.
	* src/abg-comparison.cc: Likewise.
	* src/abg-corpus.cc: Likewise.
	* src/abg-dwarf-reader.cc: Likewise.
	* src/abg-ir.cc: Likewise.
	* src/abg-libxml-utils.cc: Likewise.
	* src/abg-reader.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Fix bilint --noout, add --diff option
	* tools/bilint.cc (options::options): Initialize ...
	(options::{diff, bidiff}): ... new members.
	(display_usage): Update the display usage string for --diff &
	--bidiff options.
	(parse_command_line): Support the --diff and --bidiff options.
	(main): Require the --diff option to actually diff the emitted
	output with input.  Make --noout really work for when reading
	from dwarf.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Read .abi files with types used before being defined & lots of fixes
	* src/abg-reader.cc (read_context::m_decls_stack): Make this is a
	std::deque, rather than a std::stack.
	(read_context::{get_id_xml_node_map,
	clear_id_xml_node_map, get_xml_node_decl_map,
	map_xml_node_to_decl, get_decl_for_xml_node,
	clear_xml_node_decl_map, map_id_and_node, get_xml_node_from_id,
	get_scope_for_node, build_or_get_type_decl}): New member
	functions.
	(read_context::{get_cur_decl, push_decl, pop_decl}): Update this
	now that the decl stack uses a std::deque.
	(read_context::clear_decls_stack): New.
	(read_context::get_translation_unit):  Use the first decl of the
	decl stack, that is most certainly the global scope of the current
	translation unit, to get the translation unit.
	(read_context::key_type_decl): Take a new flag to force the
	re-keying; that is set an id to a new type, even if the id was
	already set to a type.
	(read_context::push_and_key_type_decl): Assert that a type must
	have a declaration.
	(handle_*): Make these return the decl_base_sptr resulting from
	the parsing of the xml node, rather than just a bool.
	(walk_xml_node_to_map_type_ids): New static function.
	(read_translation_unit_from_input): Read the abi-instr xml
	sub-tree once, just to build an id->xml node map.  That way, when a
	declaration needs a type what is not yet defined, it can just get
	its XML node, build the type from it and use it.  Do not forget to
	advance the xml reader cursor when the reading of the 'abi-instr'
	sub-tree is read.  Clear all the new maps we have used for the
	current translation unit.
	(handle_element_node): Cleanup logic.
	(build_namespace_decl): Update the new xml node -> decl map, and
	use it to avoid building the same namespace twice.
	(build_function_parameter): Do not even try to get the type of a
	variadic parameter.
	(build_function_decl, build_var_decl): Support types that are defined later.
	(build_type_decl): Do not build the same type twice.  But there
	can be several 'unnamed-enum-underlying-type' node.  In that case
	just return the previous one.
	(build_qualified_type_decl, build_pointer_type_def)
	(build_reference_type_def, build_enum_type_decl)
	(build_typedef_decl): Support underlying type defined later.
	(build_class_decl): Support declaration-only related cases where
	we can have several xml nodes with the same id.  Update the new
	xml node -> IR node maps.  Fix member type adding.
	(build_type_tparameter, build_non_type_tparameter)
	(build_template_tparameter): Support used types defined later.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Fix member class template creation
	* src/abg-ir.cc (class_decl::add_member_class_template): Do not
	forget the scope of the member class template itself.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Avoid endless loop in unescape_xml_string
	* src/abg-libxml-utils.cc (unescape_xml_string): Avoid and endless
	loop for strings containing an '&' but that are not pre-defined
	entities.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Fix a potential crash
	* src/abg-ir.cc (decl_base::get_qualified_name): Do not crash if
	the scope is empty.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Do not loose the member type information when reading them from DWARF
	* include/abg-ir.h (class_decl::declaration_):  Make this be a
	decl_base_sptr so that it can actually be a
	class_decl::member_type which underlying type is a class decl.
	(class_decl::{set, get}_earlier_declaration): Take or return a
	decl_base_sptr rather than a class_decl_sptr.
	* src/abg-ir.cc (class_decl::set_earlier_declaration): Take a
	decl_base_sptr rather than a class_decl_sptr.
	* src/abg-dwarf-reader.cc (die_class_map_type): Make this map take
	decl_base_sptr rather than a class_decl_sptr.
	(build_class_type_and_add_to_ir): If the class being currently
	built is a member class, do not loose that information after it
	has been added to its scope.  Also, base types and types of member
	variables can be member types and should retain that information.
	(build_qualified_type): Likewise, the underlying type of a
	qualified type shouldn't loose the information about its
	potentially being a member type.
	(build_pointer_type_def, build_reference_type, build_typedef_type)
	(build_var_decl, build_function_decl): Likewise.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Fix hashing of member types
	* include/abg-ir.h (class_decl::{member_function_template,
	member_class_template}):  Make these inherit from decl_base, to
	comply with class_decl::member_type.
	(class_decl_base_spec::{base_spec, member_type, member_function,
	member_function_template, member_class_template}::hash): Declare
	these hashing functors in the header here.
	(class_decl::{member_base, member_type, data_member,
	member_function, member_function_template,
	member_class_template}::hash::operator()): define these out of
	line here.
	(type_base::dynamic_hash::operator()): Update this to hash member
	things.
	* src/abg-writer.cc (write_qualified_type_def)
	(write_pointer_type_def, write_class_decl)
	(write_reference_type_def, write_enum_type_decl): Add an overload
	that takes the type ID to use in the serialization.
	(write_member_type): New implementation.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	A Member class can also be a scope for other decls in DWARF
	* include/abg-fwd.h (as_non_member_class_decl): Declare ...
	* src/abg-ir.cc (as_non_member_class_decl): ... this new function.
	* include/abg-ir.h (class class_decl::member_type): Add more
	comments about member types.
	* src/abg-dwarf-reader.cc (get_scope_for_die): Use the new
	as_non_member_class_decl here.

2014-01-17  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* include/abg-ir.h (location_manager::_Impl): Rename this type
	into priv.
	* src/abg-ir.cc b/src/abg-ir.cc (location_manager::_Impl):
	Likewise.
	(location_manager::location_manager): Update for the renaming
	above.
	* src/abg-reader.cc (build_type_decl): Remove useless white space.
	(build_enum_type_decl, build_class_decl): Use the _sptr typedef in
	the return type.

2014-01-14  Dodji Seketeli <dodji@redhat.com>

	Update namespace comments
	* src/abg-dwarf-reader.cc (namespace dwarf_reader): Add apidoc comment.
	* src/abg-reader.cc (namespace xml_reader): Update apidoc comment.

2014-01-14  Dodji Seketeli <dodji@redhat.com>

	Expand 'abi-instr' XML element nodes during de-serialization
	* src/abg-reader.cc (update_read_context)
	(update_depth_info_of_read_context): Remove.
	(read_context::{pop_scope, pop_scope_or_abort): New.
	(read_context::{push_decl_to_current_scope,
	push_and_key_type_decl}): Remove the overloads that take the
	'update_depth_info' boolean.
	(build_namespace_decl): New static function.
	(build_function_decl, build_var_decl, build_type_decl)
	(build_qualified_type_decl, build_pointer_type_def)
	(build_reference_type_def, build_enum_type_decl, build_type_decl)
	(build_class_decl, build_function_tdecl, build_class_tdecl)
	(build_type_tparameter, build_type_composition)
	(build_non_type_tparameter, build_template_tparameter)
	(build_template_parameter, build_type): Remove the
	'update_depth_info' boolean from parameters.
	(handle_element_node): Renamed handle_element into this.  Take an
	xml node and a boolean to add the resulting IR node to the IR.
	(handle_type_decl, handle_namespace_decl)
	(handle_qualified_type_decl, handle_pointer_type_def)
	(handle_reference_type_def, handle_enum_type_decl)
	(handle_typedef_decl, handle_var_decl, handle_function_decl)
	(handle_class_decl, handle_function_tdecl, handle_class_tdecl):
	Take an xml node and a boolean to add the resulting IR node to the
	IR.
	(advance_cursor): No more need to call update_read_context.
	(read_translation_unit_from_input): Expand the 'abi-instr' node
	into memory so that we walk its XML nodes and build the IR nodes
	from them.
	(read_location): Remove the overload that was using the xml reader.
	():

2014-01-14  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-reader.cc (read_context::{get_cur_decl, pop_decl}): Return
	decl_base_sptr rather than shared_ptr<decl_base>.
	(read_context::push_decl): Take a decl_base_sptr rather than
	shared_ptr<decl_base>.

2014-01-14  Dodji Seketeli <dodji@redhat.com>

	Fix apidoc markup
	* include/abg-comparison.h (class var_diff): @ref var_decls ->
	@ref var_decl.
	* src/abg-comparison.cc (function_decl_diff::first_function_decl):
	@Return -> @return.

2014-01-14  Jonathan Wakely <jwakely@redhat.com>

	Fix checkout & build instructions
	* CONTRIBUTING: Fix Git repository url.
	* doc/website/mainpage.txt: Add elfutils into the dependencies
	list and fix the repository directory name.  Also use autoreconf
	-i.
	* include/abg-fwd.h: Fix Git repository URL.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Tweak dwarf reading test to detect more namespace linking-fu
	* tests/data/test-read-dwarf/test0.cc: Define a member function
	out-of-line, outside of its namespace.
	* tests/data/test-read-dwarf/test0.abi: Update the .abi file.
	* tests/data/test-read-dwarf/test0: Update the resulting binary.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Add asserts to detect type id mis-management in native format
	* read_translation_unit_from_input
	(read_translation_unit_from_input): Abort when an element could
	not be handled.
	(build_function_parameter, build_type_decl, qualified_type_def)
	(build_pointer_type_def, build_reference_type_def)
	(build_enum_type_decl, build_typedef_decl, build_class_decl)
	(build_type_tparameter, build_template_tparameter)
	(handle_qualified_type_decl, handle_pointer_type_def)
	(handle_reference_type_def, handle_typedef_decl):
	Abort when a referred-to type is not found or if a type is defined twice.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-hash.cc
	(class_decl::member_function_template::hash::operator()): Remove
	useless vertical space.
	* src/abg-ir.cc (class_decl::class_decl): Properly indent.
	* src/abg-writer.cc (fn_tmpl_shared_ptr_map)
	(class_tmpl_shared_ptr_map): Properly indent these typedefs.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Optimize comparison & underlying type accessing
	* include/abg-ir.h (qualified_type::get_underlying_type)
	(pointer_type_def::get_pointed_to_type)
	(reference_type_def::get_pointed_to_type)
	(typedef_decl::get_underlying_type): Avoid triggering refcount
	counter increasing/decreasing here, by returning a reference to
	the underlying type.  This showed up high on a profile.
	({scope_decl, type_decl, scope_type_decl, namespace_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	enum_type_decl, typedef_decl, var_decl, class_decl}::operator==):
	Avoid taking the exception-using path of dynamic_cast.  This
	showed up very high on a profile.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Fix reading/writing native xml corpus files
	* src/abg-reader.cc (read_context::clear_type_map): New member
	function.
	(read_translation_unit_from_input): Read up to the next element
	node if we are not on an element node already.  Clear the type
	map.  Realize that we might be on the next 'abi-instr' node upon
	completion.
	(read_corpus_from_input): Read up to the next element node if we
	are not on an element node already.  It must be an "abi-corpus"
	node.  THen Advance to the next 'abi-instr' element node before
	handing it to read_translation_unit_from_input.
	* src/abg-writer.cc (write_context::clear_type_id_map): New member
	function.
	(write_translation_unit): Call it.
	* tools/abg-tools-utils.cc (guess_file_type): Read enough bytes to
	detect abi-corpus files magic bytes.
	* tools/bilint.cc (main): Do not write the corpus file to the
	output stream if --noout has been provided.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Escape xml pre-defined entities in native (de-)serialization.
	* include/abg-libxml-utils.h (escape_xml_string)
	(unescape_xml_string): Declare new functions.
	* src/abg-libxml-utils.cc (escape_xml_string)
	(unescape_xml_string): Define them.
	* src/abg-reader.cc (build_function_decl, build_var_decl)
	(build_type_decl, build_enum_type_decl, build_class_decl)
	(build_type_tparameter, build_non_type_tparameter)
	(build_template_tparameter, handle_namespace_decl)
	(handle_typedef_decl): Use unescape_xml_string.
	* src/abg-writer.cc (write_type_decl, write_function_decl)
	(write_class_decl, write_type_tparameter)
	(write_non_type_tparameter, write_template_tparameter): Use
	escape_xml_string.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Implement hash caching
	* include/abg-ir.h (decl_base::hash_): New member.
	(decl_base::{g,s}et_hash): New accessors.
	(type_base_::cached_hash): Forward-declare new hasher.
	(struct type_ptr_equal): New equality predicate.
	(type_shared_ptr_equal::operator()): Do not forget to test pointer
	equality.
	(type_base::cached_hash): Declare new hasher.
	* src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
	qualified_type_def, pointer_type_def, reference_type_def,
	enum_type_decl, typedef_decl, var_decl, function_decl,
	function_decl::parameter, class_decl::data_member,
	class_decl::member_function, class_decl, }::hash::operator()):
	Implement caching.
	(type_base::cached_hash::operator()(const type_base*)): Define.
	(type_base::cached_hash::operator() (const type_base_sptr):
	Define.
	* src/abg-ir.cc (type_ptr_map): Make this map use
	type_base::cached_hash instead of type_base::ptr_hash now.
	(decl_base::decl_base): Initialize the new
	decl_base::hash_. member.
	(decl_base::{s,g}et_hash): Define.
	(decl_base::operator==(const decl_base& other)): Take the hash in
	account to speed up inequality detection.
	* src/abg-writer.cc (type_ptr_map): Renamed type_shared_ptr_map
	into this.  Make it use type_base::cached_hash and type_ptr_equal
	instead of type_base::shared_ptr_hash and type_shared_ptr_equal.
	(get_id_for_type): Add overload for type_base*.  Re-write the
	previous overload in terms of this one.
	(write_context::m_type_id_map): Use type_ptr_map as the type for
	this.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Do not canonicalize types anymore; it's slow and luckily not needed
	* src/abg-ir.h (translation_unit::canonicalize_type): Remove.
	* src/abg-dwarf-reader.cc (canonicalize_and_add_type_to_ir)
	(canonicalize_and_insert_type_into_ir)
	(canonicalize_and_insert_type_into_ir_under_scope): Remove.
	(build_enum_type, build_class_type, build_ir_node_from_die):
	Update for removal of type canonicalization.
	* src/abg-ir.cc (translation_unit::canonicalize_type): Remove.

2014-01-13  Dodji Seketeli <dodji@redhat.com>

	Fix class scope setting & member type de-serializing from dwarf
	* include/abg-fwd.h (add_decl_to_scope, insert_decl_into_scope):
	return the decl added to the scope.
	(as_non_member_type, get_type_declaration): Declare new entry
	points.
	* include/abg-ir.h (class decl_base::insert_decl_into_scope):
	Update this friend declaration.
	(class scope_decl, class_decl): Update the friend add_decl_to_scope
	declaration.
	(scope_decl::add_member_decl): Return the added decl.
	(class_decl_sptr): Move this typedef befoer the class_decl class
	declaration.
	(class_decl::definition_of_declaration_): New member.
	(class_decl::{set_definition_of_declaration,
	get_definition_of_declaration}): New accessors.
	(class_decl::add_member_decl): Return the added member.
	(class_decl::insert_member_type): New member.
	(class_decl::member_base::access_specifier): Make this protected.
	(class_decl::member_type): Make this inherit from type_vase.
	(class_decl::member_type::type_): Remove this member.
	(class_decl::member_type::as_type): Remove this accessor.
	(class_decl::member_type::operator==(const type_base&)): New.
	(class_decl::member_type::operator shared_ptr<type_base>() const):
	Remove.
	(class_decl::member_type::get_underlying_type): New.
	(class_decl::member_type::operator==(const member_type&) const):
	New.
	* src/abg-comparison.cc
	(class_diff::{ensure_lookup_tables_populated, report}): Adjust for
	the removal of class_decl::member_type::as_type.
	* src/abg-dwarf-reader.cc (scope_stack_type): Change this as a
	typedef to stack<scope_decl*>.
	(current_scope): Change return type from scope_decl_sptr to
	scope_decl*.
	(insert_decl_into_scope): New.
	(build_namespace_decl_and_add_to_ir): Use insert_decl_into_scope
	in lieu of add_decl_to_scope.
	(build_class_type_and_add_to_ir): likewise.  Link a class
	definition to its declaration.  Push the current scope on the
	scope stack.  Use as_non_member_type.  Fix setting member types.
	(get_scope_for_die): Look through declaration-only classe to get
	its definition.
	(build_qualified_type, build_pointer_type_def)
	(build_reference_type, build_typedef_type, build_var_decl)
	(build_function_decl): Use as_non_member_type.
	(build_ir_node_from_die): Fix member variable & function adding.
	* src/abg-ir.cc (scope_decl::{add_member_decl,
	insert_member_decl}): Return the added member.
	(add_decl_to_scope): Likewise.
	(insert_decl_into_scope): Likewise.
	(get_top_most_scope_under): Fix logic.
	(get_type_declaration): New overload that return a decl_base*.
	(as_non_member_type): New definition.
	(class_decl::{get_definition_of_declaration,
	set_definition_of_declaration, insert_member_decl}): Likewise.
	(class_decl::add_member_decl): Re-write in terms of
	class::insert_member_decl.
	(class_decl::insert_member_type): New definition.
	(class_decl::add_member_type): Re-write in terms of
	class_decl::insert_member_type.
	(class_decl::remove_member_type): Update for the
	class_decl::member_type::as_type removal.
	(class_decl::{add_data_member, add_member_function,
	add_member_function_template, add_member_class_template}): Call
	scope_decl::add_member_decl.
	(class_decl::member_type::member_type): Update as the type now
	virtually inherits from type_base.
	(class_decl::member_type::{set,get}_access_specifier): New
	definitions.
	(class_decl::member_type::get_underlying_type): Likewise.
	(class_decl::member_type::set_scope): Update wrt
	class_decl::member_type::as_type -> get_underlying_type rename.
	(class_decl::member_type::operator==(const decl_base& other)):
	There is no more class_decl::member_type::as_type.
	(class_decl::member_type::operator==(const type_base& other)):
	New.
	(class_decl::member_type::get_pretty_representation): Update wrt
	class_decl::member_type::as_type -> get_underlying_type rename.
	* src/abg-reader.cc (build_class_decl): New that add
	add_member_decl adds even member types, no need to add it
	explicitly anymore.

2014-01-07  Dodji Seketeli <dodji@redhat.com>

	Add regression tests for dwarf reading
	* tests/test-read-dwarf.cc: New dwarf reading regression test.
	* tests/data/test-read-dwarf/test0: New test input.
	* data/test-read-dwarf/test0: Likewise.
	* data/test-read-dwarf/test0.abi: Likewise.
	* data/test-read-dwarf/test0.cc: Likewise.
	* data/test-read-dwarf/test1: Likewise.
	* data/test-read-dwarf/test1.abi: Likewise.
	* data/test-read-dwarf/test1.cc: Likewise.
	* tests/Makefile.am: Build the new tests/test-read-dwarf.cc file.

2014-01-07  Dodji Seketeli <dodji@redhat.com>

	Remove useless dependencies in tests/Makefile.am
	* tests/Makefile.am: Remove useless *_DEPENDENCIES variables.

2014-01-07  Dodji Seketeli <dodji@redhat.com>

	Support new 'abi-corpus' native XML format (.abi)
	* include/abg-reader.h (read_corpus_from_native_xml)
	(read_corpus_from_native_xml_file): Declare new entry points.
	* include/abg-writer.h (write_corpus_to_native_xml)
	(write_corpus_to_native_xml_file): Likewise.
	* src/abg-reader.cc (read_translation_unit_from_input): Renamed
	read_input into this.  Support new 'path' attribute for
	'abi-instr' XML element.
	(read_corpus_from_input): New static function.
	(read_translation_unit_from_file)
	(read_translation_unit_from_buffer)
	(read_translation_unit_from_istream): Update wrt read_input ->
	read_translation_unit_from_input.
	(read_corpus_from_native_xml, read_corpus_from_native_xml)
	(read_corpus_from_native_xml_file): Define new entry points.
	* src/abg-writer.cc (write_translation_unit): Write 'path'
	attribute into the 'abi-instr' xml element.
	(write_corpus_to_native_xml, write_corpus_to_native_xml_file):
	Define new entry points.
	* tools/abg-tools-utils.h (file_type::{FILE_TYPE_XML_CORPUS,
	FILE_TYPE_ZIP_CORPUS}): New enumerators.
	* tools/abg-tools-utils.cc (guess_file_type): Support detection of
	the new xml file format containing a document root 'abi-corpus'
	root element.
	* tools/bidiff.cc (main): Support diffing xml corpus-es and zip
	corpus-es.
	* tools/bidw.cc (main): Recognize elf files before reading them.
	* tools/bilint.cc (main): Support reading xml/zip corpus-es too.
	* tests/data/test-read-write/test[0-23].xml: Update 'path'
	attribute.

2014-01-07  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* include/abg-writer.h (write_translation_unit): Re-indent parms.
	* src/abg-writer.cc (write_translation_unit): Likewise.
	* test/test-read-write.cc (main): Fix white space.

2014-01-06  Dodji Seketeli <dodji@redhat.com>

	Fix global variables diff reporting in corpus-es
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): Fix a wrong
	assert, resulting from a copy paste typo.

2014-01-06  Dodji Seketeli <dodji@redhat.com>

	Add support for global variables in corpus diffing
	* include/abg-comparison.h (string_var_ptr_map, changed_var_ptr)
	(string_changed_var_ptr_map): New convenience typedefs.
	* src/abg-comparison.cc
	(corpus_diff::priv::{deleted_vars_,added_vars_,changed_vars_}):
	New members.
	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
	Update wrt the new variables related lookup tables.
	(corpus_diff::ensure_lookup_tables_populated): Update to populate
	variables related lookup tables.
	(corpus_diff::report): Update to display added/removed/changed
	variables.

2014-01-06  Dodji Seketeli <dodji@redhat.com>

	Misc style fixlets
	* include/abg-comparison.h (changed_function_ptr): Fix comment.
	* src/abg-comparison.cc (corpus_diff::report): Likewise.
	* src/abg-corpus.cc (corpus::is_empty): Likewise.

2013-12-23  Dodji Seketeli <dodji@redhat.com>

	Initial support for diffing ABI corpus files
	* include/abg-comparison.h (string_function_ptr_map)
	(changed_function_ptr, string_changed_function_ptr_map)
	(corpus_diff_sptr): New convenience typedefs.
	(translation_unit_diff): Add comments.
	(class corpus_diff): New type.
	(compute_diff): New overload for corpus_diff.
	* include/abg-corpus.h (corpus::{functions, variables}): New
	typedefs.
	(corpus::{operator==, get_functions, get_variables}): New members.
	* include/abg-diff-utils.h (struct deep_ptr_eq_functor): New
	functor.
	* include/abg-ir.h (translation_unit::operator==): New member
	equality operator.
	* src/abg-comparison.cc (struct corpus_diff::priv): New private
	struct holding the private members of corpus_diff.
	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables,
	ensure_lookup_tables_populated}): Define new private member functions.
	(corpus_diff::{corpus_diff, first_corpus, second_corpus,
	function_changes, variable_changes, length, report}): New public members.
	(struct noop_deleter): New struct.
	(compute_diff): New implementation for corpus_diff.
	* src/abg-corpus.cc (struct corpus::priv): Renamed corpus::impl
	into this.  Add new fns, vars and is_symbol_table_built data
	members.
	(corpus::priv::build_symbol_table): New member function.
	(class symtab_build_visitor_type): New visitor type to build the
	symbol table.
	(struct func_comp, struct var_comp): New comparison functors.
	(corpus::priv::build_symbol_table): Define new member function.
	(corpus::{corpus, add, get_translation_units, operator==,
	get_functions, get_variables}): Define new members.
	* src/abg-ir.cc (translation_unit::operator==): Define new member
	equality operator.
	(operator==(translation_unit_sptr l, translation_unit_sptr r)):
	Define new equality operator.
	* tools/abg-tools-utils.h (enum file_type): New enum.
	(guess_file_type): Declare new function.
	* tools/abg-tools-utils.cc (guess_file_type): define new function.
	* tools/bidiff.cc (main): Guess the type of the files given in
	input and support elf files reading and diffing.

2013-12-23  Dodji Seketeli <dodji@redhat.com>

	Generalize use of equality operator in core diff algorithms
	* include/abg-diff-utils.h (struct default_eq_functor): New
	equality functor.
	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Add a
	new equality functor template parameter and document it.  Use it
	to compare the elements of the sequences given in argument.
	(compute_middle_snake, ses_len, compute_diff): Add a new equality
	functor template parameter and document it.  Adjust call to
	end_of_frr_d_path_in_k_plus_delta, end_of_fr_d_path_in_k and
	compute_middle_snake.
	(ses_len, compute_diff): Add a new overload that uses a
	default_eq_functor as comparison functor, to avoid breaking
	existing client code.
	* src/abg-diff-utils.cc (compute_middle_snake): Adjust the call to
	the compute_middle_snake.

2013-12-23  Dodji Seketeli <dodji@redhat.com>

	Change ir node visitor interface work on pointer to nodes
	* include/abg-ir.h (ir_traversable_base): New type to be the base
	of IR nodes that are to be traversed.  Extends traversable_base.
	Its ir_traversable_base::traversable() method takes an
	ir_node_visitor&.
	(ir_node_visitor::visit): Change these virtual overloads to take
	pointers to IR nodes, rather than references.  This will be useful
	to e.g, store these IR nodes in containers on the side for some
	algorithms to work.  That is going to be useful later to,
	e.g. build symbol tables on the side, using the visitor interface.
	(class decl_base): Make this inherit ir_traversable_base.
	* src/abg-ir.cc (*::traverse): Adjust comments and the call the
	ir_node_visitor::visit call.  Use the ir_traversable_base type
	rather than traversable_base.
	(ir_traversable_base::traverse): Define.
	(ir_node_visitor::visit): Change these overloads to take pointers
	rather than reference to ir nodes.
	* tests/test-walker.cc (name_printing_visitor::visit): Adjust to
	take pointers rather than references.

2013-12-23  Dodji Seketeli <dodji@redhat.com>

	Do not forget to read function parms
	* src/abg-dwarf-reader.cc (build_function_decl): Do not forget the
	the function parameters.  Oops.

2013-12-20  Dodji Seketeli <dodji@redhat.com>

	Support reading member functions and member types from DWARF
	* include/abg-ir.h (method_type_sptr): New convenience typedef.
	* src/abg-dwarf-reader.cc (read_context::{dwarf_version,
	die_wip_classes_map}): New accessors.
	(die_is_virtual): Rename is_virtual into this.
	(is_type_tag, is_type_die, die_virtual_function_index): Define new
	static functions.
	(die_member_offset): Fix comment.
	(get_scope_for_die): Take the read context as argument.
	(canonicalize_and_add_type_to_ir): Likewise.  On NULL scope, get
	the current translation unit from the read context.
	(canonicalize_and_insert_type_into_ir_under_scope): Handle NULL
	context.
	(build_function_decl): Support creating method_decls from here
	when necessary.
	(build_class_type_and_add_to_ir): Rename build_class_type into
	this.  Handle adding the class to the IR and to the relevant maps.
	During the creation of the class, arrange for
	build_ir_node_from_die on the current DIE to return a
	declaration-only class, representing the declaration for the class
	that is being constructed.  This breaks circular dependencies
	induced by decls/types that refer to the class being built, before
	the class is fully built and has a (logical) type ID.  Once the
	class is created, make it refer to the class declaration that was
	previously handed for the requests to the class DIE.  Now requests
	to the class DIE will just yield the newly built class.  Add
	support for member functions and member types.
	(build_corpus): Support reading the dwarf version and stick it
	into the context.
	(build_ir_node_from_die): Adjust for change in
	canonicalize_and_add_type_to_ir and build_class_type signature
	change.
	* src/abg-ir.cc (class_decl::method_decl::get_type): Support
	returning NULL type.

2013-12-20  Dodji Seketeli <dodji@redhat.com>

	Don't crash in get_global_scope on empty decls
	* src/abg-ir.cc (get_global_scope): Don't crash when given a NULL
	decl.

2013-12-20  Dodji Seketeli <dodji@redhat.com>

	Make decl_base::set_scope virtual, to work on class_decl::member_type
	* include/abg-ir.h (decl_base::set_scope): Make this virtual.
	(class_decl::member_type::set_scope): Declare an overload here.
	* src/abg-ir.cc (class_decl::member_type::set_scope): Define new
	overload.  Make this set the scope of the underlying type of the
	member type as well.

2013-12-20  Dodji Seketeli <dodji@redhat.com>

	Support artificial parameters
	* include/abg-ir.h (function_decl::parameter::{get,
	set}_artificial): Add new accessors for an "artificial" flag.
	* src/abg-reader.cc (build_function_parameter): Support reading
	the artificial parameter flag.
	* src/abg-writer.cc (write_function_decl): Support writing the
	artificial parameter flag.

2013-12-19  Dodji Seketeli <dodji@redhat.com>

	Initial support for reading struct/class
	* src/abg-dwarf-reader.cc (enum virtuality): New enum.
	(class expr_result, struct dwarf_expr_eval_context): New types.
	(die_size_in_bits)
	(die_access_specifier, die_virtuality, is_virtual)
	(die_location_expr, op_pushes_constant_value)
	(op_pushes_non_constant_value, op_manipulates_stack)
	(op_is_arith_logic, op_is_control_flow)
	(eval_last_constant_dwarf_sub_expr, die_member_offset)
	(build_class_type): New static functions.
	(build_ir_node_from_die<DW_TAG_{class, structure}_type>): Support
	creating IR node for class and struct by calling the new
	build_class_type.

2013-12-19  Dodji Seketeli <dodji@redhat.com>

	Slight style fix
	* src/abg-dwarf-reader.cc (build_qualified_type): Fix indentation.

2013-12-19  Dodji Seketeli <dodji@redhat.com>

	Be more forgiving when parsing xml from stdin
	* src/abg-libxml-utils.cc (xml_istream_input_read): Return the
	byte read count even when the stream seems to be borked.  In that
	case it should be zero.

2013-12-19  Dodji Seketeli <dodji@redhat.com>

	Don't crash if building pointer/reference yields NULL
	* src/abg-dwarf-reader.cc
	(build_ir_node_from_die<DW_TAG_pointer_type)
	(DW_TAG_rvalue{0,1}_reference_type>): Do not crash if building the
	IR node for the underlying type yields NULL.

2013-12-19  Dodji Seketeli <dodji@redhat.com>

	Use dwarf_attr_integrate() rather than dwarf_attr()
	* src/abg-dwarf-reader.cc (die_string_attribute)
	(die_unsigned_constant_attribute, die_signed_constant_attribute)
	(die_flag_attribute, die_die_attribute): Use dwarf_attr_integrate
	rather than dwarf_attr to look through DW_AT_abstract_origin.

2013-12-14  Dodji Seketeli <dodji@redhat.com>

	Support enums
	* src/abg-dwarf-reader.cc (build_enum_type): New function.
	(build_ir_node_from_die): Call the new build_enum_type here to
	Handle DW_TAG_enumeration_type DIEs.

2013-12-14  Dodji Seketeli <dodji@redhat.com>

	Build & use a DIE -> parent map to avoid emitting useless types
	* include/abg-ir.h (translation_unit::{mark_type_as_used,
	prune_unused_types}): Remove these declarations.
	* src/abg-ir.cc (translation_unit::priv::used_types_): Remove.
	(class subtype_marking_visitor): Likewise.
	(translation_unit::{mark_type_as_used, prune_unused_types):
	Likewise.
	(get_top_most_scope_under): Fix logic and add comment.
	* src/abg-dwarf-reader.cc (die_tu_map_type, offset_offset_map):
	New convenience typedefs.
	(read_context::{die_tu_map_, die_parent_map_}): New context
	members.
	(read_context::{die_tu_map, die_parent_map}): New accessors.
	(build_ir_node_from_die): New overload that takes the scope of the
	ir node in parameter.
	(die_signed_constant_attribute): Un-comment this.
	(build_die_parent_relations_under, build_die_parent_map)
	(get_parent_die, get_scope_for_die): New static functions.
	(build_translation_unit_and_add_to_ir): Renamed
	build_translation_unit into this. Populate the new
	read_context::die_tu_map() here.
	(canonicalize_and_add_type_to_ir)
	(canonicalize_and_insert_type_into_ir)
	(canonicalize_and_insert_type_into_ir_under_scope): Move these
	overloads over the top of the file.
	(build_namespace_decl_and_add_to_ir): Fix this by adding the
	namespace to the IR scope of the DIE (using the new
	get_scope_for_die()).  Update the read_context::die_decl_map()
	map.
	(build_function_decl): Support functions that return void.  Also,
	skip parameters that don't have type set.
	(build_corpus): Walk all the DIEs to build a DIE -> parent map.
	Adjust for the rename to build_translation_unit_and_add_to_ir.
	(build_ir_node_from_die): Add a scope parm.  Adjust back to
	building IR nodes only for public decls, unless the
	'called_from_public_decl' flag is set.  Adjust to stick the resulting
	IR node into the scope given in parameter.

2013-12-14  Dodji Seketeli <dodji@redhat.com>

	Mark sub-types as part of general type marking
	* src/abg-ir.cc (subtype_marking_visitor): New visitor.
	(translation_unit::mark_type_as_used): When marking a composite
	type as used, mark its sub-types as well.

2013-12-14  Dodji Seketeli <dodji@redhat.com>

	Add missing virtual keywords for traverse() method
	* include/abg-ir.h ({translation_unit, decl_base, scope_decl,
	type_decl, namespace_decl, qualified_type_decl, pointer_type_def,
	reference_type_def, enum_type_decl, typedef_decl, var_decl,
	function_tdecl, class_decl, class_decl::data_member,
	class_decl::member_function, class_decl::member_function_template,
	class_decl::member_class_template}::traverse): Add a virtual
	keyword at least to "document" that this method is virtual -- and
	thus remind the user that it overrides the
	traversable_base::traverse().

2013-12-14  Dodji Seketeli <dodji@redhat.com>

	Add a is_type overload
	* include/abg-fwd.h (is_type): Declare new overload that takes a
	type reference.
	* src/abg-ir.cc (is_type): Define.

2013-12-13  Dodji Seketeli <dodji@redhat.com>

	Prune types that are not ref'ed by public decls
	* include/abg-fwd.h (remove_decl_from_scope): Declare new
	function.
	* include/abg-ir.h (type_base_sptr, decl_base_sptr): Move these
	convenience typedef before the translation_unit declaration.
	(translation_unit::{mark_type_as_used, prune_unused_types}):
	Declare new methods.
	(decl_base::remove_member_decl): Likewise.
	(class_decl::{remove_member_decl, remove_member_type): Likewise.
	* src/abg-dwarf-reader.cc (die_decl_map_type): Change this map
	type so that the value is now a DIE offset, rather than a DIE.
	This is because many times the lifetime of DIEs is shorter than
	the one of the reader_context.  Also, the die offset uniquely
	designates a physical DIE even if several different instances of
	logical DIE might point to it.
	(struct die_hash): Remove this as it's useless now that we store
	DIE offsets in the map.
	(build_translation_unit): Call build_ir_node_from_die w/o setting
	the called_from_public_decl flag.  Prune the types that are not
	used by any public decls.
	(build_namespace_decl_and_add_to_ir): all build_ir_node_from_die
	w/o setting the called_from_public_decl flag.
	(build_ir_node_from_die): Change the only_public_decl flag into a
	called_from_public_decl flag.  Mark types used by public decls as
	such.  Adjust for the parm changes of build_qualified_type
	build_pointer_type_def, build_reference_type, and
	build_typedef_type.
	(build_qualified_type, build_pointer_type_def)
	(build_reference_type, build_typedef_type): Take a new
	called_from_public_decl.  Pass it to build_ir_node_from_die.
	(build_var_decl): Call build_ir_node_from_die with the
	called_from_public_decl flag set to true to flag the types
	referenced by this variable as being used.
	(build_function_decl): Take a called_from_public_decl flag as
	well, as this function can now call build_function_decl itself to
	build a function decl out of the value of the DW_AT_specification
	attribute, for DIEs representing function definitions.  Also, flag
	the types referenced by public functions are being used.
	* src/abg-ir.cc (translation_unit::priv::used_types_): New map for
	the used types.
	(translation_unit::{mark_type_as_used, prune_unused_types}):
	Define new methods.
	(scope_decl::remove_member_decl): Likewise.
	(remove_decl_from_scope): Define new function.
	(class_decl::{remove_member_decl, remove_member_type}): Define new
	methods.

2013-12-12  Dodji Seketeli <dodji@redhat.com>

	Support reading namespaces
	* include/abg-fwd.h (get_global_scope): Return a const
	global_scope.  Add a new overload that takes a naked pointer as
	parm.
	(insert_decl_into_scope, get_top_most_scope_under): Declare new
	entry points.
	* include/abg-ir.h (class decl_base, class scope_decl): Add
	insert_decl_into_scope as a friend of these classes.
	(scope_decl::{insert_decl_into_scope, find_iterator_for_member}):
	Declare new member.
	(scope_decl::get_member_decls): New non-const overload.
	* src/abg-dwarf-reader.cc (build_translation_unit): Remove the
	"recurse" parameter.  Adjust the call to build_ir_node_from_die to
	read just public decls that are at namespace scope.  Anything else
	should be dropped unless it's needed to emitting the public
	namespace-level decls.
	(build_namespace_decl_and_add_to_ir)
	(canonicalize_and_insert_type_into_ir): Define new static
	functions.
	(build_corpus): Adjust ad build_translation_unit doesn't have the
	"recurse" parameter anymore.
	(canonicalize_and_add_type_to_ir): Make this static.  Fix
	comments.
	(build_ir_node_from_die): Take a new "only_public_decl"
	parameter. For DW_TAG_base_type case, use the new
	canonicalize_and_insert_type_into_ir to insert the type at the
	right place in the global scope making sure it is seen before the
	current scope.  For pointer, references and qualified types, use
	canonicalize_and_insert_type_into_ir to add the type at the same
	scope as its underlying type.  Handle DW_TAG_{namespace,module}
	using the new build_namespace_decl_and_add_to_ir function.  Add
	some vertical spaces and some assertions.
	* src/abg-ir.cc (scope_decl::add_member_decl): Use scope_decl_sptr
	typedef.
	(scope_decl::{insert_member_decl,find_iterator_for_member}):
	Define new methods.
	(insert_decl_into_scope, get_top_most_scope_under): Define new
	functions.
	(get_global_scope): Constify the return type.
	(get_translation_unit): Adjust as get_global_scope now returns a
	const.
	* src/abg-reader.cc (get_translation_unit): Likewise.

2013-12-12  Dodji Seketeli <dodji@redhat.com>

	Fix function_decl::parameter::operator==
	* include/abg-ir.h (function_decl::parameter::operator==): Support
	empty type, e.g, in presence of a variadic parameter.

2013-12-12  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* include/abg-ir.h (decl_base::set_visibility): Remove useless
	white space.
	(class scope_decl): Remove useless white space.
	(scope_decl::add_member_decl): Use decl_base_sptr convenience
	typedef.
	(global_scope_sptr, namespace_decl_sptr): New convenience typedef.
	(class global_scope): Remove useless white space.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-dwarf-reader.cc (die_string_attribute, is_public_decl)
	(build_translation_unit, build_ir_node_from_die): Fix comments.
	(die_unsigned_constant_attribute, die_signed_constant_attribute)
	(die_loc_and_name): Align parms.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support typedef types
	* src/abg-dwarf-reader.cc (build_typedef_type): Define new static
	function.
	(canonicalize_and_add_type_to_ir): Do not crash on NULL input
	type.  Also, add a new overload for smart pointer on scope.
	(build_ir_node_from_die): For DW_TAG_base_type case, adjust as
	canonicalize_and_add_type_to_ir now takes smart pointers on
	scopes.  Support the DW_TAG_typedef case by calling the new
	build_typedef_type.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support reference types
	* src/abg-dwarf-reader.cc (build_pointer_type_def): Do not forget
	to get the proper size of the pointer type.
	(build_reference_type): Define new static function.
	(build_ir_node_from_die): Call build_reference_type for the
	DW_TAG_reference_type and DW_TAG_rvalue_reference_type cases.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support pointer types
	* include/abg-fwd.h (get_translation_unit, get_global_scope):
	Declare new overloads that act on a naked pointer to decl_base.
	* src/abg-dwarf-reader.cc (build_pointer_type_def): Define new
	static function.
	(canonicalize_and_add_type_to_ir): Take a naked pointer to
	scope_decl rather than a smart pointer.
	(build_ir_node_from_die): For DW_TAG_base_type, adjust.  Support
	DW_TAG_pointer_type case.  For DW_TAG_{const,volatile}_type case,
	make sure the qualified type is in the same scope as its
	underlying type.
	* src/abg-ir.cc (get_global_scope, get_translation_unit): Define
	new overloads that acts on a naked decl_base.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support qualified types
	* src/abg-dwarf-reader.cc (build_qualified_type)
	(canonicalize_and_add_type_to_ir): Define new static functions.
	(build_ir_node_from_die): In the DW_TAG_base_type case, use the
	new canonicalize_and_add_type_to_ir which is a factorization of
	this code.  In the DW_TAG_{const,volatile}_type, use the new
	build_qualified_type and canonicalize_and_add_type_to_ir
	functions.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support reading public functions from DWARF
	* src/abg-dwarf-reader.cc (read_context::dwarf_): New member.
	(read_context::load_debug_info): Move the content of
	load_debug_info_from_elf here.
	(read_context::dwarf): New accessor for the dwarf_ member above.
	(die_flag_attribute, die_loc_and_name, is_public_decl)
	(build_function_decl): New static functions.
	(die_location): Do not try to create a location object when the
	location has empty file or empty line number.
	(build_translation_unit): Take a new address_size parameter.
	(build_type_decl): Really take a context parameter.  Use the new
	die_loc_and_name() here.
	(build_var_decl): Skip non-public vars.
	(build_corpus): Use dwarf_nextcu instead of dwfl_nextcu, so that
	we can get the address_size used in the current CU.  Note that for
	this we are getting the Dwarf* pointer from the context thanks to
	the new read_context::dwarf() getter.  Adjust the call to
	build_translation_unit to pass it the new address_size.
	(build_ir_node_from_die): Shorten lines a little bit.  Call the
	new build_function_decl to support reading DW_TAG_subprogram DIEs.
	(read_corpus_from_elf): Adjust to create the read context earlier
	and use its read_context::load_debug_info method to load the debug
	info.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Make bilint read input from stdin
	* include/abg-libxml-utils.h (new_reader_from_istream): Declare
	new public entry point.
	* src/abg-libxml-utils.cc (xml_istream_input_read)
	(xml_istream_input_close): New static functions.
	(new_reader_from_istream): Define new public input function.
	* include/abg-reader.h (read_translation_unit_from_istream):
	Declare new entry points.
	* src/abg-reader.cc (read_translation_unit_from_istream): Define
	new entry points.
	* tools/bilint.cc (options::{read_from_stdin, noout}): New
	members.
	(display_usage): Document --stdin and --noout.
	(parse_command_line): Adjust to consider that no option on the
	command line means reading from stdin, just like --stdin.  Support
	the --noout option as well.
	(main): Support Read the abi instr from stdin; in that case, what
	was read is just serialized back to stdout, unless --noout was
	supplied.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support the "address-size" attribute for <abi-instr> elements
	* include/abg-ir.h (translation_unit::translation_unit): Take an
	address_size parameter.
	(translation_unit::{get_address_size, set_address_size}): New
	accessors.
	* src/abg-ir.cc (translation_unit::priv::address_size_): New
	private member.
	(translation_unit::translation_unit): Take an address_size
	parameter.
	(translation_unit::{get_address_size, set_address_size}): Define
	these new methods.
	* src/abg-reader.cc (read_input): Read the "address-size"
	attribute from the abi-instr element.
	* src/abg-writer.cc (write_translation_unit): Write the
	"address-size" attribute.
	* tests/data/test-read-write/test23.xml: New test input.
	* tests/test-read-write.cc (in_out_specs): Add the new test above
	to the list of files to read and write back.

2013-12-11  Dodji Seketeli <dodji@redhat.com>

	Support variadic arguments in function decls
	* src/abg-reader.cc (build_function_parameter): Support reading
	the "is-variadic" attribute.
	* src/abg-writer.cc (write_function_decl): Support writing the
	"is-variadic" attribute.
	* tests/data/test-read-write/test22.xml: New test input.
	* tests/test-read-write.cc (in_out_specs): Add the new test to the
	list of files to read and write back.

2013-12-07  Dodji Seketeli <dodji@redhat.com>

	Initial support of reading an ABI Corpus from DWARF
	* configure.ac: Check the presence of libdw.so and
	elfutils/libdwfl.h headers from elfutils and define the necessary
	linking flags.
	* include/abg-dwarf-reader.h: New header file
	* include/Makefile.am: Add the new header file to the source
	distribution.
	* src/abg-dwarf-reader.cc:: New file.
	* src/Makefile.am: Add the new file to the source distribution.
	* include/abg-fwd.h (dump): Add declarations for several overloads
	to allow dumping to a given output stream.
	* include/abg-ir.h (class translation_unit): Use a pimpl idiom for
	this now.
	(translation_unit::canonicalize_type): Declare new method.
	* src/abg-ir.cc (struct translation_unit::priv): New private type
	for the pimpl idiom for translation_unit.
	(translation_unit::{translation_unit, get_global_scope, get_path,
	set_path, get_loc_mgr}): Adjust for pimpl idiom.
	(translation_unit::canonicalize_type): Define this new method and
	one overload.
	* src/abg-writer.cc (dump): Define several overloads to dump IR
	nodes to given output streams.
	* tools/bidw.cc: New file for the new bidw tool.
	* tools/Makefile.am: Define rules to build the new bidw tools.

2013-12-07  Dodji Seketeli <dodji@redhat.com>

	Pass a string by reference rather than by value
	* tools/bilint.cc (display_usage): Pass program name by reference.

2013-12-07  Dodji Seketeli <dodji@redhat.com>

	Misc style fixes
	* src/abg-ir.cc (location_manager::location_manager)
	(translation_unit::{is_empty, traverse, ~translation_unit): Remove
	useless vertical white spaces.
	* tools/bilint.cc (parse_command_line): Fix indentation.

2013-12-04  Dodji Seketeli <dodji@redhat.com>

	Prepare serialization API for multiple backends
	* include/abg-reader.h: New file with abigail::xml_reader APIs.
	* include/abg-writer.h: New file with abigail::xml_writer APIs.
	* include/Makefile.am: Add the new files above to the source
	distribution.
	* src/abg-reader.cc: Update top-file comments.
	(namespace xml_reader): Rename namespace
	reader into this.
	(read_to_translation_unit, read_corpus_from_archive): New static
	functions.
	(read_translation_unit_from_file)
	(read_translation_unit_from_file, read_corpus_from_file): New
	entry points.
	(struct array_deleter): New functor.
	(translation_unit::read): Remove this.
	* src/abg-writer.cc: Update top file comments.
	(namespace xml_writer): Rename namespace
	writer into this.
	(struct archive_write_ctxt): New internal type.
	(create_archive_write_context, write_translation_unit_to_archive)
	(write_translation_unit, write_corpus_to_archive): New low level
	static functions overloads.
	(write_corpus_to_archive, write_translation_unit): Public higher
	level overloads.
	(translation_unit::write): Remove.
	(dump): Update for new xml_writer namespace.
	* include/abg-ir.h (translation_unit::{read, write}): Remove these
	serialization methods.
	* include/abg-corpus.h (corpus_sptr): New convenience typedef.
	(corpus::{read, write}): Remove these methods.
	* src/abg-corpus.cc (corpus::{read, write})
	(corpus::impl::{serialized_tus, archive}): Remove these members.
	(corpus::impl::{get_archive, close_archive, write_tu_to_archive,
	read_to_translation_unit}): Remove these methods.
	* tests/test-bidiff.cc (main): Update for usage of the new
	xml_reader API.
	* tests/test-read-write.cc (main): Likewise. Update for the usage
	of the new xml_writer API, too.
	* tests/test-walker.cc (main): Update for the usage of the new
	xml_reader API.
	* tests/test-write-read-archive.cc (main): Likewise.  And for the
	xml_writer API, too.
	* tools/biar.cc (add_tus_to_archive, extract_tus_from_archive): Likewise.
	* tools/bidiff.cc (main): Likewise, for xml_reader APIs.
	* tools/bilint.cc (main): Likewise, for xml_writer APIs, too.

2013-11-29  Dodji Seketeli <dodji@redhat.com>

	Add support for bidiff regression testing
	* tests/data/test-bidiff/test-enum0-v0.cc.bi: New input file.
	* tests/data/test-bidiff/test-enum0-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-enum0-report.diff: Likewise.
	* tests/data/test-bidiff/test-enum1-v0.cc.bi: Likewise.
	* tests/data/test-bidiff/test-enum1-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
	* tests/data/test-bidiff/test-qual-type0-v0.cc.bi: Likewise.
	* tests/data/test-bidiff/test-qual-type0-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct0-v0.cc.bi: Likewise.
	* tests/data/test-bidiff/test-struct0-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
	* tests/data/test-bidiff/test-struct1-v0.cc.bi: Likewise.
	* tests/data/test-bidiff/test-struct1-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
	* tests/data/test-bidiff/test-var0-v0.cc.bi: Likewise.
	* tests/data/test-bidiff/test-var0-v1.cc.bi: Likewise.
	* tests/data/test-bidiff/test-var0-report.txt: Likewise.
	* tests/test-bidiff.cc: New file.
	* tests/Makefile.am: Build the new runtestbidiff regression test
	and add the above to the source distribution.

2013-11-29  Dodji Seketeli <dodji@redhat.com>

	Add missing test inputs to source distribution
	* tests/Makefile.am (data/test-read-write/test{17, 18, 19, 20,
	21}.xml): Add these test input files to the source distribution.

2013-11-28  Dodji Seketeli <dodji@redhat.com>

	Add diff support for var_decl
	* include/abg-comparison.h (class var_diff): New declaration.
	(var_diff_sptr): New convenience typedef.
	(compute_diff): New overloads for var_diff, decl_base and
	type_base.
	* src/abg-comparison.cc (try_to_diff): Renamed try_to_diff_types
	into this.
	(compute_diff_for_types): Adjust for the try_to_diff_types
	renaming.  Fix comments.
	(compute_diff_for_decls): Re-use try_to_diff.  Update for
	var_decl.
	(compute_diff): Define overloads for decl_base, type_base and
	var_decl.
	(diff_length_of_decl_bases, diff_length_of_type_bases): New static
	help functions.
	(report_name_size_and_alignment_changes): Renamed
	report_size_and_alignment_changes into this.  Make it report name
	changes as well.
	(var_diff::priv): New struct.
	(var_diff::{var_diff, first_var, second_var, type_diff, length,
	report}): Define methods.
	({qualified_type_diff, enum_diff, class_diff, scope_diff,
	function_decl_diff}::report): Do not report
	anything if the diff is empty.
	(type_decl_diff::length): Fix this.
	(type_decl_diff::report): Adjust for renaming to
	report_name_size_and_alignment_changes.

2013-11-28  Dodji Seketeli <dodji@redhat.com>

	Add enum_type_decl::get_pretty_representation()
	* include/abg-ir.h (enum_type_decl::get_pretty_representation):
	Declare new virtual method override.
	* src/abg-ir.cc (enum_type_decl::get_pretty_representation):
	Define it.

2013-11-28  Dodji Seketeli <dodji@redhat.com>

	Change return type of abigail::is_type()
	* include/abg-fwd.h (is_type): Change the return type from bool to
	type_base_sptr.

2013-11-27  Dodji Seketeli <dodji@redhat.com>

	Support diff for enum_type_decl
	* include/abg-ir.h (enum_type_decl_sptr): New typedef.
	(enum_type_decl::enumerator::enumerator): Make default constructor
	public so that enumerators can be stored in vectors.  Maybe I
	should have made stored pointers to enumerators instead ...
	(enum_type_decl::enumerator::get_qualified_name): Define new
	method.
	* include/abg-comparison.h (string_enumerator_map)
	(changed_enumerator, string_changed_enumerator_map)
	(enum_diff_sptr): New convenience typedefs.
	(class enum_diff): Declare new class.
	(compute_diff): New overload for enum_type_decl.
	* src/abg-comparison.cc (enum diff_kind, report_mem_header): Move
	these at the beginning of the file.
	(struct enum_diff::priv): Define this.
	(enum_diff::{clear_lookup_tables, lookup_tables_empty,
	ensure_lookup_tables_populated, enum_diff, first_enum,
	second_enum, underlying_type_diff, deleted_enumerators,
	inserted_enumerators, changed_enumerators, length, report}):
	Define these new methods.
	(compute_diff): New overload for enum_diff.
	(compute_diff_for_types): Add support enum_type_decl here.

2013-11-27  Dodji Seketeli <dodji@redhat.com>

	Fix equality operator for enum_type_decl
	* src/abg-ir.cc (enum_type_decl::operator==(const type_base& o)):
	This was comparing just the decl_base and type_base part of the
	enum.  Now re-use the enum_type_decl::operator==(const decl_base)
	that compares the entirety of the types.

2013-11-27  Dodji Seketeli <dodji@redhat.com>

	Fix indentation and wording of some existing diff reports
	* src/abg-comparison.cc (class_diff::report): Fix report wording.
	Change indentation space from 4 white spaces to two.
	(scope_diff::report): Fix logic indentation generation.

2013-11-26  Dodji Seketeli <dodji@redhat.com>

	Change enum_type_decl::enumerators from a list to a vector
	* include/abg-ir.h (enum_type_decl::enumerators): Change this from
	a list to a vector.
	* src/abg-hash.cc (enum_type_decl::hash::operator()): Use the
	typedef enum_type_decl::enumerators rather than std::list<blah>.
	* src/abg-ir.cc (enum_type_decl::get_enumerators): Use
	the enum_type_decl::enumerators typedef.
	(enum_type_decl::operator==): Likewise.
	* src/abg-reader.cc (build_enum_type_decl): Likewise.
	* src/abg-writer.cc (write_enum_type_decl): Likewise.

2013-11-25  Dodji Seketeli <dodji@redhat.com>

	Fix thinko in qualified_type_diff::length
	* src/abg-comparison.cc (qualified_type_diff::length): Fix thinko.

2013-11-25  Dodji Seketeli <dodji@redhat.com>

	Support diff between qualified types
	* include/abg-ir.h (qualified_type_def_sptr): Declare new typedef.
	(class qualified_type_def): Add comment at the end.
	(operator<<(std::ostream&, qualified_type_def::CV)): Declare new
	streaming operator.
	* src/abg-ir.cc (operator<<(std::ostream&,
	qualified_type_def::CV)): Define this new streaming operator.
	* include/abg-comparison.h (class qualified_type): Declare new
	class.
	(compute_diff): Declare new overload for qualified_type_def_sptr.
	* src/abg-comparison.cc (struct qualified_type_diff::priv): Define
	new type.
	(qualified_type_diff::{qualified_type_diff, first_qualified_type,
	second_qualified_type, underlying_type_diff, length}):
	Define new methods.
	(get_leaf_type): Define new static function.
	(compute_diff): Define overload for qualified_type_def_sptr.
	(compute_diff_for_types): Add support for
	diffing qualified_type_def here.

2013-11-25  Dodji Seketeli <dodji@redhat.com>

	Cleanup header of changes of underlying types of pointers/references
	* src/abg-comparison.cc ({pointer_diff, reference_diff}::report):
	Unify header of changes in the referenced type.
	* src/abg-ir.cc (decl_base::get_pretty_representation): By
	default, do not prefix types with "type ", for consistency sake.

2013-11-25  Dodji Seketeli <dodji@redhat.com>

	Ensure diff types can only be created by compute_diff
	* include/abg-comparison.h (diff::diff): Make constructor
	protected.
	(pointer_diff::pointer_diff): Likewise.
	(pointer_diff::{first_pointer, second_pointer}): Constify the
	return type.
	(compute_diff): Make this a friend of class pointer_diff.
	(reference_diff::reference_diff): Make this constructor protected.
	(compute_diff): Make this a friend of class reference_diff.
	(class_diff::class_diff): Make this constructor protected.
	(compute_diff): Make this a friend of class class_diff.
	(scope_diff::scope_diff): Make this constructor protected.
	(compute_diff): Make this a friend of class scope_diff.
	(function_decl_diff::function_decl_diff): Make this constructor
	protected.
	(type_decl_diff::type_decl_diff): Likewise.
	(typedef_diff::typedef_diff): Likewise.
	(translation_unit_diff::translation_unit_diff): Likewise.
	(compute_diff): Make this a friend of class translation_unit_diff.
	* src/abg-comparison.cc (pointer_diff::{first_pointer,
	second_pointer}): Constify return type.

2013-11-21  Dodji Seketeli <dodji@redhat.com>

	Add size/alignment info to class diff report
	* src/abg-comparison.cc (represent): Move these static overloads
	to the beginning of the file.
	(report_size_and_alignment_changes): New function.  It has been
	factorized out of ...
	(type_decl_diff::report): ... this.
	(class_diff::report): Use the new
	report_size_and_alignment_changes to report size/alignment info
	for classes.

2013-11-21  Dodji Seketeli <dodji@redhat.com>

	Style fix
	* src/abg-comparison.cc (class_diff::report): Rename first_class
	into first and second_class into second.

2013-11-21  Dodji Seketeli <dodji@redhat.com>

	Misc diff reporting nits
	* include/abg-ir.h (type_decl::get_pretty_representation): New
	overload.
	* abg-ir.cc (type_decl::get_pretty_representation): Implement it.
	* src/abg-comparison.cc (represent, class_diff::report): Quote the
	pretty representation of abi artifacts in the report.
	(type_decl_diff::report): Better wording to express type_decl
	change.

2013-11-20  Dodji Seketeli <dodji@redhat.com>

	Support reporting changed data member in class
	* include/abg-ir.h (operator<<(std::ostream&, decl_base::binding))
	(operator<<(std::ostream&, class_decl::access_specifier)): Declare
	new streaming operators.
	(class_decl::member_type::get_pretty_representation): New virtual
	overload.
	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
	(operator<<(std::ostream&, class_decl::access_specifier)): Define
	new streaming operators.
	(class_decl::member_type::get_pretty_representation): Define new method.
	* src/abg-comparison.cc (represent): Make the existing overloads
	end by a newline. Add a new overload that represents the changes
	that happened a given data member.
	(enum diff_kind): New.
	(report_mem_header): Renamed report_num_dels_or_ins into this.
	Make it support introducing changed members as well as
	deletions/insertions.
	(class_diff::report): Adjust for the report_num_dels_or_ins ->
	report_mem_header change.  Use the new represent() overload to
	report about changed data members.  Adjust logic now that
	represent() emits a newline at its end.  Also adjust logic as far
	as representing base classes and member types changes is
	concerned.
	(type_decl_diff::report): Remove useless white space.

2013-11-20  Dodji Seketeli <dodji@redhat.com>

	Ensure that *::report adds just one empty line to its content
	* include/abg-comparison.h (diff::report): Add a comment saying
	that each the diff::report interface must leave one empty line at
	the end of the report.
	* src/abg-comparison.cc ({pointer_diff, reference_diff,
	class_diff, scope_diff, function_decl_diff, type_decl_diff,
	typedef_diff}::report): Leave just one
	empty line after content.

2013-11-20  Dodji Seketeli <dodji@redhat.com>

	Various doxygen doc additions and fixes
	* include/abg-comparison.h: Lots of doc string additions & fixes,
	especially for typedefs.
	* include/abg-ir.h: Likewise.
	* src/abg-comparison.cc: Likewise.
	* src/abg-ir.cc: Likewise.

2013-11-20  Dodji Seketeli <dodji@redhat.com>

	Better support changed base classes and member types
	* include/abg-comparison.h (class_diff::{clear_lookup_tables,
	lookup_tables_empty, ensure_lookup_tables_populated}): Declare new
	methods.
	(compute_diff): Make this a friend of class_diff.
	* src/abg-comparison.cc (class_diff::priv::{deleted_bases_,
	inserted_bases_, changed_bases_, deleted_member_types_,
	inserted_member_types_, changed_member_types_,
	deleted_data_members_, inserted_data_members_,
	changed_data_members_, deleted_member_class_tmpls_,
	inserted_member_class_tmpls_, changed_member_class_tmpls_}):
	Define new members.
	(class_diff::priv::{base_has_changed, member_type_has_changed,
	data_member_has_changed}): Declare and define new methods.
	(class_diff::{clear_lookup_tables, lookup_tables_empty,
	ensure_lookup_tables_populated}): Define new methods.
	(class_diff::report): Detect and report when a base class or a
	member type has changed, as opposed to just saying that it has
	been removed and inserted.  Fix the rest of the function to avoid
	emitting useless vertical space and avoid saying that the class
	has "zero" insertion/deletion of a given kind of member.
	(scope_diff::report): avoid saying that the scope has "zero"
	insertion/deletion of a given kind of member.  Avoid useless
	vertical spaces.
	(type_decl_diff::report): Avoid useless vertical spaces.

2013-11-19  Dodji Seketeli <dodji@redhat.com>

	Add bilint tool to validate bi files somewhat.
	* tools/bilint.cc: New file.
	* tools/Makefile.am: Build and install the new file above.

2013-11-19  Dodji Seketeli <dodji@redhat.com>

	Add diff support for typedef_decl and type_decl
	* include/abg-ir.h (operator<<(std::ostream&,
	decl_base::visibility)): Declare new streaming operator.
	* src/abg-ir.cc (operator<<(std::ostream&,
	decl_base::visibility)): Define it.
	(type_decl::{operator==, get_pretty_representation}): Likewise,
	define these new overloads.
	(decl_base::{operator==, get_pretty_representation}): New overloads.
	* include/abg-comparison.h (type_decl_diff type_decl_diff_sptr,
	typedef_diff, typedef_diff_sptr): Declare new classes and
	typedefs.
	* src/abg-comparison.cc (type_decl_diff::{type_decl_diff,
	first_type_decl, second_type_decl, length, report}): New methods
	definitions.
	(compute_diff): New function definition that takes pointers of
	type_decl.
	(typedef_diff::{typedef_diff, first_typedef_decl,
	second_typedef_decl, underlying_type_diff, length, report}): New
	methods.
	(compute_diff): New function definition that takes pointers of
	typedef_decl.
	(try_to_diff_types): New template function, factorized out of ...
	(compute_diff_for_types): ... this.  Add support diffing type_decl
	and typedef_decl.
	(pointer_diff::report): Fix indentation of emitted report.
	* tools/bidiff.cc (parse_command_line): Fix style.

2013-11-19  Dodji Seketeli <dodji@redhat.com>

	Avoid missing member types while reading bi files
	* include/abg-fwd.h (get_type_declaration): Declare function.
	* include/abg-ir.h (class decl_base): Add class_decl as a friend.
	This to be able to call decl_base::set_scope from class_decl.
	(scope_decl::add_member_decl): Make this virtual protected, so
	that it can be called (virtually) from e.g, class_decl.
	(type_decl_sptr, typedef_decl_sptr): New convenience typedefs.
	(class_decl::add_member_decl): New virtual overload for
	scope_decl::add_member_decl.
	(class_decl::{add_member_type, add_data_member,
	add_member_function}): New overloads.
	* src/abg-ir.cc (add_decl_to_scope): Benign style cleanup.
	(get_type_declaration): Define new function.
	(class_decl::add_member_decl): New method.
	(class_decl::add_member_type): Avoid silently added a new member
	type when that member type has already been (perhaps
	inadvertently) added to a scope already.  Rather, put a strict
	assert in place there.  Also add a new overload that constructs
	the member type out of a classic type and adds it to the class.
	(class_decl::{add_data_member, add_member_function}): Likewise.
	(class_decl::{add_member_function_template,
	add_member_class_template}): Avoid silently added a new member
	template when that template has already been (perhaps
	inadvertently) added to a scope already.  Rather, put a strict
	assert in place there.
	* src/abg-reader.cc (push_decl_to_current_scope): Take a an extra
	flag saying if the current decl should be added to the current
	scope as well (in addition to being pushed onto the stack of
	scopes maintained in the reader context).
	(push_and_key_type_decl): Likewise, take that extra flag and pass
	it to push_decl_to_current_scope.
	(build_function_decl, build_var_decl, build_type_decl)
	(build_qualified_type_decl, build_pointer_type_def)
	(build_reference_type_def, build_enum_type_decl, build_typedef_decl)
	(build_function_tdecl, build_class_tdecl): Likewise.
	(build_class_decl): Likewise.  When building member data, types,
	and functions, make sure /not/ to add the data, type of function to
	the current scope before adding it to the class_decl.  This was
	making the member not being added to the class because it already
	had a scope.
	(build_type_tparameter, build_type_composition)
	(build_non_type_tparameter, build_template_tparameter)
	(build_type): Adjust to add the template parm to the current scope
	explicitly, like previously.
	(handle_type_decl): Use build_type_decl function. Add the
	type_decl to the current scope, like previously.
	(handle_namespace_decl, handle_qualified_type_decl)
	(handle_pointer_type_def, handle_reference_type_def)
	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl)
	(handle_function_decl, handle_class_decl, handle_function_tdecl)
	(handle_class_tdecl): Adjust to add the decl to the current scope,
	like previously.
	* tests/data/test-read-write/test21.xml: New test input with
	member type(def).

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Avoid tabs and add const/virtual/offsets to class member diff reports
	* include/abg-ir.h (class_decl::get_num_virtual_functions): New
	declaration.
	* src/abg-ir.cc (class_decl::get_num_virtual_functions): New
	definition.
	(function_decl::get_pretty_representation): Represent
	destructors and const member functions.
	* src/abg-writer.cc (write_cdtor_const_static): Take a new bool
	parm for constness and serialize it.
	(write_class_decl): Serialize member functions & function template
	const-ness.
	* src/abg-reader.cc (read_cdtor_const): Read the "const" xml
	attribute, rather than "is_const".

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Fix num insertions reporting in member functions
	* src/abg-comparison.cc (class_diff::report): Fix num insertions
	reporting.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Serialize vtable offset for virtual functions
	* include/abg-ir.h
	(class_decl::member_function::get_vtable_offset): Renamed
	class_decl::member_function::get_vtable_offset_in_bits into this.
	The offset is an index into a table; it's not a value in bits.
	* src/abg-hash.cc (class_decl::member_function::hash): Update wrt
	function name change above.
	* src/abg-ir.cc (class_decl::member_function::operator==):
	Likewise.
	* src/abg-reader.cc (build_class_decl): Rename the attribute
	vtable-offset-in-bits into vtable-offset.
	* src/abg-writer.cc (write_voffset): New function.
	(write_class_decl): Use the new write_voffset.  Cleanup.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	White space and style fixes
	* include/abg-ir.h (class_decl::member_function::member_function):
	Align function parameters.
	* src/abg-ir.cc (type_decl::operator==): Remove useless white spaces

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Do not report added/removed type_decls
	* src/abg-comparison.cc (scope_diff::report): Do not report
	added/removed type_decls.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Fix string representation for variables and methods
	* src/abg-ir.cc (var_decl::get_pretty_representation): Don't use
	the pretty representation for the type of the variable; just use
	its qualified name.
	(method_type::set_class_type): I wonder what I was thinking when
	setting the first parameter's type to being the type of the
	class.  Remove this.
	(function_decl::get_pretty_representation): Use the "method "
	prefix for methods.  Avoid printing the first parameter of
	methods.  Use the qualified name of the parameter type, rather
	than its pretty representation.
	* src/abg-writer.cc (write_class_decl): Do not skip the first
	function parameter when serializing the method.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Support reporting removed types/decls
	* include/abg-comparison.h (scope_diff::{removed_types,
	removed_decls, added_types, added_decls}): New accessor methods
	declarations.
	* src/abg-comparison.cc (scope_diff::{removed_types,
	removed_decls, added_types, added_decls}): New accessor methods
	definitions.
	(scope_diff::report): Report removed & added types/decls.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Fix erratic reporting of changed types & decls in scopes
	* src/abg-comparison.cc
	(scope_diff::ensure_lookup_tables_populated): A changed type/decl
	is not only one that has been both deleted and inserted (as is a
	type/decl with a given name N has been deleted and a type/decl
	with that same name N has been inserted), but we must also ensure
	that both inserted and deleted type/decl are not the same.
	Otherwise, it might has been a type/decl that has been shuffled
	around.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Fix some class & scope diff reports formatting glitchs
	* src/abg-comparison.cc (class_diff::report): Quote data members.
	(scope_diff::report): Simplify how we report changed types. Avoid
	unnecessary vertical spaces.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Pretty representation for variables and types by default
	* include/abg-ir.h (var_decl::get_pretty_representation): New
	method declaration.
	* src/abg-ir.cc (decl_base::get_pretty_representation): Prefix
	types with the "type " string.
	(var_decl::get_pretty_representation): New method definition.

2013-10-24  Dodji Seketeli <dodji@redhat.com>

	Re-write middle snakes management in core diff algorithms
	* include/abg-diff-utils.h (point::set): New overload..
	(point::{add, operator<, operator>, operator<=, operator>=}): New
	methods.
	(point::operator!=): Constify.
	(point::operator==): Constify. Cleanup.
	(point::operator=): Keep emptiness.
	(class snake): New class definition
	(d_path_vec::{over_bounds, offset}): New methods.
	(d_path_vec::check_index_against_bound): Don't take a bound
	parameter anymore.  Use the new over_bound method above.  Fix up
	error reporting.
	(d_path_vec::d_path_vec): Fix d_path_vec size allocation.
	(d_path_vec::operator[]): Use the d_path_vec::at method to check
	all accesses against the bounds.  This is slower, but at least we
	can expect to have something that is more robust.  We can remove
	the bound checking later when we are sure the code has been tested
	enough.  Also use the new offset() method.
	(d_path_vec::at): Take long long.
	(ends_of_furthest_d_paths_overlap): Constify input parameters.
	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Take
	an instance of the new snake in parameter, rather than a bare end
	point that wasn't carrying enough information about the snake.
	Record the snake which consists of up to four points: a begin
	point, an intermediate point, a diagonal start point and an end
	point.  Return that snake upon successful completion.
	(compute_middle_snake): Take an instance of snake, rather than the
	two points that were supposed to represent a snake and with which
	we were loosing information before.  Revisit/simplify the logic of
	this function; this literally goes forward or in reverse, gets the
	resulting snake returned by the end_of_fr_d_path_in_k and
	end_of_frr_d_path_in_k_plus_delta functions, detect if these snakes
	overlap and just return the current snake.  Much simpler.  The
	caller now gets a snake, which has much more information than the
	previous snake approximation made of just two points.  Bonus
	point, this follows almost to the word, what the paper says.
	(maybe_record_match_point, find_snake_start_point): Remove these
	as there are not used by compute_middle_snake anymore.
	(print_snake, ses_len): Update these to take/handle a snake.
	(snake_end_points): New declaration.
	(compute_diff): When we are getting an empty first sequence, this
	means that we are inserting the second sequence *before* the
	beginning of the first sequence; keep this information by setting
	the insertion point index to -1, rather than zero.  Update this to
	get/handle snakes, rather than free points vaguely representing
	snakes.  Now that compute_middle_snake returns real snakes, handle
	the information we are getting.  Basically for edit scripts of
	length equal to 1, as the snake carries all the necessary
	information about the non-diagonal edge (as well as the diagonal
	edges), we (can) now precisely update the current edit script (as
	well as the longest common sub-sequence).  For edit scripts of
	length greater than 1, better at which points to divide the
	problem and consequently, at which points to conquer it back --
	better following The Paper to the letter.
	(display_edit_script): Update this for the use of instances of
	snake.
	* src/abg-diff-utils.cc (ends_of_furthest_d_paths_overlap): Update
	for constification of inputs.
	(snake_end_points): Define new function.
	(compute_middle_snake): Adapt for the taking an instance of snake.
	* tests/test-diff2.cc (main): Update for using instances of snake.
	* tests/test-core-diff.cc: Add new tests.
	* tests/data/test-core-diff/report0.txt: Update for output
	adaptation.
	* tests/data/test-core-diff/report6.txt: Likewise.
	* tests/data/test-core-diff/report7.txt: Likewise.
	* tests/data/test-core-diff/report8.txt: New test data.
	* tests/data/test-core-diff/report9.txt: Likewise.
	* tests/data/test-core-diff/report10.txt: Likewise.
	* tests/data/test-core-diff/report11.txt: Likewise.
	* tests/data/test-core-diff/report12.txt: Likewise.
	* tests/data/test-core-diff/report3.txt: Likewise.

2013-10-19  Dodji Seketeli <dodji@redhat.com>

	Support diff/reporting for functions & better diff/report in general
	* include/abg-ir.h ({decl_base, class_decl,
	function_decl}::get_pretty_representation): New virtual member to
	get a pretty string name for decls & types.
	(class_decl::parameter): Add an index to the parameter type.
	(class_decl::parameter::parameter): Update the constructor for the
	change above.
	(class_decl::parameter::{get_index, set_index}): Accessors for the
	new index.
	(class_decl::parameter::operator==): Take in account the index.
	(function_type::append_parameter): Set the index of the parameter
	here.
	* include/abg-fwd.h (get_type_name): New declaration.
	* src/abg-ir.cc (get_type_name): New definition.
	({decl_base, function_decl,
	class_decl}::get_pretty_representation): New implementations.
	(method_type::set_class_type): Update this to set function
	parameter's index by default.
	(function_decl::append_parameters): Use the append_parameter
	method from function_type.
	* include/abg-comparison.h (class function_decl_diff): New type
	declaration.
	* src/abg-comparison.cc (compute_diff_for_decls, compute_diff):
	New definitions.
	({pointer_diff, class_diff, scope_diff}::report): Use the new
	get_pretty_representation.  Output a prettier report.
	(function_decl_diff::priv): New type.
	(function_decl_diff::{deleted_parameter_at, inserted_parameter_at,
	ensure_lookup_tables_populated, function_decl_diff,
	first_function_decl, second_function_decl, changed_parms,
	removed_parms, added_parms, length, report}): New member function
	definitions.
	* src/abg-hash.cc (function_decl::parameter::hash): Update this to
	take the index in account.

2013-10-19  Dodji Seketeli <dodji@redhat.com>

	Misc style & white space fixes
	* include/abg-fwd.h (is_global_scope, is_at_global_scope)
	(is_at_class_scope, is_at_template_scope, is_template_parameter)
	(is_type, is_var_decl, is_template_parm_composition_type)
	(is_template_decl, is_function_template_pattern)
	(add_decl_to_scope, get_global_scope, get_translation_unit):
	Remove parameter names from declarations.
	* include/abg-ir.h (decl_base::set_location): Remove useless white
	space.
	(struct type_shared_ptr_equal): Fix comment filling.

2013-10-16  Dodji Seketeli <dodji@redhat.com>

	Avoid useless hashing during serialization
	* src/abg-writer.cc (write_context::get_id_for_type): Avoid the
	useless hashing incurred by the [] operator on the map, when we
	already have the value we want.

2013-10-16  Dodji Seketeli <dodji@redhat.com>

	Add more IR nodes dumping routines
	* include/abg-fwd.h (dump): Declare 4 overloads for the dumping
	routines.
	* include/abg-ir.h (var_decl_sptr): New typedef.
	* src/abg-writer.cc (dump(const decl_base_sptr)): Add comments.
	(dump(const type_base_sptr)): New dumping routines.
	(dump(const var_decl_sptr)): Likewise.

2013-10-16  Dodji Seketeli <dodji@redhat.com>

	Fix IR node comparison bugs
	* include/abg-ir.h (type_shared_ptr_equal::operator()): Fix thinko
	in checking for the boolean value of the pointers to types.
	* src/abg-ir.cc (type_decl::operator==(const decl_base&)): Do not
	forget to compare the decl_base part of the type too.
	(type_decl::operator==(const type_base&)): To ease maintenance,
	re-use the equality operator that takes a decl_base.
	(scope_type_decl::operator==(const type_base&)): Likewise.
	(qualified_type_def::operator==(const type_base&)): Likewise.
	(compare_function_types): New sub-routine to compare function
	types.  It fixes an infinite recursion when comparing two methods
	of the same class.
	(function_type::operator==(const type_base&)): Use the new
	compare_function_types function.
	(class_decl::operator==(const decl_base&)): Fix a thinko in the
	first test of the function.  Use a dedicated scope for each class
	section comparison; that way, there won't be any chance to misuse
	the variables pertaining to a different section.  Fix the member
	function sections; we were mistakenly using the variables for the
	*data* section there.
	(class_decl::operator==(const type_base&)): Re-use the operator
	that takes a decl_base.
	(class_decl::operator==(const class_decl&)): Don't remove
	const-ness during the static cast.
	(class_decl::member_function::operator==(const member_function&)):
	Do not remove the reference from the static cast.
	(class_decl::member_class_template::operator==(const
	member_base&)): Likewise.
	(type_tparameter::operator==(const template_parameter&)):
	Likewise.
	(template_tparameter::operator==(const template_parameter&)):
	Likewise.
	(function_tdecl::operator==(const template_decl&)): Likewise.
	(class_tdecl::operator==(const template_decl&)): Likewise.
	(class_tdecl::operator==(const class_tdecl&)): Likewise.
	* tests/data/test-read-write/test12.xml: Update this because the
	test now correctly considers two type template parameters at the
	same index as being equivalent.
	* tests/data/test-read-write/test13.xml: Likewise.

2013-10-16  Dodji Seketeli <dodji@redhat.com>

	On going white space cleanups
	* include/abg-ir.h: Remove useless white spaces.
	* src/abg-ir.cc: Likewise.
	* src/abg-reader.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2013-10-15  Dodji Seketeli <dodji@redhat.com>

	Finish reporting about class_diff
	* src/abg-comparison.cc (report_num_dels_or_ins): Factorize out
	the header of each of inserted/deleted parts of the class into
	this new function.
	(class_diff::report): Use the new report_num_dels_or_ins.  Cleanup
	the code.  Add support for reporting about member functions,
	member function templates and member class templates.

2013-10-15  Dodji Seketeli <dodji@redhat.com>

	White space cleanup in abg-ir.h
	* include/abg-ir.h
	(class_decl::member_function_template::member_function_template):
	Remove useless white space.

2013-10-15  Dodji Seketeli <dodji@redhat.com>

	Progress on diffing pointers, references and classes
	* include/abg-comparison.h (diff::{first_subject,second_subject): Changed
	first_scope/second_scope into these; so that this diff class now works on
	stuff that are not scope.  Changed the type of these to
	decl_base_sptr
	(diff::diff): Update for the change above.
	(diff::{length, report}): New virtual pure methods.
	(class pointer_diff, reference_diff): New classes declarations.
	(compute_diff): New overloads for the new classes above.  Make the
	existing overloads take shared_pointers instead of references.
	Also make them return shared pointers of the computed diff, rather
	than just populating diff references passed in parameter.
	(class class_diff): Renamed class class_decl_diff into this.
	(report_changes): Change these functions into member functions.
	* src/abg-comparison.cc (compute_diff_for_types): New static
	function.
	(pointer_diff::pointer_diff, pointer_diff::first_pointer)
	(pointer_diff::second_pointer, pointer_diff::length)
	(pointer_diff::underlying_type_diff)
	(pointer_diff::underlying_type_diff, pointer_diff::report)
	(pointer_diff::report, compute_diff)
	(reference_diff::reference_diff, reference_diff::first_reference)
	(reference_diff::second_reference)
	(reference_diff::underlying_type_diff)
	(reference_diff::underlying_type_diff, reference_diff::length)
	(reference_diff::report, compute_diff): New functions.
	(class_diff::class_diff, class_diff::length)
	(class_diff::first_class_decl, class_diff::second_class_decl)
	(class_diff::base_changes, class_diff::base_changes)
	(class_diff::member_types_changes)
	(class_diff::member_types_changes)
	(class_diff::data_members_changes)
	(class_diff::data_members_changes, class_diff::member_fns_changes)
	(class_diff::member_fns_changes)
	(class_diff::member_fn_tmpls_changes)
	(class_diff::member_class_tmpls_changes)
	Update wrt class_decl_diff -> class_diff renaming.
	(class_diff::report): Make the report function be a member
	function.  Add an indentation parameter. Add support for member
	types and data members.
	(compute_diff): New overload for class_decl_sptr.
	(scope_diff::first_scope, scope_diff::second_scope)
	(scope_diff::length, scope_diff::report): New member functions.
	(scope_diff::{deleted_member_at, inserted_member_at}): Update wrt
	first_scope -> first_subject change.
	(compute_diff): New overload for scope_decl_sptr.
	(translation_unit_diff::report): Change the report function into
	this member function.
	(compute_diff): Change the overload for translation_unit to take a
	translation_unit_sptr rather than a reference.
	* tools/bidiff.cc (main): Update this wrt the change of the
	signature of compute_diff.

2013-10-15  Dodji Seketeli <dodji@redhat.com>

	Fix construction of class_decl::member_type
	* include/abg-ir.h (class_decl::member_type::member_type): Remove
	inline body from here.
	* src/abg-ir.cc (class_decl::member_type::member_type): Move
	implementation here.  Also, properly set the name of the the
	member_type at construction time.

2013-10-15  Dodji Seketeli <dodji@redhat.com>

	Few typedef additions to abg-ir.h
	* include/abg-ir.h (pointer_type_def_sptr)
	(reference_type_def_sptr): New typedefs.

2013-10-11  Dodji Seketeli <dodji@redhat.com>

	Add debugging routines for decl_base_sptr and translation_unit
	* src/abg-writer.cc (dump): Add two version of this; on for
	decl_base_sptr, one for translation_unit&.

2013-10-11  Dodji Seketeli <dodji@redhat.com>

	Initial implementation of tu diffing & bidiff cmd line program
	* include/abg-comparison.h (class translation_unit_diff): New type.
	(compute_diff): Make this take class_decl&, rather than
	class_decl_sptr.  Add new overloads for scope_decl& and
	translation_unit&.
	(report_changes): New overload for scope_diff& and
	translation_unit&.
	* src/abg-comparison.cc (struct class_decl_diff::priv): New type.
	(class class_decl_diff): Add comments to methods.
	(class translation_unit_diff): Implement methods.
	(compute_diff, report_changes): Implement the new overloads.
	(scope_diff::ensure_lookup_tables_populated): Fix a thinko here.
	* src/abg-ir.cc (is_var_decl): Add new predicate.
	* tools/abg-tools-utils.h (file_exists, is_regular_file)
	(check_file): Declare new functions.
	* tools/abg-tools-utils.cc (get_stat, file_exists, check_file)
	(is_regular_file): Define new functions.
	(is_dir): Use the new get_stat.
	* tools/bidiff.cc: New file.
	* tools/Makefile.am: Add tools/bidiff.cc to the build system; make it
	produce the bidiff tool.

2013-10-10  Dodji Seketeli <dodji@redhat.com>

	Fix inheritance of operator== on decl_base and type_base
	* include/abg-ir.h (*lots of descendants of decl_base, type_decl)
	(template_decl, class_decl::member_base): Replace the previous classical
	*::operator==(*&) with an overload of decl_base::operator==(const
	decl_base&), type_base::operator==(const type_base),
	template_decl::operator==(const template_decl&) or
	class_decl::member_base::operator==(const
	class_decl::member_base&).  This makes the descendant operator be
	the one called when a comparison involves references the parent
	class.
	* src/abg-ir.cc: Write the implementation of the above.  Remove
	the useless static_casts from the previous operator== code.

2013-10-10  Dodji Seketeli <dodji@redhat.com>

	On going misc white spaces and style fixes
	* include/abg-ir.h: Add author.  Remove many useless white
	spaces.  Add missing end-of-class comments.  Move function
	declaration comments from here to their definition point.
	* include/abg-fwd.h: Remove useless indentation.  Also move
	doxygen comments to *definition* points in src/abg-ir.cc.
	* src/abg-ir.cc: Remove many useless white spaces.  Move comments
	from declaration points to here.

2013-10-06  Dodji Seketeli <dodji@redhat.com>

	Fix middle snake determination & ses len computation for d == 1
	* include/abg-diff-utils.h (compute_middle_snake): After the
	overlap determination happened, finding the middle snake can
	require keep on building the current path until the "end".  The
	end meaning reaching the max of D.  And that max is (M + N)/2 + 1.
	In the extreme cases were middle snake was on the very last step
	(M + N) + 1, we were not finding the middle snake.  Fix this.
	(compute_diff): When d == 1 and the first edge on the edit graph
	is a non-diagonal edge and when a_base != a_begin, we were failing
	to properly initialize x,y to find that non-diagonal edge.  Also
	we were failing to correctly compute the size of the sequence.
	Fix these.
	* tests/test-core-diff.cc: Add a new regression test for the two
	cases above.
	* tests/data/test-core-diff/report7.txt: New reference data for
	the new regression test.

2013-10-05  Dodji Seketeli <dodji@redhat.com>

	Initial un-debugged implementation of scope diffing
	* include/abg-comparison.h (class scope_diff): New type.
	(compute_diff(scope_decl_sptr, scope_decl_sptr, scope_diff)): New
	declaration.
	(report_changes): New declaration.
	* src/abg-comparison.cc (struct scope_diff::priv): Define.
	(scope_diff::{clear_lookup_tables, lookup_tables_empty,
	ensure_lookup_tables_populated, scope_diff, member_changes,
	deleted_member_at, inserted_member_at, changed_types,
	changed_decls}): Define these new member functions.
	(compute_diff): Define.
	* include/abg-ir.h (decl_base_sptr): New typedef.
	(operator==(decl_base_sptr, decl_base_sptr)): Declare new
	operator.
	* src/abg-ir.cc (operator==(decl_base_sptr, decl_base_sptr)):
	Define.
	(scope_decl::{operator==, traverse}): Adjust for using vectors to
	store scope members now, rather than lists.
	(scope_decl::{declarations, scopes}): Make these types be vector.
	This makes the members of a scopes be vector, rather than lists.
	This enables them to be diffed.

2013-10-05  Dodji Seketeli <dodji@redhat.com>

	Simplify & cleanup compute_diff core api
	* include/abg-diff-utils.h (insertion::inserted_): Changed the
	type of this from vector<int> to vector<unsigned>.
	(insertion::{insertion, inserted_indexes}): Adjust.
	(compute_diff): Add two new simpler overloads.  Implement them in
	term of the former more complex overload.
	(compute_lcs): Adjust for the vector<int> -> vector<unsigned>
	change.
	* src/abg-diff-utils.cc (compute_lcs, compute_ses): Adjust for the
	compute_diff change above.
	* src/abg-comparison.cc (compute_diff, report_changes): Adjust for
	the compute_diff & vector<unsigned> changes above..

2013-10-05  Dodji Seketeli <dodji@redhat.com>

	Misc white space, style and comments cleanup
	* include/abg-ir.h (class scope_decl): Add end of class comment.
	(class type_base): Add a _sptr typedef and end of class comment.
	* src/abg-ir.cc (operator==(class_decl_sptr, class_decl_sptr)):
	Fix comment.

2013-10-04  Dodji Seketeli <dodji@redhat.com>

	Un-debugged initial implementation of class diffing.
	* include/abg-ir.h (decl_base::get_qualified_name): New
	declaration.
	(class_decl::{base_specs, member_types, data_members,
	member_functions, member_function_templates,
	member_class_templates}): Make all these containers be vectors,
	rather than list.  This makes these containers (like
	class_decl::base_specs, class_decl::member_types, etc) be suitable
	to be used by the core diffing algorithms to diff their content.
	(operator==(class_decl_sptr, class_decl_sptr))
	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
	(operator==(class_decl::base_spec_sptr,
	class_decl::base_spec_sptr))
	(operator==(class_decl::data_member_sptr,
	class_decl::data_member_sptr))
	(operator==(class_decl::member_function_sptr,
	class_decl::member_function_sptr))
	(operator==(class_decl::member_function_template_sptr,
	class_decl::member_function_template_sptr))
	(operator==(class_decl::member_class_template_sptr,
	class_decl::member_class_template_sptr)): Declare
	these new equality operators.  These are to be used by the core
	diffing algorithms when comparing two vectors of shared pointers
	of members of class_decls.
	* src/abg-ir.cc (decl_base::get_qualified_name): Define.
	(class_decl::class_decl, class_decl::operator==(class_decl&)): Adjust for the
	containers type change to a vector.
	(operator==(class_decl_sptr, class_decl_sptr))
	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
	(operator==(class_decl::base_spec_sptr,
	class_decl::base_spec_sptr))
	(operator==(class_decl::data_member_sptr,
	class_decl::data_member_sptr))
	(operator==(class_decl::member_function_sptr,
	class_decl::member_function_sptr))
	(operator==(class_decl::member_function_template_sptr,
	class_decl::member_function_template_sptr))
	(operator==(class_decl::member_class_template_sptr,
	class_decl::member_class_template_sptr)): Define
	these.
	* include/abg-comparison.h (diff::scope_): Remove
	(diff::{first_scope_, second_scope_}): New members.
	(class_decl_diff::class_decl_diff): Pass the new scopes to this
	constructor.
	(class_decl_diff::{first_class_decl, second_class_decl})
	(report_changes): New declarations.
	* src/abg-comparison.cc (class_decl_diff::class_decl_diff): Update
	as per the declaration.
	(class_decl_diff::{first_class_decl, second_class_decl}): Define
	as per the declaration.
	(compute_diff): Initial implementation for this.
	(report_changes): Define.

2013-10-04  Dodji Seketeli <dodji@redhat.com>

	Change the diff::changes_type back to just edit_script
	* include/abg-comparison.h (diff::changes_type):
	Remove this typedef.
	(class_decl_diff::data_members_changes): Rename
	class_decl_diff::data_member_changes into this.
	(class_decl_diff::member_fn_tmpls_changes): Renamed
	class_decl_diff::member_fn_tmpl_changes into this.
	(class_decl_diff::member_class_tmpls_changes): Renamed
	class_decl_diff::member_class_tmpl_changes into this.
	(class_decl_diff::{base_changes, member_types_changes,
	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
	these declarations for the use of edit_script.
	* src/abg-comparison.cc (class_decl_diff::priv::*): Likewise.
	(class_decl_diff::{base_changes, member_types_changes,
	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
	these definitions for the above.

2013-10-04  Dodji Seketeli <dodji@redhat.com>

	Misc white space, style and comment fixes
	* include/abg-ir.h: Lots of useless white space removals and
	comments adding.
	(class class_decl::member_base): Fix comment.
	* src/abg-hash.cc: Lots of useless white space removals too.
	* src/abg-ir.cc: Remove useless white space too.

2013-10-04  Dodji Seketeli <dodji@redhat.com>

	Fix middle snake determination
	* include/abg-diff-utils.h (point::{operator!=,operator==}): New
	operators.
	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Allow
	the initial point (-1,-1) that is not a point addressing elements
	of the input sequences, but that is the starting point of the
	forward paths and the ending point of reverse paths in the "Linear
	Refinement" of the algorithm.
	(is_match_point, maybe_record_match_point)
	(find_snake_start_point): New functions.
	(find_last_snake_in_path): Remove this.  It's not used anymore.
	(compute_middle_snake): Allow checking for overlapping paths even
	on points that are outside of the edit graph boundaries.  Once the
	overlap is detected, if a non-empty snake has been seen already,
	report it as the middle snake.  Otherwise, keep building the path
	until the end and report the last snake encountered as the middle
	snake.  Add comments.
	(compute_diff): For the d == 1 case, fix the logic of the finding
	the non-diagonal edge.  Fix typos.  Add comments.
	(display_edit_script): Fix report glitches.
	* tests/data/test-core-diff/report3.txt: Update as per the report
	glitch above.
	* tests/data/test-core-diff/report4.txt: Likewise.
	* tests/data/test-core-diff/report5.txt: Likewise.
	* tests/data/test-core-diff/report6.txt: New reference report for
	a new test.
	* tests/test-core-diff.cc: Add a new test for negative delta.

2013-10-03  Dodji Seketeli <dodji@redhat.com>

	Initial regression test facility for core diff algorithms
	* tests/data/test-core-diff/report0.txt: New test reference data.
	* tests/data/test-core-diff/report1.txt: Likewise.
	* tests/data/test-core-diff/report2.txt: Likewise.
	* tests/data/test-core-diff/report3.txt: Likewise.
	* tests/data/test-core-diff/report4.txt: Likewise.
	* tests/data/test-core-diff/report5.txt: Likewise.
	* tests/test-core-diff.cc: New regression test program.
	* tests/Makefile.am: Add these new files to the build system.

2013-10-02  Dodji Seketeli <dodji@redhat.com>

	Initial command line testing facility for core diff algorithms
	* tests/test-diff2.cc: New command line testing facility.
	* tests/Makefile.am: Add this to the build system.

2013-10-02  Dodji Seketeli <dodji@redhat.com>

	Fix core diff algorithms for negative deltas
	* diff2.h (point::point): New copy constructor.
	(point::{operator+=, operator=}):  Use point::set.
	(point::{operator--, operator++,}): New operators.
	(d_path_vec::{a_size_, b_size_}): New members.
	(d_path_vec::max_d_): Remove this member.
	(d_path_vec::max_d): Compute this, now that max_d_ was removed.
	(point_is_valid_in_graph): Declare this new function.
	(end_of_fr_d_path_in_k, ): Return
	a bool when the end of furthest reaching past found is within the
	bounds of the edit graph.  Add comments.
	(end_of_frr_d_path_in_k_plus_delta): Likewise.  Also, delta can be
	negative; support that.  Do not cross the boundaries of the edit
	graph when following a diagonal edge.
	(find_last_snake_in_path): New function.
	(compute_middle_snake): Make forward/reverse d_path_vec be big
	enough to hold paths for M+N differences.  Normally M+N/2 should
	be enough, but we were getting weird out of bound errors.  Let's
	handle it this way for now.  Do not require that we check for
	overlap only when we are on a diagonal edge.  Once we detected an
	overlap, use the new find_last_snake_in_path to find the
	boundaries of the snake.
	(ses_len): Delta can be negative.
	(display_edit): Small minor English nit.

2013-09-28  Dodji Seketeli <dodji@redhat.com>

	Lay down the foundations of computing the diff between two class_decl
	* include/abg-diff-utils.h: New file.
	* src/abg-diff-utils.cc: Likewise.  Implement the code diffing
	algorithms from Eugene Myers.
	* include/abg-comparison.h: New file. First short at defining the
	basic APIs to compute the diff of two classes.
	* src/abg-comparison.cc: New file.  Start the implementation of
	the above header.

2013-09-26  Dodji Seketeli <dodji@redhat.com>

	Prepare node visitors to be usable on things other than IR nodes
	* include/abg-fwd.h (node_visitor_base): Renamed ir_node_visitor
	into this.
	* include/abg-traverse.h (struct node_visitor_base): New base for
	the visitors.
	(struct traversable_base): Update comments.
	(traversable_base::traverse): Change this into non-pure virtual.
	Make it take a reference to node_visitor_base, rather than a
	reference to ir_node_visitor.
	* src/abg-traverse.cc (traversable_base::traverse): New empty
	default implementation.
	* include/abg-ir.h: Make ir_node_visitor inherit from new
	node_visitor_base.

2013-09-26  Dodji Seketeli <dodji@redhat.com>

	Renamed data members from m_something to something_
	* src/abg-ir.{cc,h}: Renamed data members from m_something to
	something_ and update their usage.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Initial version of an archive manipulation program: biar
	* tests/test-utils.h (is_dir, ensure_dir_path_created)
	(ensure_parent_dir_created): Move these directories manipulation
	utilities from here to ...
	* tools/abg-tools-utils.h (is_dir, ensure_dir_path_created)
	(ensure_parent_dir_created): ... here in this new file.
	(dir_name, base_name): Declare these new functions.
	* tests/test-utils.cc (is_dir, ensure_dir_path_created)
	(ensure_parent_dir_created): Likewise, move these to ...
	* tools/abg-tools-utils.cc (is_dir, ensure_dir_path_created)
	(ensure_parent_dir_created): ... here in this new file.
	(dir_name, base_name): Define these.
	* tools/Makefile.am: New file.  Create a new libtoolsutils.la
	static library with stuff from tools/abg-tools-utils.cc in it.
	Also create a new 'biar' program with the stuff from the new
	tools/biar.cc in it.
	* tools/biar.cc: New file.  Contains the code for the new "biar"
	archive manipulation command line utility.
	* tests/test-read-write.cc (main): Adjust for the change about
	ensure_parent_dir_created above.
	* tests/test-write-read-archive.cc (main): Likewise.
	* Makefile.am (SUBDIRS): Add the new tools/ sub-directory to the
	build system.
	* configure.ac (AC_CONFIG_FILES): Generate tools/Makefile.
	* tests/Makefile.am: Make libtestutils.la link with the new
	libtoolsutils.la.  Make sure to express the dependencies between
	libtestutils.la and the binaries that depend on it.  Otherwise
	parallel builds can go awry.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Define translation_unit{_sptr,s} types in abigail::
	* include/abg-corpus.h (abigail::corpus::{translation_unit_sptr,
	translation_units):  Do not define these typedefs here.  Rather)
	(define them ...
	* include/abg-ir.h
	(abigail::{translation_units,translation_unit_sptr): ... here.
	This is because a translation unit can be manipulated
	independently from an abi corpus.
	* src/abg-corpus.cc (corpus::get_translation_units): Adjust return
	type to comply with the change above.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Fix header inclusion in abg-corpus.h
	* include/abg-corpus.h: Drop incomplete abg-traverse.h and
	abg-fwd.h.  Use abg-ir.h proper and be done with it.  Users of the
	library will just have to use abg-corpus.h to manipulate and the
	archives and the IR they contain.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Add error message to translation_unit::write
	* src/abg-writer.cc (translation_unit::write): Add an error
	message to stderr if something ultimately went wrong.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Rename abigail::corpus::{get_file_path --> get_path}
	* include/abg-corpus.h (corpus::{get_path, set_path): Renamed
	corpus::get_file_path and corpus::set_file_path into these as
	get_path/set_path is what is used elsewhere as well.
	* src/abg-corpus.cc (corpus::{get_path, set_path}): Likewise.
	* tests/test-write-read-archive.cc (main): Adjust for the change
	above.

2013-08-29  Dodji Seketeli <dodji@redhat.com>

	Cleanup src/Makefile.am
	* src/Makefile.am: Fix library naming and remove useless trailing
	space from directory path.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Initial writing/reading of an ABI corpus to an archive
	* configure.ac: Support detection of libzip dependency. Define
	new DEPS_CFLAGS and DEPS_LIBS variables for use in
	Makefile.am to refer to the dependency headers and
	libraries.
	* doc/website/mainpage.txt: Update this to talk about the new
	libzip dependency.
	* include/Makefile.am: Add abg-libzip-utils.h to the build system.
	* include/abg-corpus.h (corps): Hide abigail::corpus's private behind a
	pimpl idiom.
	(corpus::{drop_translation_units, get_file_path, set_file_path,
	write, read}): New methods.
	* include/abg-libxml-utils.h (new_reader_from_buffer): Declare new
	function.
	* include/abg-libzip-utils.h: New file.
	* src/Makefile.am: Add abg-corpus.cc and abg-libzip-utils.cc to
	the build system.  Refer to the library and headers dependencies
	via the new DEPS_LIBS and DEPS_CFLAGS variables.
	* src/abg-corpus.cc: New file.
	* src/abg-ir.cc (translation::set_path): New method.
	* src/abg-libxml-utils.cc (new_reader_from_buffer): Define new
	function.
	* src/abg-libzip-utils.cc: New file.
	* src/abg-reader.cc (translation_unit::read): New overload.
	* src/abg-writer.cc: Inject the names from the std namespace into
	the abigail namespace, rather than into abigail::writer.
	(abigail::translation_unit::write): New overload.  This can now
	use ofstream and the other stuff from std that are injected in the
	abigail:: namespace.
	* tests/Makefile.am: Add tests/test-write-read-archive.cc to the
	build system; use that to build runtestwritereadarchive.  Also add
	the input test data from
	tests/data/test-write-read-archive/test[0-4].xml.
	* /tests/data/test-write-read-archive/test[0-4].xml: New test
	input data files.
	* tests/test-write-read-archive.cc: New test for this archive
	write/read support.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Fix & add missing API documentation
	* src/abg-ir.cc (location_manager::create_new_location): Fix
	documentation comment.  (translation_unit::translation_unit)
	(translation_uni::get_global_scope, translation_unit::get_path)
	(translation_unit::traverse, translation_unit::get_loc_mgr)
	(translation_unit::is_empty, translation_unit::traverse): Add
	missing documentation comments.
	* src/abg-libxml-utils.cc (new_reader_from_file): Fix comment.
	* src/abg-reader.cc (translation_unit::read): Likewise.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Remove useless header inclusion
	* include/abg-traverse.h: Remove useless #include <tr1/memory>

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Misc white space cleanups
	* include/abg-corpus.h: Cleanup white spaces.
	* include/abg-fwd.h: Likewise.
	* include/abg-ir.h: Likewise.
	* include/abg-libxml-utils.h: Likewise.
	* src/abg-config.cc: Likewise.
	* src/abg-ir.cc: Likewise.
	* src/abg-reader.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Small cleanup in abg-config.cc
	* src/abg-config.cc: Include auto-generated
	$(top_builddir)/config.h file.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Pass absolute paths to the compiler during the build
	* src/Makefile.am: Pass absolute file paths to the compiler during
	the build.  This helps in e.g in emacs' compilation mode, when the
	output shows an error reported by GCC's diagnostics, setting point
	to the error line and hitting 'enter' transports the user to the
	file location where the error happened; as the file path is nows
	absolute, emacs can always find it.  Otherwise, finding it depends
	on $PWD and whatnot.
	* tests/Makefile.am: Likewise.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Misc cleanups in abg-fwd.h
	* include/abg-fwd.h: Move location, location_manager and
	translation_unit in the ir section.  Remove stuff that was
	commented out anyway.

2013-08-27  Dodji Seketeli <dodji@redhat.com>

	Move location, location_manager & translation_unit back into abg-ir.h
	* include/abg-corpus.h: Move location location_manager,
	translation_unit from here ...
	* include/abg-ir.h: ... to here.  The reason being that these are
	really constructs of the Internal Representation of the ABI/API of
	a translation unit.  What is left in abg-corpus is really
	exclusively related to an ABI Corpus, which I see more as a
	"packaging" construct that abstracts the bundling of several
	translation units together.  Also, I fixed some comments about the
	location/location_manger types; now a location is made specific to
	a translation unit; to an abi corpus.  A location of a given
	translation unit has to be decoded by the location manager of that
	same translation unit.

2013-08-22  Dodji Seketeli <dodji@redhat.com>

	Make libxml2 a private dependency wrt pkconfig
	* libabigail.pc.in: Libxml2 is not exposed to clients so make it
	be a private dependency.

2013-08-22  Dodji Seketeli <dodji@redhat.com>

	White space fix in COMPILING
	* COMPILING: White space fix.

2013-08-22  Dodji Seketeli <dodji@redhat.com>

	Add abg-version.h.in to the source distribution & cleanup
	* include/Makefile.am:  Add abg-version.h.in to the source
	distribution.
	* configure.ac: Generate abg-version.h in using the existing
	AC_CONFIG_FILES macro call.

2013-08-22  Dodji Seketeli <dodji@redhat.com>

	Support pkgconfig through a new libabigail.pc file
	* libabigail.pc.in: New pkgconfig file.
	* configure.ac: Define the LIBXML2_VERSION variable that is used
	in the libabigail.pc.in file.  Generate the libabigail.pc file
	from its libabigail.pc.in template.
	* Makefile.am: Add libabigail.pc.in to the source distribution.
	Install the generated libabigail.pc to the right destination.

2013-08-21  Dodji Seketeli <dodji@redhat.com>

	Tweak the apidoc mainpage
	* include/abg-fwd.h<doxygen markup>: Fix link to the project web
	page and for git check-out.

2013-08-21  Dodji Seketeli <dodji@redhat.com>

	Initial website generation-fu using Doxygen
	* doc/website/mainpage.txt: New file representing the input for
	the website.
	* doc/website/libabigail-website.doxy: New file representing the
	doxygen configuration for the website generation.
	* doc/api/libabigail.doxy: Output doxygen generation warnings into
	a file.
	* doc/Makefile.am: Support generating the website from doxygen.
	Update the api generation relevant macros names for better
	consistency.  Make "make html" generate the website too.  Make
	"make clean" erase the website bits too.  Add a 'website'
	target to make the website.

2013-08-21  Dodji Seketeli <dodji@redhat.com>

	Fix typo in CONTRIBUTING file
	* CONTRIBUTING: Fix typo, courtesy of Mark Wielaard.

2013-08-19  Dodji Seketeli <dodji@redhat.com>

	Remove autotools-generated files
	* Makefile.in: Remove this autotools-generated file.  I know that
	people in the GCC-realm like storing these autotools-generated
	files into the source control system, but I believe in this day
	and age, this is annoying (to say the least) for the project
	developers for no good reason.  Requiring (the ubiquitous)
	autoconf for building from source is no big deal today, and typing
	"autoreconf" is not hard to do, really.  And it saves the
	developers for having to update a bunch of boilerplate
	automatically generated files into the source control system; this
	is really unnecessary noise and it is a commonly accepted good
	practice to avoid doing it these days.  To help people who do not
	know how to handle this, there is a COMPILING file in the source
	tree that explains how to build the project from sources.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* include/Makefile.in: Likewise.
	* src/Makefile.in: Likewise.
	* doc/Makefile.in: Likewise.
	* tests/Makefile.in: Likewise.

2013-08-19  Dodji Seketeli <dodji@redhat.com>

	Add a new COMPILING file explaining how to build the package
	* COMPILING: New file.

2013-08-14  Dodji Seketeli <dodji@redhat.com>

	Remove name of unused parameter in decl_base::traverse.
	* src/abg-ir.c (decl_base::traverse): Remove name of unused parameter.

2013-08-14  Dodji Seketeli <dodji@redhat.com>

	install headers in $includedir/libabigail
	* include/Makefile.am: Install headers in $includedir/libabigail

2013-08-14  Dodji Seketeli <dodji@redhat.com>

	For usage from within GCC set header path to $includedir/libabigail
	* abigail.m4:  The include path used for compilation goes to
	$includedir/libabigail.

2013-08-08  Benjamin Kosnik <bkoz@redhat.com>

	Separate out bits from the ir header.
	* include/abg-irfwd.h: Move to...
	* include/abg-fwd.h: ...this.
	* include/abg-ir.h (traverse_base): Move to...
	* include/abg-traverse.h: ...here. New.
	* include/abg-ir.h (location, location_manager, translation_unit):
	Move to...
	* include/abg-corpus.h: ...here.
	* include/Makefile.am: Adjust.
	* include/Makefile.in: Regenerate.

2013-08-07  Benjamin Kosnik <bkoz@redhat.com>

	Template naming compression.
	* include/abg-ir.h: Template naming compressions.
	(class_template_decl): To class_tdecl.
	(function_template_decl): To function_tdecl.
	(template_type_parameter): To type_tparameter.
	(template_non_type_parameter): To non_type_tparameter.
	(template_template_parameter): To template_tparameter.
	(tmpl_parm_type_composition): To type_composition.
	* include/abg-irfwd.h: Same.
	* src/abg-hash.cc: Same.
	* src/abg-ir.cc: Same.
	* src/abg-reader.cc: Same.

2013-08-07  Benjamin Kosnik <bkoz@redhat.com>

	Slight change to doxy config.
	* doc/api/libabigail.doxy: Turn off namespace scopes, on all the viz.

2013-08-07  Benjamin Kosnik <bkoz@redhat.com>

	Move class_decl nested types out-of-line.
	* include/abg-ir.h (class_decl): Move nested types out of line.

2013-08-07  Benjamin Kosnik <bkoz@redhat.com>

	Rename class_decl::method to class_decl::method_base.
	* include/abg-ir.h (class_decl::member): To member_base.
	* src/abg-hash.cc: Same.
	* src/abg-ir.cc: Same.
	* src/abg-writer.cc: Same.

2013-08-07  Benjamin Kosnik <bkoz@redhat.com>

	Nest hashers.
	* include/abg-ir.h: Nest all hashers.
	* include/abg-irfwd.h (abigail): Don't inject std::tr1::hash.
	Remove hasher forward declarations.
	* include/abg-hash.h: Tweak.
	* src/abg-hash.cc: Define hashers here.
	* src/abg-ir.cc: Adjust for above.
	* src/abg-reader.cc: Same.
	* src/abg-writer.cc: Same.

2013-08-06  Benjamin Kosnik <bkoz@redhat.com>

	Rename abi_corpus to corpus
	* include/abg-corpus.h (abi_corpus): Change to corpus.
	* include/abg-hash.h: Tweaks.
	* include/abg-libxml-utils.h: Same.

2013-08-06  Benjamin Kosnik <bkoz@redhat.com>

	Simplify interface for serializing/deserializing translation_units.
	* include/abg-ir.h (translation_unit::read): New member function.
	(translation_unit::write): Same.
	* src/abg-reader.cc (translation_unit::read): Define.
	* src/abg-writer.cc (translation_unit::write): Define.
	* include/abg-reader.h: Remove.
	* include/abg-writer.h: Remove.
	* include/Makefile.am (headers): Same.
	* include/Makefile.in: Regenerate.

2013-08-06  Benjamin Kosnik <bkoz@redhat.com>

	First pass clean reading API.
	* include/abg-reader.h (read_file): Remove extraneous file parameter.
	* src/abg-reader.cc: Same.
	* tests/test-read-write.cc: Adjust.

2013-08-06  Benjamin Kosnik <bkoz@redhat.com>

	Rename traversable to traversable_base, move up the _decl hierarchy via decl_base derivation.
	* include/abg-ir.h (traversable): To traversable_base.
	(decl_base): Inherit from traversable_base.
	(decl_base::traverse): Null definition.
	(function_decl, etc.): Remove traversable_base as base class.

2013-08-06  Benjamin Kosnik <bkoz@redhat.com>

	Standardize typedef naming. Plural form is the container form, smart_ptr types are type + _sptr.
	* include/abg-ir.h (scope_decl): Add declarations, scopes as types.
	(function_type): Add parameter_sptr, parameters as types.
	(enum_type_decl): Add type_sptr, enumerators as types.
	(class_decl): Adjust typedefs for consistency.  Change
	base_specs_type to base_specs, member_types_type to member_types,
	data_members_type to data_members, member_functions_type to
	member_functions, member_function_templates_type to
	member_function_templates, member_class_templates_type to
	member_class_templates.

2013-08-02  Benjamin Kosnik <bkoz@redhat.com>

	Doxygen markup fixes final.
	* include/abg-config.h: Doxygen cleanups round two.
	* include/abg-hash.h: Same.
	* include/abg-ir.h: Same.
	* include/abg-irfwd.h: Same.
	* include/abg-libxml-utils.h: Same.
	* src/abg-config.cc: Same.
	* src/abg-hash.cc: Same.
	* src/abg-ir.cc: Same.
	* src/abg-reader.cc: Same.
	* src/abg-writer.cc: Same.

2013-08-01  Benjamin Kosnik <bkoz@redhat.com>

	Forward decls for abg-ir.h, doxygen fixups, restyle.
	* include/abg-irfwd.h: New file for forward declarations.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/*: Forward declare, doxygen fixups, restyle.
	* src/*: Same.
	* src/abg-corpus.cc: Empty, removed.
	* doc/api/libabigail.doxy: Tweak.

2013-08-01  Benjamin Kosnik <bkoz@redhat.com>

	Add virtual dtor to translation_unit.
	* include/abg-ir.h (translation_unit): Add virtual dtor.
	* src/abg-ir.cc: Define.

2013-08-01  Benjamin Kosnik <bkoz@redhat.com>

	Adjust doxygen input path.
	* doc/api/libabigail.doxy: Adjust include directory.

2013-08-01  Benjamin Kosnik <bkoz@redhat.com>

	Collapse subdir of include to include.
	* include/libabigail/abg-*.h: Move to...
	* include/abg-*.h
	* include/libabigail: Remove.
	* configure.ac: Adjust include location from libabigail/include to
	include.
	* Makefile.in: Same.
	* aclocal.m4: Same.
	* configure: Same.
	* doc/Makefile.in: Same.
	* include/Makefile.am: Same.
	* src/Makefile.am: Same.
	* src/Makefile.in: Same.
	* tests/Makefile.am: Same.
	* tests/Makefile.in: Same.

2013-07-23  Dodji Seketeli <dodji@seketeli.org>

	Update autotool auto-generated files
	* Makefile.in: Updated.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* doc/Makefile.in: Likewise.
	* src/Makefile.in: Likewise.
	* tests/Makefile.in: Likewise.

2013-07-20  Dodji Seketeli <dodji@seketeli.org>

	Implement a translation unit traversal API
	* include/libabigail/abg-ir.h (struct ir_node_visitor, struct
	traversable): New interfaces.
	(translation_unit, scope_decl, type_decl, qualified_type_def)
	(pointer_type_def, reference_type_def, enum_type_decl)
	(typedef_decl, var_decl, function_decl, data_member)
	(member_function, member_function_template)
	(member_class_template): Implement the traversable interface,
	overload the traversable::traverse pure virtual function.
	* src/abg-ir.cc ({translation_unit, scope_decl, type_decl,
	namespace_decl, qualified_type_def, pointer_type_def,
	reference_type_def, enum_type_decl, typedef_decl, var_decl,
	function_decl, class_decl::member_function, class_decl,
	class_decl::data_member, class_decl::member_function_template,
	class_decl::member_class_template, function_template_decl,
	class_template_decl, }::traverse): Implement traversal.
	(ir_node_visitor::visit): New method, overloaded for the types
	above, which implement the traversable interface.
	* tests/test-walker.cc: New test case program to showcase how to
	use the new traversal API.
	* tests/makefile.am: Add test-walker.cc to the build system.

2013-07-19  Dodji Seketeli <dodji@seketeli.org>

	By default, statically link libabigail with whoever uses abigail.m4
	* abigail.m4: Make $abigaillibs statically link libabigail by default.

2013-07-19  Dodji Seketeli <dodji@seketeli.org>

	Move static member definition to abg-viz-dot.cc file
	* include/libabigail/abg-viz-dot.h: Move definition of
	node_base::_M_count_total to ...
	* src/abg-viz-dot.cc: ... here.

2013-07-19  Dodji Seketeli <dodji@seketeli.org>

	Put headers in include/libabigail
	* include/libabigail: New directory.
	* include/Makefile.am:  New file.
	* include/libabigail/Makefile.am: New file.
	* src/abg-*.h: Move these in include/libabigail/*.h
	* src/Makefile.am: Set -I option to look for headers in include/libabigail
	* doc/api/libabigail.doxy: Look for headers in include/libabigail
	* tests/Makefile.am: Set -I option to look for headers in include/libabigail
	* abigail.m4: Set includedir to $prefix/include/libabigail for
	library used as a dep, or to srcdir/libabigail/include/libabigail
	in GCC source tree.
	* configure.ac: Add Makefile.am in include and include/libabigail
	* abigail.m4: Look for headers in include/libabigail when the
	libabigail is in in the source tree and in $incdir/libabigail when
	it is installed as a dependency.

2013-07-18  Benjamin Kosnik <bkoz@redhat.com>

	Install into docdir, turn off collaboration graphs.
	* doc/Makefile.am (doc-install-html-doxygen): Install generated
	files into docdir.
	* doc/api/libabigail.doxy (COLLABORATION_GRAPH): Turn off.

2013-07-18  Benjamin Kosnik <bkoz@redhat.com>

	Fix dependencies for api/html output directory.
	* doc/Makefile.am: Create abi output directory.

2013-07-16  Dodji Seketeli <dodji@seketeli.org>

	Prepare for publishing
	* COMMIT-LOG-GUIDELINES: New file.
	* CONTRIBUTING: New file.
	* README: Amended to refer to the first files above.

2013-07-16  Dodji Seketeli <dodji@seketeli.org>

	LGPLv3 License the library
	* COPYING-LGPLV3:  New file.
	* abg-config.cc: License the file to LGPLv3.
	* abg-config.h: Likewise.
	* abg-corpus.cc: Likewise.
	* abg-corpus.h: Likewise.
	* abg-hash.cc: Likewise.
	* abg-hash.h: Likewise.
	* abg-ir.cc: Likewise.
	* abg-ir.h: Likewise.
	* abg-libxml-utils.cc: Likewise.
	* abg-libxml-utils.h: Likewise.
	* abg-reader.cc: Likewise.
	* abg-reader.h: Likewise.
	* abg-writer.cc: Likewise.
	* abg-writer.h: Likewise.
	* src/abg-viz-common.cc: Likewise.
	* src/abg-viz-common.h: Likewise.
	* src/abg-viz-dot.cc: Likewise.
	* src/abg-viz-dot.h: Likewise.
	* src/abg-viz-svg.cc: Likewise.
	* src/abg-viz-svg.h: Likewise.
	* tests/test-read-write.cc: Likewise.
	* tests/test-utils.cc: Likewise.
	* tests/test-utils.h: Likewise.

2013-07-17  Dodji Seketeli <dodji@seketeli.org>

	Add assert.h in abg-ir.cc
	* src/abg-ir.cc: Add missing assert.h

2013-07-17  Dodji Seketeli <dodji@seketeli.org>

	Fix missing license blurbs
	* src/abg-config.cc: Fix licensing blurb.
	* src/abg-config.h: Likewise.
	* src/abg-corpus.cc: Likewise.
	* src/abg-corpus.h: Likewise.
	* src/abg-ir.cc: Likewise.
	* src/abg-ir.h: Likewise.
	* src/abg-reader.cc: Likewise.
	* src/abg-writer.cc: Likewise.

2013-07-02  Benjamin Kosnik <bkoz@redhat.com>

	Correct DOT merge.
	* src/abg-viz-common.h: Use _M_attributes for attribute overflows.
	* src/abg-viz-dot.h: Merge in correct node_base.
	* src/abg-viz-dot.cc: Same.
	* tests/test-dot.cc: Correct examples.
	* tests/Makefile.am: Add .gv to CLEANFILES.
	* tests/Makefile.in: Regenerate.

2013-07-02  Benjamin Kosnik <bkoz@redhat.com>

	Pull out common style type.
	* src/abg-viz-common.h: Pull out common style type.
	* src/abg-viz-dot.cc: Adjust scoping.
	* src/abg-viz-common.cc: Same.
	* src/abg-viz-dot.h: Use common style class.
	* src/abg-viz-svg.h: Same.

2013-07-02  Benjamin Kosnik <bkoz@redhat.com>

	Commonize visualization support.
	* src/abg-viz-svg.h: Move common code to...
	* src/abg-viz-dot.h: Move common code to...
	* src/abg-viz-common.h: ...here. New.
	* src/abg-viz-svg.cc: Move common code to...
	* src/abg-viz-common.cc: ...here. New.
	* src/Makefile.am: Add abg-viz-common.cc, abg-viz-common.h
	* src/Makefile.in: Regenerate.

2013-07-01  Benjamin Kosnik <bkoz@redhat.com>

	Initial DOT work.
	* doc/vizualization/layout/scripts/
	(inkscape_export_svg_to_plain_svg.sh): Move...
	(inkscape_export_svg_to_png_and_pdf.sh): Move...
	* scripts: ..here. New toplevel directory.
	* scripts/scripts/dot_to_png.sh: New.
	* scripts/scripts/dot_to_svg.sh: New.
	* src/Makefile.am: Add abg-viz-dot.cc, abg-viz-dot.h.
	* tests/Makefile.am: Add test-dot.cc.
	* src/abg-viz-dot.cc: New.
	* src/abg-viz-dot.h: New.
	* tests/test-dot.cc: New.
	* doc/vizualization/graph: New.
	* doc/vizualization/graph/gv/sa-A.gv: New.
	* doc/vizualization/graph/gv/sa-B.gv: New.
	* doc/vizualization/graph/gv/sa-C1.gv: New.
	* doc/vizualization/graph/gv/sa-C2.gv: New.
	* doc/vizualization/graph/gv/sa-C3.gv: New.
	* doc/vizualization/graph/gv/sa-C4.gv: New.
	* doc/vizualization/graph/gv/sa-D1.gv: New.
	* doc/vizualization/graph/gv/sa-D2.gv: New.
	* doc/vizualization/graph/gv/sa-D2v.gv: New.
	* doc/vizualization/graph/gv/sa-D3.gv: New.
	* doc/vizualization/graph/gv/sa-D3v.gv: New.
	* doc/vizualization/graph/gv/sa-D4v.gv: New.
	* doc/vizualization/graph/gv/sa-D5v1.gv: New.
	* doc/vizualization/graph/gv/sa-D5v2.gv: New.
	* doc/vizualization/graph/gv/sa-DD1.gv: New.
	* doc/vizualization/graph/gv/sa-DD2.gv: New.
	* doc/vizualization/graph/gv/sa-DD3.gv: New.
	* doc/vizualization/graph/gv/sa-DD4.gv: New.
	* doc/vizualization/graph/gv/sa-DD5.gv: New.
	* doc/vizualization/graph/gv/sa-base.gv: New.
	* doc/vizualization/graph/png/sa-A.png: New.
	* doc/vizualization/graph/png/sa-B.png: New.
	* doc/vizualization/graph/png/sa-C1.png: New.
	* doc/vizualization/graph/png/sa-C2.png: New.
	* doc/vizualization/graph/png/sa-C3.png: New.
	* doc/vizualization/graph/png/sa-C4.png: New.
	* doc/vizualization/graph/png/sa-D1.png: New.
	* doc/vizualization/graph/png/sa-D2.png: New.
	* doc/vizualization/graph/png/sa-D2v.png: New.
	* doc/vizualization/graph/png/sa-D3.png: New.
	* doc/vizualization/graph/png/sa-D3v.png: New.
	* doc/vizualization/graph/png/sa-D4v.png: New.
	* doc/vizualization/graph/png/sa-D5v1.png: New.
	* doc/vizualization/graph/png/sa-D5v2.png: New.
	* doc/vizualization/graph/png/sa-DD1.png: New.
	* doc/vizualization/graph/png/sa-DD2.png: New.
	* doc/vizualization/graph/png/sa-DD3.png: New.
	* doc/vizualization/graph/png/sa-DD4.png: New.
	* doc/vizualization/graph/png/sa-DD5.png: New.
	* doc/vizualization/graph/png/sa-base.png: New.
	* doc/vizualization/graph/sources/sa-A.cc: New.
	* doc/vizualization/graph/sources/sa-B.cc: New.
	* doc/vizualization/graph/sources/sa-C.cc: New.
	* doc/vizualization/graph/sources/sa-D.cc: New.
	* doc/vizualization/graph/sources/sa-DD.cc: New.
	* doc/vizualization/graph/sources/sa-base.cc: New.
	* doc/vizualization/graph/svg/sa-A.svg: New.
	* doc/vizualization/graph/svg/sa-B.svg: New.
	* doc/vizualization/graph/svg/sa-C1.svg: New.
	* doc/vizualization/graph/svg/sa-C2.svg: New.
	* doc/vizualization/graph/svg/sa-C3.svg: New.
	* doc/vizualization/graph/svg/sa-C4.svg: New.
	* doc/vizualization/graph/svg/sa-D1.svg: New.
	* doc/vizualization/graph/svg/sa-D2.svg: New.
	* doc/vizualization/graph/svg/sa-D2v.svg: New.
	* doc/vizualization/graph/svg/sa-D3.svg: New.
	* doc/vizualization/graph/svg/sa-D3v.svg: New.
	* doc/vizualization/graph/svg/sa-D4v.svg: New.
	* doc/vizualization/graph/svg/sa-D5v1.svg: New.
	* doc/vizualization/graph/svg/sa-D5v2.svg: New.
	* doc/vizualization/graph/svg/sa-DD1.svg: New.
	* doc/vizualization/graph/svg/sa-DD2.svg: New.
	* doc/vizualization/graph/svg/sa-DD3.svg: New.
	* doc/vizualization/graph/svg/sa-DD4.svg: New.
	* doc/vizualization/graph/svg/sa-DD5.svg: New.
	* doc/vizualization/graph/svg/sa-base.svg: New.

2013-07-01  Benjamin Kosnik <bkoz@redhat.com>

	Regenerate build/configure.
	* aclocal.m4:
	* configure:

2013-06-06  Benjamin Kosnik <bkoz@redhat.com>

	Regenerate configure files.
	* Makefile.in:
	* aclocal.m4:
	* configure:
	* doc/Makefile.in:
	* src/Makefile.in:
	* tests/Makefile.in:

2013-05-28  Benjamin Kosnik <bkoz@redhat.com>

	Add svg generation.
	* src/Makefile.am: Add abg-viz-svg.cc, abg-viz-svg.h.
	* tests/Makefile.am: Add test-svg.cc.
	* src/abg-viz-svg.cc: New.
	* src/abg-viz-svg.h: New.
	* tests/test-svg.cc: New.

2013-05-22  Benjamin Kosnik <bkoz@redhat.com>

	Remove ChangeLog
	* ChangeLog: Remove content.

2013-05-21  Benjamin Kosnik <bkoz@redhat.com>

	Fixup abg-version.h merge duplicate.
	* configure.ac: Remove src/abg-version.h merge duplicate.

2013-05-20  Benjamin Kosnik <bkoz@redhat.com>

	Add doc/visualization/layout.
	* doc/vizualization/layout: New.
	* doc/vizualization/layout/pdf/sa-A.pdf: New.
	* doc/vizualization/layout/pdf/sa-B.pdf: New.
	* doc/vizualization/layout/pdf/sa-C1.pdf: New.
	* doc/vizualization/layout/pdf/sa-C2.pdf: New.
	* doc/vizualization/layout/pdf/sa-C3.pdf: New.
	* doc/vizualization/layout/pdf/sa-D1.pdf: New.
	* doc/vizualization/layout/pdf/sa-D2.pdf: New.
	* doc/vizualization/layout/pdf/sa-D2v.pdf: New.
	* doc/vizualization/layout/pdf/sa-D3.pdf: New.
	* doc/vizualization/layout/pdf/sa-D3v.pdf: New.
	* doc/vizualization/layout/pdf/sa-D4v.pdf: New.
	* doc/vizualization/layout/pdf/sa-DD1.pdf: New.
	* doc/vizualization/layout/pdf/sa-DD2.pdf: New.
	* doc/vizualization/layout/pdf/sa-DD3.pdf: New.
	* doc/vizualization/layout/pdf/sa-DD4.pdf: New.
	* doc/vizualization/layout/pdf/sa-DD5.pdf: New.
	* doc/vizualization/layout/pdf/sa-base.pdf: New.
	* doc/vizualization/layout/png/sa-A.png: New.
	* doc/vizualization/layout/png/sa-B.png: New.
	* doc/vizualization/layout/png/sa-C1.png: New.
	* doc/vizualization/layout/png/sa-C2.png: New.
	* doc/vizualization/layout/png/sa-C3.png: New.
	* doc/vizualization/layout/png/sa-D1.png: New.
	* doc/vizualization/layout/png/sa-D2.png: New.
	* doc/vizualization/layout/png/sa-D2v.png: New.
	* doc/vizualization/layout/png/sa-D3.png: New.
	* doc/vizualization/layout/png/sa-D3v.png: New.
	* doc/vizualization/layout/png/sa-D4v.png: New.
	* doc/vizualization/layout/png/sa-DD1.png: New.
	* doc/vizualization/layout/png/sa-DD2.png: New.
	* doc/vizualization/layout/png/sa-DD3.png: New.
	* doc/vizualization/layout/png/sa-DD4.png: New.
	* doc/vizualization/layout/png/sa-DD5.png: New.
	* doc/vizualization/layout/png/sa-base.png: New.
	* doc/vizualization/layout/scripts/
	(inkscape_export_svg_to_plain_svg.sh): New.
	(inkscape_export_svg_to_png_and_pdf.sh): New.
	* doc/vizualization/layout/sources/sa-A.cc: New.
	* doc/vizualization/layout/sources/sa-B.cc: New.
	* doc/vizualization/layout/sources/sa-C.cc: New.
	* doc/vizualization/layout/sources/sa-D.cc: New.
	* doc/vizualization/layout/sources/sa-DD.cc: New.
	* doc/vizualization/layout/sources/sa-base.cc: New.
	* doc/vizualization/layout/svg/sa-A.svg: New.
	* doc/vizualization/layout/svg/sa-B.svg: New.
	* doc/vizualization/layout/svg/sa-C1.svg: New.
	* doc/vizualization/layout/svg/sa-C2.svg: New.
	* doc/vizualization/layout/svg/sa-C3.svg: New.
	* doc/vizualization/layout/svg/sa-D1.svg: New.
	* doc/vizualization/layout/svg/sa-D2.svg: New.
	* doc/vizualization/layout/svg/sa-D2v.svg: New.
	* doc/vizualization/layout/svg/sa-D3.svg: New.
	* doc/vizualization/layout/svg/sa-D3v.svg: New.
	* doc/vizualization/layout/svg/sa-D4v.svg: New.
	* doc/vizualization/layout/svg/sa-DD1.svg: New.
	* doc/vizualization/layout/svg/sa-DD2.svg: New.
	* doc/vizualization/layout/svg/sa-DD3.svg: New.
	* doc/vizualization/layout/svg/sa-DD4.svg: New.
	* doc/vizualization/layout/svg/sa-DD5.svg: New.
	* doc/vizualization/layout/svg/sa-base.svg: New.

2013-05-20  Benjamin Kosnik <bkoz@redhat.com>

	Generate abg-version.h at configure time.
	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
	* src/Makefile.am: Remove abg-version.h generation rules.
	* src/abg-version.h.in: New.

2013-04-02  Benjamin Kosnik <bkoz@redhat.com>

	Add doc dir. Add Doxgen api generation rules.
	* doc: Add.
	* doc/Makefile.am (html, install-html): Add.
	* doc/Makefile.in: Add.
	* doc/api/libabigail.doxy: Add doxygen config.
	* src/abg-*: Add @file markup.

2013-03-27  Benjamin Kosnik <bkoz@redhat.com>

	Add configure to source control
	* configure: Add.
	* src/abg-corpus.cc: include stdexcept

2013-06-25  Dodji Seketeli <dodji@redhat.com>

	Support offsets and virtual attribute in base class specifiers
	* src/abg-ir.h (class_decl::base_spec::base_spec): Take an offset
	and a is_virtual flag.
	(class_decl::base_spec::{get_is_virtual, get_offset_in_bits}): New
	methods.
	(class_decl::has_no_base_nor_member): New method declaration..
	* src/abg-ir.cc (class_decl::base_spec::base_spec): Take an offset
	and a is_virtual flag
	(class_decl::has_no_base_nor_member): Define it.
	* src/abg-reader.cc (read_offset_in_bits): Renamed
	read_var_offset_in_bits into this.
	(read_is_virtual): New static function.
	(build_class_decl): Read the 'layout-offset-in-bits' and the
	'is-virtual' of the base class specifier.  Adjust for the
	read_var_offset_in_bits -> read_offset_in_bits rename.
	* src/abg-writer.cc (write_layout_offset): New overload for the
	base class specifiers.
	(write_class_decl): If the class has no member or base class, make
	it a proper empty xml element.  Write the offset and the
	is-virtual attribute.
	* tests/data/test-read-write/test20.xml: New test input data.
	* tests/test-read-write.cc: De-serialize the test above, serialize
	it back and compare that both versions are the same.

2013-06-22  Dodji Seketeli <dodji@redhat.com>

	Iron out support for simple base classes.
	* src/abg-ir.h (class_decl::base_spec::base_spec): Move this
	out-of-line.  Add a new constructor for clients compiled without
	RTTI.
	* src/abg-ir.cc (class_decl::base_spec::base_spec):  This is now
	here out-of-line.  Define the new constructor for clients compiled
	without RTTI.
	* tests/data/test-read-write/test19.xml: New test case input for
	base classes.
	* tests/test-read-write.cc: De-serialize and serialize the new
	test case input above.

2013-06-21  Dodji Seketeli <dodji@redhat.com>

	Fix handling of forward decl of classes
	* abg-ir.h (class_decl::set_earlier_declaration): Move this
	out-of-line and add an overload.
	* src/abg-ir.cc (class_decl::set_earlier_declaration): Moved this
	out-of-line here and add an overload.
	* src/abg-reader.cc (build_class_decl): Really read the
	'decl-of-decl-id' property.  Do not make the definition use the id
	of the declaration.  Both have their id.
	* src/abg-writer.cc (write_class_decl):  Put a space before the
	property "def-of-decl-id".
	* tests/data/test-read-write/test18.xml: New test input.
	* tests/test-read-write.cc: De-serialize this new input, serialize
	it back and make sure both versions are identical.

2013-06-21  Dodji Seketeli <dodji@redhat.com>

	Serialize the layout offset of class data members.
	* src/abg-writer.cc (write_layout_offset): New function.
	(write_class_decl): Serialize the layout offset.

2013-06-21  Dodji Seketeli <dodji@redhat.com>

	Support Bitwise OR for qualified_type_def::CV better
	* src/abg-ir.h (qualified_type_def::CV_RESTRICT): New enumerator
	for the qualified_type_def::CV enum.
	(operator|(qualified_type_def::CV, qualified_type_def::CV)): New
	declaration.
	* src/abg-ir.cc (operator|(qualified_type_def::CV,
	qualified_type_def::CV)): New definition.
	* src/abg-reader.cc (build_qualified_type_decl): No need for
	casting the result of bitwise or between instances of
	qualified_type_def::CV.

2013-06-14  Dodji Seketeli <dodji@seketeli.org>

	Support method type/decl, variadic functions, class declarations-only
	* src/abg-ir.h (function_decl::parameter::parameter): New
	constructor with variadic parameter marker.
	(function_decl::m_type): Make this protected to let method_decl
	inheriting class to access it.
	(function_decl::get_type): Move this out-of-line.
	(class method_type, method_type_hash): New types.
	(enum class_decl::access_specifier): Add no_access new enumerator.
	(class_decl::data_member::data_member): Move this out-of-line.
	(class_decl::data_member::~data_member): Declare virtual
	destructor.
	(class method_decl): New class.
	(class member_function): Make this inherit method_decl, instead of
	function_decl.
	(class_decl::class_decl): New constructors.
	(class_decl::{hashing_started, is_declaration_only,
	set_earlier_declaration, get_earlier_declaration}): New methods.
	* src/abg-ir.cc (add_decl_to_scope): If a decl is already in a
	scope, don't add it to this scope.
	(get_global_scope): Make this work when passed an instance of
	global_scope.
	(dynamic_type_hash::operator()): Add support for method_type.
	(method_type::{method_type, set_class_type, ~method_type, })
	(method_type_hash::operator()): New defintions.
	(function_decl::get_type, class_decl::class_decl): Move these
	out-of-line here.
	(class_decl::method_decl::{method_decl, ~method_decl, get_type}):
	New definitions.
	(class_decl::member_function::member_function): Move this
	out-of-line here.  Support method_decl.
	(class_decl::data_member::data_member): Likewise.
	(class_decl_hash::operator()): Guard this against endless loop.
	* src/abg-reader.cc (write_class_is_declaration_only): New static
	function.
	(write_var_decl): Take a flag to write the mangled name or not.
	(write_function_decl): Take a flag to skip the first parameter.
	(write_cdtor_const_static): Use 'yes' instead of 'true' as value
	of the properties.
	(write_decl, write_function_template_decl): Adjust wrt the new
	signatures of write_var_decl and write_function_decl.
	(write_enum_type_decl): Simplify call to write_location.
	(write_class_decl): Support serializing declaration-only classes.
	* src/abg-writer.cc:
	* tests/data/test-read-write/test17.xml: New test input.
	* tests/test-read-write.cc: De-serialize the above, and serialize it back.
	* tests/data/test-read-write/test10.xml: Update this test.

2013-06-01  Dodji Seketeli <dodji@redhat.com>

	Support function_type and adapt a function_decl to use it
	* src/abg-ir.h (class function_type): Forward decl prior to class
	function_decl.
	(function_decl::parameter): Pass string by const reference.  Add a
	variadic marker member and initialize it.
	(function_decl::parameter::get_type): Add a non-const overload.
	(function_decl::parameter::get_variadic_marker): New getter.
	(function_decl::function_decl) Take a const reference to a vector
	for parameters, type size/alignment.  Add two overloads that takes a
	pointer to function_type.
	(function_decl::get_parameters): Move this out-of-line.
	(function_decl::append_parameter(s)): Renamed
	function_decl::add_parameter(s) into these.  Move it out-of-line.
	Add an overload.
	(function_decl::{get_type, set_type}): New declaration.
	(function_decl::get_return_type): Move this out-of-line.
	(function_decl::is_variadic): New in-line function.
	(function_decl::m_type): New data member.
	(function_decl::{m_parms, m_return_type}): Remove.  This are now
	carried by function_decl::m_type.
	(class function_type, struct function_type_hash): New
	declarations.
	(member_function::member_function): Take a vector of pointers to
	parameters.  Take size/align of the type of the member function.
	Adjust initialization.
	* src/abg-ir.cc (dynamic_type_hash): Hash instance of
	function_type accessed through a pointer.
	(function_type::{operator==, ~function_type})
	(function_type_hash::operaror(), function_decl::{get_return_type,
	}, function_decl::parameter::hash::operator()): New definitions.
	(function_decl::function_decl): The out-of-line definitions of the
	declarations above.
	(function_decl::append_parameter): Moved this out-of-line from
	inline function_decl::add_parameter.  Make this rely on the
	underlying m_type.
	(function_decl::operator==): Adjust for use of vector for the
	parameters.  Also, there is no need anymore to compare the
	parameters or the return types as they are compared by the
	comparison of the function types.
	* src/abg-reader.cc (build_function_decl): Read the new size/alignment
	attributes on the function-decl element.  Build a function_type
	and use it to build the function_decl.  Parameters and return type
	are now hung off of the function_type.
	(handle_function_decl): use build_function_decl.
	* src/abg-writer.cc (write_function_decl): Write the new
	size/alignment properties of the function-decl element.  Adjust
	for the use of vectors for function parameters now.
	* tests/data/test-read-write/test10.xml: Adjust for the presence
	of size/alignment properties in the function-decl element now.
	* tests/data/test-read-write/test11.xml: Likewise.
	* tests/data/test-read-write/test12.xml: Likewise.
	* tests/data/test-read-write/test13.xml: Likewise.
	* tests/data/test-read-write/test14.xml: Likewise.
	* tests/data/test-read-write/test9.xml: Likewise.

2013-06-01  Dodji Seketeli <dodji@redhat.com>

	Support null type hashing
	* src/abg-ir.cc (dynamic_type_hash::operator()(const type_base* t)
	const): Support hashing null type.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Add a couple of output file suffix configuration properties
	* src/abg-config.h (config::{get_tu_instr_suffix,
	set_tu_instr_suffix, get_tu_instr_archive_suffix,
	set_tu_instr_archive_suffix}): New decls.
	* src/abg-config.cc (config::{get_tu_instr_suffix,
	set_tu_instr_suffix, get_tu_instr_archive_suffix,
	set_tu_instr_archive_suffix}): New defs.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Add a new add_decl_to_scope overload
	* src/abg-ir.h (add_decl_to_scope): New declaration.
	* src/abg-ir.cc (add_decl_to_scope): New definition.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Ensure add_decl_to_scope properly updates the scope
	* src/abg-ir.h (scope_decl::m_member_scopes)
	(scope_decl::get_member_scopes): New declarations.
	(scope_decl::add_member_decl): Move this to ...
	* src/abg-ir.cc (scope_decl::add_member_decl): ... here.  Make it
	update the new scope_decl::m_member_scopes too.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Add translation_unit::get_path
	* src/abg-ir.cc (translation_unit::get_path): New declaration.
	* src/abg-ir.cc (translation_unit::get_path): New definition.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Link the global scope to its translation unit
	* src/abg-ir.h (global_scope::global_scope): Take a translation
	unit and initialize the tu member with it.
	* src/abg-ir.cc (translation_unit::get_global_scope): Initialize
	the global scope with its actual translation unit.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Have location numbers that are stable throughout translation unit editing
	* src/abg-irc.cc (location_manager::create_new_location): Just
	append the new expanded location to the end of the location
	vectors, and return the new size of the vector as the location
	number.  That way we don't change the location number of an
	expanded location that is already in the vector -- that change
	happens if we keep the vector sorted during the insertion.
	(location_manager::expand_location):  The index of the expanded
	location is the location number - 1.

2013-05-23  Dodji Seketeli <dodji@redhat.com>

	Fix in-source detection of the library for GCC
	* abigail.m4 (ABIGAIL_INIT): Don't forget to set abigaillibs when
	we detect the library in the source tree, particularly for GCC.

2013-05-21  Dodji Seketeli <dodji@redhat.com>

	Re-generate aclocal.m4
	* aclocal.m4: Re-generate with autoconf 2.64.

2013-05-21  Benjamin Kosnik <bkoz@redhat.com>

	Generate abg-version at configure time in builddir
	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
	* src/Makefile.am: Remote ad-hoc generation of abg-version.h from
	here.
	* src/abg-version.h.in: New file.
	* configure: Re-generate.
	* src/Makefile.in: Likewise.

2013-05-21  Dodji Seketeli <dodji@redhat.com>

	add abigail.m4 to the distribution
	* Makefile.am: Add abigail.m4 to the distribution.
	* Makefile.in: Re-generate.

2013-05-10  Dodji Seketeli <dodji@redhat.com>

	Pedantic fixes
	* src/abg-ir.h (enum decl_base::binding): Remove trailing space.
	(enum class_decl::access_specifier): Likewise.

2013-05-07  Dodji Seketeli <dodji@redhat.com>

	Fix for building libabigail inside the GCC tree
	* abigail.m4: Detect when we are in the GCC tree; disable version
	check in that case.

2013-05-07  Dodji Seketeli <dodji@redhat.com>

	Re-generate configury with autoconf 2.64
	* abigail.m4: Add licence header.
	* configure.ac: Re-generate configure script with autoconf 2.64
	like for GCC.

2013-05-07  Dodji Seketeli <dodji@redhat.com>

	Allow autoconf-based clients to detect the library
	* configure.ac: Define the components of the version number as
	autoconf variables.  Set the version number to 0.1.0
	* abigail.m4: New file
	* Makefile.am: Add abigail.m4 to the build system.  Install it in
	$(datadir)/aclocal.
	* src/Makefile.am: Generate and add abg-version.h from the version
	number autoconf variable defined in configure.ac.  Re-generate
	abg-version.h each time configure.ac changes.
	* src/abg-config.h (abigail_get_library_version): Declare ...
	* src/abg-config.cc (abigail_get_library_version): ... and define
	this wirth C linkage.  This is useful for autoconf tests to test
	for the presence of the library.
	* configure: Re-generate.
	* Makefile.in: Likewise.
	* src/Makefile.in: Likewise.
	* tests/Makefile.in: Likewise.

2013-05-03  Dodji Seketeli <dodji@redhat.com>

	Build system fix for make distcheck
	* Makefile.am: Support the doc sub-directory.  We don't have a
	COPYRIGHT file.
	* src/Makefile.am: Don't prefix the file paths by the absolute
	path of the src dir; current autotools know how to deal with it,
	otherwise and it break them.
	* tests/Makefile.am: Likewise.  Make sure to remove the output of
	the tests upon make clean.
	* Makefile.in: Re-generate.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* src/Makefile.in: Likewise.
	* tests/Makefile.in: Likewise.

2013-05-02  Dodji Seketeli <dodji@redhat.com>

	Initial support for member class templates
	* src/abg-ir.cc (class_decl::add_member_function_template): Fix
	comment.
	(class_decl::add_member_class_template)
	(class_decl::member_class_template::operator==)
	(class_decl::member_class_template_hash::operator()): New
	definitions.
	(class_decl::operator==): Compare member templates.  Fix logic.
	(class_decl::data_member_hash::operator())
	(class_decl::member_function_hash::operator())
	(class_decl::member_function_template_hash::operator()): Don't
	hash the is_static boolean as it's hashed as part of the 'member'
	sub-object hashing.
	(class_decl::member_function_template::operator==): Move this out
	of line here, from the header file.
	(class_decl_hash::operator()): Hash member class templates.
	* src/abg-ir.h (class_decl::member::{m_is_static,is_static}): Add the is_static
	boolean here, so that it's factorized out of the inherited classes
	of this class.
	(class_decl::data_member::{is_static, m_is_static})
	(class_decl::member_function::{is_static, m_is_static})
	(class_decl::member_function_template::{is_static, m_is_static}): Remove this
	as it's now part of the base 'member' class.
	(class_decl::data_member::operator==)
	(class_decl::member_function::operator==): Don't compare the
	is_static boolean as it's now compared as part of the 'member'
	sub-object comparison.
	(class_decl::member_function_template::operator==): Move this
	out-of-line into src/abg-ir.cc.
	(class class_decl::member_class_template, struct
	class_decl::member_class_template_hash)
	(class_decl::{add_member_class_template,
	get_member_class_templates}): New declarations.
	(class_decl::member_class_templates_type): New typedef.
	* src/abg-reader.cc (build_class_decl): Support de-serializing
	member class templates.
	* src/abg-writer.cc (write_class_decl): Likewise, support
	serializing member class templates.
	* tests/data/test-read-write/test16.xml: New test input.
	* tests/test-read-write.cc (int_out_specs[]): Add the new test
	input to the list of inputs that are de-serialized and serialized
	back.
	* tests/Makefile.am: Add the new test input to the distribution.

2013-05-02  Dodji Seketeli <dodji@redhat.com>

	Initial support of class templates
	* src/abg-ir.cc (class_template_decl::class_template_decl)
	(class_template_decl::set_pattern)
	(class_template_decl::operator==)
	(class_template_decl::~class_template_decl)
	(class_template_decl_hash::operator())
	(class_tmpl_shared_ptr_hash::operator()): New definitions.
	* src/abg-ir.h (class class_template_decl, struct
	class_tmpl_shared_ptr_hash, struct class_tmpl_shared_ptr_hash):
	New declarations.
	* src/abg-reader.cc (read_context::const_class_tmpl_map_it): New
	typedef.
	(read_context::get_fn_tmpl_decl): Fix comment.
	(read_context::{get_class_tmpl_decl,key_class_tmpl_decl})
	(build_class_template_decl, handle_class_template_decl): New
	definitions.
	(read_context::m_class_tmpl_map): New member.
	(handle_element): Support "class-template-decl" xml elements
	nodes.
	(build_class_decl): Add missing bits to comment.
	(build_function_template_decl): Fix spacing.
	* src/abg-writer.cc (class_tmpl_shared_ptr_map): New typedef.
	(write_context::m_class_tmpl_map): New member.
	(write_context::get_id_for_class_tmpl, write_class_template_decl):
	New definitions.
	(write_template_parameters): Factorize this this out from ...
	(write_function_template_decl): ... here.
	(write_decl): Support writing instances of class_template_decl.
	Fix spacing.
	* tests/data/test-read-write/test15.xml: New test input.
	* tests/Makefile.am: Add the new test15.xml input to the
	distribution.
	* tests/test-read-write.cc (in_out_specs): Add the new test15.xml
	test to the list of serialized output to be de-serialized and
	serialized back.

2013-05-02  Dodji Seketeli <dodji@redhat.com>

	Fix function_tempalte_decl init & hashing
	* src/abg-ir.cc (function_template_decl::operator==): Compare the
	patterns, not a pointer to them.
	(function_template_decl_hash::operator()): Don't try to hash null
	patterns.
	* src/abg-ir.h (function_template_decl::function_template_decl):
	Use function_template_decl::set_pattern to set the pattern here.

2013-04-30  Dodji Seketeli <dodji@redhat.com>

	Support member function templates
	* src:abg-ir.h: Move template declarations before class
	class_decl, so that class_decl can have member templates.
	(class class_decl::member_function_template)
	(class_decl::add_member_function_template)
	(class_decl::{base_specs_type, member_types_type,
	data_members_types, member_functions_type,
	member_function_templates_type}): New declarations.
	* src/abg-ir.cc (class_decl::add_member_function_template)
	(class_decl::member_function_template_hash::operator()): New
	definitions.
	(class_decl_hash::operator()):  Support hashing for member
	function templates.
	* src/abg-reader.cc (build_class_decl): Use the new
	class_decl::{member_types_type, data_members_type,
	member_functions_type, base_specs_type} types.  Support member
	function templates.
	* src/abg-writer.cc (write_cdtor_const_static): New definition.
	(write_class_decl): Support member function templates.
	* tests/data/test-read-write/test14.xml: New input data.
	* tests/Makefile.am: Add it to the distribution.
	* tests/test-read-write.cc (InOutSpec int_out_specs): De-serialize
	the new test input file, serialize it back and diff both results.

2013-04-25  Dodji Seketeli <dodji@redhat.com>

	Inheritance fix
	* src/abg-ir.h (class template_non_type_parameter): Make this
	inherit decl_base virtually.

2013-04-25  Dodji Seketeli <dodji@redhat.com>

	Small comment fix
	* src/abg-ir.h (class template_decl): Fix comment.

2013-04-25  Dodji Seketeli <dodji@redhat.com>

	Add some decl predicates
	* src/abg-ir.h (is_at_global_scope): Rename
	is_decl_at_global_scope into this.
	(is_at_class_scope, is_at_template_scope)
	(is_template_parameter, is_type)
	(is_template_parm_composition_type)
	(is_function_template_pattern, is_template_decl): New
	declarations.
	* src/abg-ir.cc (is_at_global_scope): Rename
	is_decl_at_global_scope into this.
	(is_at_class_scope, is_at_template_scope, is_template_parameter)
	(is_type, is_template_parm_composition_type)
	(is_function_template_pattern, is_template_decl): New definitions.
	* src/abg-reader.cc (update_depth_info_of_read_context): Use the
	new is_at_class_scope decl.

2013-04-25  Dodji Seketeli <dodji@redhat.com>

	Support composing template type parameters
	* src/abg-ir.h (class tmpl_parm_type_composition): New
	declaration.
	* src/abg-ir.cc
	(tmpl_parm_type_composition::tmpl_parm_type_composition)
	(tmpl_parm_type_composition::~tmpl_parm_type_composition): New
	definitions.
	* src/abg-reader.cc (build_tmpl_parm_type_composition): New
	function.
	(build_template_parameter): Support template parameter type
	composition.
	* src/abg-writer.cc (write_tmpl_parm_type_composition): New
	function.
	(write_template_non_type_parameter): Fix type-id attribute.
	(write_template_parameter): Support template parameter type
	composition.
	* tests/data/test-read-write/test13.xml: New test input.
	* tests/Makefile.am: Add it to the distribution.
	* tests/test-read-write.cc (InOutSpec in_out_spec): Add test13.xml
	to the list of xml file that are de-serialized and serialized back.

2013-04-24  Dodji Seketeli <dodji@redhat.com>

	Fix depth management during the parsing
	* src/abg-ir.cc (decl_base_hash::operator()):  Don't hash the
	context for decls in general.
	* src/abg-reader.cc (read_context::push_decl_to_current_scope)
	(read_context::push_and_key_type_decl): Add an overload that takes
	a node and update_depth_info boolean.
	(build_var_decl, build_type_decl, build_qualified_type_decl)
	(build_pointer_type_def, build_reference_type_def)
	(build_enum_type_decl, build_type_decl)
	(build_template_type_parameter, build_template_non_type_parameter)
	(build_template_template_parameter, build_template_parameter)
	(build_type): Make these functions take an update_depth_info
	parameter.  Pass it do read_context::push_and_key_type_decl or
	read_context::push_decl_to_current_scope rather than call
	update_read_context.
	(build_function_decl, build_class_decl)
	(build_function_template_decl): Change the seen_by_reader
	parameter into update_depth_info.  Pass the update_depth_info bool
	to read_context::push_decl_to_current_scope rather than call
	update_depth_info here.
	(handle_class, handle_function_template_decl): Adjust.
	* tests/data/test-read-write/test12.xml: Add new test input.
	* tests/test-read-write.cc (InOutSpec in_out_specs): Add it to the
	list of input to de-serialize, serialize back and compare the two.
	* tests/Makefile.am: Add the new test input to the distribution.

2013-04-23  Dodji Seketeli <dodji@redhat.com>

	Initial support for function templates
	* src/abg-ir.h (function_decl::set_return_type): New inline
	definition.
	(class template_decl, struct template_decl_hash, class
	template_parameter, struct template_parameter_hash, struct
	dynamic_template_parameter_hash, struct
	template_parameter_shared_ptr_hash, class template_type_parameter)
	(struct template_type_parameter_hash, class
	template_non_type_parameter, struct
	template_non_type_parameter_hash, class
	template_template_parameter, struct
	template_template_parameter_hash, class function_template_decl)
	(struct function_template_decl_hash, struct
	fn_tmpl_shared_ptr_hash): New declarations.
	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing for
	template template, and template type parameters.
	(template_decl_hash::operator, template_decl::~template_decl)
	(template_decl::operator==, template_parameter::operator==)
	(template_parameter_hash::operator())
	(dynamic_template_parameter_hash::operator())
	(template_type_parameter::operator==)
	(template_type_parameter::~template_type_parameter)
	(template_type_parameter_hash::operator())
	(template_non_type_parameter::operator==)
	(template_non_type_parameter::~template_non_type_parameter)
	(template_non_type_parameter_hash::operator())
	(template_template_parameter::operator==)
	(template_template_parameter::~template_template_parameter)
	(template_template_parameter_hash::operator())
	(function_template_decl::operator==)
	(function_template_decl_hash::operator())
	(fn_tmpl_shared_ptr_hash::operator())
	(function_template_decl::~function_template_decl()): New
	definitions.
	* src/abg-reader.cc (read_context::get_fn_tmpl_decl)
	(read_context::key_fn_tmpl_decl): New functions.
	(read_context::m_fn_tmpl_map): New data member.
	(read_context::key_type_decl): Renamed read_context::add_type_decl
	into this.
	(read_context::push_decl_to_current_scope): Renamed
	read_context::finish_decl_creation into this.  Add an assert.
	(read_context::push_and_key_type_decl): Renamed
	read_context::finish_type_decl_creation into this.  Adjust to the
	use of push_decl_to_current_scope and key_type_decl.
	(build_function_template_decl, build_template_type_parameter)
	(build_template_non_type_parameter)
	(build_template_template_parameter, build_template_parameter)
	(handle_function_template_decl): New functions.
	(handle_element): Call handle_function_template_decl.
	(build_function_decl): Take a bool parameter to update depth
	information in parsing context.  Move instantiation of
	function_decl before parsing its xml sub-nodes.  Update the depth
	info in the parsing context if necessary.  Push the newly
	intantiated decl to scope.  And then parse the sub nodes.  Do not
	forget to add the fn parameters and return type using
	function_decl::add_parameter and function_decl::set_return_type.
	(build_var_decl, build_type_decl, build_qualified_type_decl)
	(build_pointer_type_def, build_reference_type_def)
	(build_enum_type_decl, build_typedef_decl, handled_type_decl)
	(handle_qualified_type_decl, handle_pointer_type_def)
	(handle_reference_type_def, handle_enum_type_decl)
	(handle_typedef_decl, handle_var_decl, handle_function_decl)
	(handle_class_decl): Adjust.
	(build_class_decl): Take a bool parameter to update depth
	information in parsing context. Add comment.  Wait for the class
	members to be built, before keying (and thus hashing it) the
	class.
	(build_type): Fix logic, and adjust.
	* src/abg-writer.cc (write_context::type_has_existing_id)
	(write_context::get_id_for_fn_tmpl, write_template_type_parameter)
	(write_template_non_type_parameter)
	(write_template_template_parameter, write_template_parameter)
	(write_function_template_decl): New functions.
	(write_context::get_id_for_type): Simplify logic.
	(write_decl): Support writing function template.
	* tests/data/test-read-write/test11.xml: New test input.
	* tests/test-read-write.cc (InoutSpec in_out_specs[]):
	De-serialize the new test11.xml test, serialize it back and diff
	output and input.
	* tests/Makefile.am: Add test11.xml to the distribution.

2013-04-23  Dodji Seketeli <dodji@redhat.com>

	Mangled name of a scope_decl is its name
	* src/abg-ir.h (scope_decl::scope_decl): The mangled name is the name.

2013-04-23  Dodji Seketeli <dodji@redhat.com>

	Update scope when adding class members
	* src/abg-ir.h (class_decl::add_member_type)
	(class_decl::add_data_member, class_decl::add_member_function):
	Move the inline implementation of these functions ...
	* src:abg-ir.cc (class_decl::add_member_type)
	(class_decl::add_data_member, class_decl::add_member_function):
	... here.  Augment their implementation to properly update the
	scope of the member.

2013-04-23  Dodji Seketeli <dodji@redhat.com>

	Rename class_decl::member_type::get_type into as_type
	* src/abg-ir.h (class_decl::member_type::get_type): Rename this
	into class_decl::member_type::as_type.
	* src/abg-writer.cc (write_class_decl): Adjust.

2013-04-23  Dodji Seketeli <dodji@redhat.com>

	Avoid having multiple sub-objects of base classes
	* src/abg-ir.cc (decl_base::decl_base): Remove useless definition.
	(type_base::type_base): Remove default arguments from parameters.
	(scope_type_decl::scope_type_decl)
	(namespace_decl::namespace_decl): Call the constructors for the
	virtual bases explicitly.
	* src/abg-ir.h (class scope_decl): Perform virtual inheritance of
	decl_base.
	(global_scope::global_scope): Call virtual base decl_base's
	constructor directly.
	(class type_decl): Inherit from decl_base and type_base
	virtually.
	(class scope_type_decl): Inherit from type_base virtually.
	(class qualified_type_def, pointer_type_def, reference_type_def)
	(class enum_type_decl, typedef_decl): Inherit from type_base and
	decl_base virtually.
	(class var_decl, function_decl): Inherit from decl_base virtually.
	(class class_decl::member): Don't inherit from anything and adjust
	constructor's mem-initializer accordingly.
	(class class_decl::member_type): Inherit from decl_base virtually
	and adjust constructor's mem-initializer accordingly.
	(class_decl::{data_member::data_member,member_function::member_function)
	(class_decl::class_decl): Call virtual base's constructor
	explicitly.

2013-04-22  Dodji Seketeli <dodji@redhat.com>

	Move inline hashing functions out of line
	* src/abg-ir.h (decl_base_hash::operator())
	(type_base_hash::operator(), type_decl_hash::operator())
	(scope_type_decl_hash::operator())
	(qualified_type_def_hash::operator())
	(pointer_type_def_hash::operator())
	(reference_type_def_hash::operator())
	(enum_type_decl_hash::operator(), typedef_decl_hash::operator())
	(var_decl_hash::operator(), function_decl_hash::operator())
	(class_decl::member_type_hash::operator())
	(class_decl::base_spec_hash::operator())
	(class_decl::data_member_hash::operator())
	(class_decl::member_function_hash::operator()): Move these inline
	definition ...
	* src/abg-ir.cc: ... here.

2013-04-22  Dodji Seketeli <dodji@redhat.com>

	Various style nit fixes
	* src/abg-ir.cc: Move the emacs mode specifier for the file to the
	top of the file, otherwise, it's not effective.
	(struct location_manager::priv): Add end of struct comment.
	(class_decl_hash::operator()): Add fn comment.
	* src/abg-ir.h: Move the emacs mode specifier for the file to the
	top of the file, otherwise, it's not effective.
	(class scope_decl): Add end of class comment.
	* src/abg-reader.cc: Move the emacs mode specifier for the file to the
	top of the file, otherwise, it's not effective.
	(read_context::{get_type_decl,add_type_decl): Add comment.
	(handle_namespace_decl): Fix indent.
	* src/abg-writer.cc: Move the emacs mode specifier for the file to
	the top of the file, otherwise, it's not effective.

2013-04-12  Dodji Seketeli <dodji@redhat.com>

	Remove .gitignore from VCS
	* .gitignore: Remove from revision control as different
	programmers might want to ignore different things.

2013-04-08  Benjamin Kosnik <bkoz@redhat.com>

	Add license
	* src/abg-*: Add license.
	* tests/test-*: Same.

2013-04-11  Dodji Seketeli <dodji@redhat.com>

	Initial Support for class declarations
	* src/abg-ir.h (scope_decl::scope_decl)
	(scope_type_decl::scope_type_decl): Don't set mangled name for
	scope_decl instances as it doesn't make sense.
	(var_decl::var_decl): Pass the type shared pointer by value.
	(struct var_decl_hash, function_decl::parameter::operator==)
	(struct function_decl::parameter_hash, function_decl::operator==)
	(struct function_decl_hash, class class_decl, struct
	class_decl_hash): New declarations.
	* src/abg-ir.cc (scope_type_decl::scope_type_decl): Don't set the
	mangled name.  It doesn't make sense for scope_decls.
	(dynamic_type_hash::operator): Fix comment.  Run the hashing for
	scope_type_decl instances *after* running it for class_decl
	instance, otherwise, the class_decl instances case will never get
	hit.
	(var_decl::var_decl): Pass the type shared pointer by value.
	(function_decl::operator==, class_decl::operator==)
	(class_decl_hash::operator()): New fns.
	* src/abg-libxml-utils.h (get_xml_node_depth): Declare new fn.
	(XML_READER_GET_ATTRIBUTE): Fix comment.
	(XML_NODE_GET_ATTRIBUTE): New getter macro.
	* src/abg-libxml-utils.cc (get_xml_node_depth): New definition.
	* src/abg-reader.cc (update_read_context)
	(update_depth_info_of_read_context, read_visibility, read_binding)
	(read_access, read_size_and_alignment, read_static)
	(read_var_offset_in_bits, read_cdtor_const, build_function_decl)
	( build_var_decl, build_type_decl, build_qualified_type_decl)
	(build_pointer_type_def, build_reference_type_def)
	(build_enum_type_decl, build_typedef_decl, build_class_decl)
	(build_type, handle_class_decl): New functions or overloads.
	(handle_element): Update to handle "class-decl" xml elements.
	* src/abg-writer.cc (write_size_and_alignment, write_access)
	(write_class, do_indent_to_level, get_indent_to_level): New fns.
	(write_decl): Update to serialize instances of class_decl.
	(write_type_decl, write_pointer_type_def)
	(write_reference_type_def): Use the new write_size_and_alignment instead of
	writing the attributes directly.
	* tests/data/test-read-write/test10.xml: New test file.
	* tests/Makefile.am: Add tests/data/test-read-write/test10.xml to
	the build system.
	* tests/test-read-write.cc (in_out_spec): De-serialize
	data/test-read-write/test10.xml, serialize it back into
	output/test-read-write/test10.xml, and compare the two output that
	should be identical.

2013-04-11  Dodji Seketeli <dodji@redhat.com>

	Update enum decl representation as per the schema
	* src/abg-reader.cc (handle_enum_type_decl): The name of the
	element holding the underlying type is now "underlying-type", no
	more "base".
	* src/abg-writer.cc (write_enum_type_decl): Likewise.
	* tests/data/test-read-write/test6.xml: Likewise.

2013-04-10  Dodji Seketeli <dodji@redhat.com>

	Add tests/data/test-read-write/test9.xml
	* tests/data/test-read-write/test9.xml: (Forgot to) Add this new
	test file.

2013-04-04  Dodji Seketeli <dodji@redhat.com>

	Support function declarations
	* src/abg-ir.h (class function_decl): New declaration & inline
	definitions.
	* src/abg-ir.cc (function_decl::~function_decl): New definition.
	* src/abg-reader.cc (read_location): New overload to read location
	from an xmlNodePtr.
	(build_function_parameter, handle_function_decl):
	New definitions.
	(handle_element): Support "function-decl" elements.
	* src/abg-writer.cc (write_location): New overload to write a
	location directly, not from a decl.
	(write_function_decl): New definition.
	(write_binding): Support writing the binding attribute from a
	function_decl instance.
	(write_decl): support serializing function
	* tests/data/test-read-write/test9.xml: New test input file.
	* tests/Makefile.am: Add data/test-read-write/test9.xml to the
	build system.
	* tests/test-read-write.cc: De-serialize
	data/test-read-write/test9.xml, serialize it back and diff the
	output from the input.

2013-04-03  Dodji Seketeli <dodji@redhat.com>

	Update in-vcs configure and docs/Makefile.in to recent configure
	* configure: Updated as re-generated by autoconf 2.69.
	* doc/Makefile.in: Updated as re-generated by automake 1.12.2.

2013-04-02  Benjamin Kosnik <bkoz@redhat.com>

	Add doc dir. Add Doxgen api generation rules.
	* doc: Add.
	* doc/Makefile.am (html, install-html): Add.
	* doc/Makefile.in: Add.
	* doc/api/libabigail.doxy: Add doxygen config.
	* src/abg-*: Add @file markup.

2013-04-03  Dodji Seketeli <dodji@redhat.com>

	Introduce/use translation_unit & global_scope types
	* abg-corpus.h (abi_corpus::{get_decls, get_loc_mgr}): Remove.
	(abi_corpus::add): New function to add a translation unit.
	(abi_corpus::get_translation_units): New declaration.
	* abg-corpus.cc (abi_corpus::*): Remove all the definitions of
	abi_corpus for now, as the abi_corpus type is not used anymore --
	for now at least.
	* src/abg-ir.h (add_decl_to_scope, get_global_scope)
	(get_translation_unit, is_global_scope, is_decl_at_global_scope)
	(class translation_unit, class global_scope): New declarations
	* src/abg-ir.cc (translation_unit::translation_unit)
	(translation_unit::get_global_scope)
	(translation_unit::get_loc_mgr, translation_unit::get_loc_mgr)
	(translation_unit::is_empty, get_global_scope)
	(get_translation_unit, is_global_scope, is_global_scope)
	(is_decl_at_global_scope, global_scope::~global_scope): New
	definitions.
	(scope_decl::scope_decl, scope_decl::scope_decl)
	(scope_decl::add_member_decl, scope_decl::get_member_decls): Move
	to abg-ir.h, inline.
	* src/abg-reader.h (read_file): Don't use abi_corpus in the api.
	Rather, use translation_unit.
	* src/abg-reader.cc (read_context::get_cur_scope): Now that we
	have a specific instance of global_scope to represent global
	scope, don't play games with empty scopes to detect a global
	scope.
	(read_context::get_translation_unit): New definition.
	(read_context::finish_decl_creation, finish_type_decl_creation):
	(read_input, read_file, read_location, handle_element)
	(handle_type_decl)
	(handle_namespace_decl, handle_qualified_type_decl)
	(handle_pointer_type_def, handle_reference_type_def)
	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl):
	Don't use abi_corpus anymore.  Rather, the translation unit a decl
	belongs to is accessible from the decl itself.
	* src/abg-writer.h (write_to_ostream): Use translation_unit in
	this API, rather than abi_corpus.
	* src/abg-writer.cc (write_translation_unit): Rename write_corpus
	into this.  And stop using abi_corpus here.
	(write_to_ostream, write_corpus, write_location, write_decl)
	(write_type_decl, write_namespace_decl, write_qualified_type_def)
	(write_pointer_type_def, write_reference_type_def)
	(write_enum_type_decl, write_typedef_decl, write_var_decl): Stop
	using abi_corpus.  Use the translation_unit that is accessible
	from the decl being serialized, if need be.
	* test-read-write.cc (main):  De-serialize the input into an
	instance of translation_unit, not an abi_corpus anymore, and
	serialize that translation_unit.

2013-04-02  Dodji Seketeli <dodji@redhat.com>

	Support var decl & mangled_name attributes
	* src/abg-ir.h (decl_base::binding, decl_base::get_mangled_name)
	(decl_base::set_mangled_name, decl_base::m_mangled_name): New
	declarations.
	(scope_decl::scope_decl: type_decl::type_decl)
	(scope_type_decl::scope_type_decl, typedef_decl::typedef_decl):
	Initialize mangled_name.
	(namespace_decl::namespace_decl): Initialize visibility.
	(class var_decl): New declaration.
	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
	(type_decl::type_decl, scope_type_decl::scope_type_decl):
	Initialize mangled name.
	(namespace_decl::namespace_decl): Initialize visibility.
	(qualified_type_def::qualified_type_def)
	(pointer_type_def::pointer_type_def)
	(reference_type_def::reference_type_def): By default, set the
	visibility to the same as for the underlying type.
	(enum_type_decl::enum_type_decl, typedef_decl::typedef_decl):
	Initialize mangled name.
	(var_decl::var_decl, var_decl::operator==, var_decl::~var_decl):
	New definitions.
	* src/abg-reader.cc (read_visibility, read_binding, handle_var_decl): New
	definitions.
	(read_file): Handle var-decl elements.
	* src/abg-writer.cc (write_location): Rename write_decl_location
	into this.
	(write_var_decl, write_visibility, write_binding): New definitions.
	(write_decl, write_type_decl, write_qualified_type_def)
	(write_pointer_type_def, write_reference_type_def)
	(write_enum_type_decl, write_typedef_decl): Adjust to use
	write_location.
	* tests/data/test-read-write/test8.xml: New test input.
	* tests/test-read-write.cc: De-serialize the above and serialize
	it back and ensure both are equal.
	* tests/Makefile.am: add tests/data/test-read-write/test8.xml to
	the distribution.

2013-04-02  Dodji Seketeli <dodji@redhat.com>

	Don't forget to init context & visibility in decl_base
	* src/abg-ir.cc (decl_base::decl_base): Initialize context and
	visibility on all the overloads of the constructor.

2013-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix some style
	* src/abg-ir.h (decl_base::get_scope): Really re-style.

2013-03-31  Dodji Seketeli <dodji@redhat.com>

	Fix some style
	* src/abg-ir.h (decl_base::{get_location, set_location, get_name,
	set_name}): Re-style.

2013-03-31  Dodji Seketeli <dodji@redhat.com>

	Basic support for type/decl visibility
	* src/abg-ir.h (enum decl_base::visibility)
	(decl_base::get_visibility, decl_base::set_visibility)
	(decl_base::m_visibility): New.
	(decl_base::decl_base, scope_decl::scope_decl)
	(type_decl::type_decl, enum_type_decl::enum_type_decl)
	(typedef_decl::typedef_decl): Pass visibility.
	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
	(type_decl::type_decl, enum_type_decl::enum_type_decl)
	(typedef_decl::typedef_decl): Pass visibility.
	(qualified_type_def::qualified_type_def)
	(pointer_type_def::pointer_type_def)
	(reference_type_def::reference_type_def): Initialize visibility.

2013-03-31  Dodji Seketeli <dodji@redhat.com>

	A type/decl shouldn't hold a reference on its scope
	* src/abg-ir.h (decl_base::m_context): Make this a naked pointer.
	(decl_base::set_scope, add_decl_to_scope): Pass the
	scope as a naked pointer.
	* src/abg-ir.cc (decl_base::decl_base): Initialize the context to
	0.
	(decl_base::set_scope, add_decl_to_scope): Pass the scope as a
	naked pointer.
	* src/abg-reader.cc (read_context::get_cur_scope): Return a naked
	pointer.
	(handle_namespace_decl): Adjust accordingly.

2013-03-30  Dodji Seketeli <dodji@redhat.com>

	Support typedef declarations
	* src/abg-ir.cc (dynamic_type_hash::operator()): Handle hashing of
	a pointer to an instance of typedef_decl.
	(typedef_decl::typedef_decl, typedef_decl::operator==)
	(typedef_decl::operator==, typedef_decl::get_underlying_type)
	(typedef_decl::~typedef_decl): New definitions.
	* src/abg-ir.h (class typedef_decl, struct typedef_decl_hash): New
	declarations.
	* src/abg-reader.cc (handle_typedef_decl): New definition.
	(handle_element): Handle de-serialization of typedef-decl element.
	* src/abg-writer.cc (write_typedef_decl): New definition.
	(write_decl): Handle serialization of an instance of typedef_decl.
	* tests/data/test-read-write/test7.xml: New test.
	* tests/Makefile.am: Add it to the distribution.
	* tests/test-read-write.cc: De-serialize the content of the new
	test, serialize it back and diff both.

2013-03-30  Dodji Seketeli <dodji@redhat.com>

	Remove useless static_cast from hashing code
	* src/abg-ir.h (scope_type_decl_hash::operator())
	(qualified_type_def_hash::operator())
	(pointer_type_def_hash::operator())
	(reference_type_def_hash::operator()): Remove useless static_cast.

2013-03-30  Dodji Seketeli <dodji@redhat.com>

	Simplify equality operators
	* src/abg-ir.cc (qualified_type_def::operator==)
	(pointer_type_def::operator==, reference_type_def::operator==)
	(enum_type_decl::operator==): Simplify the code by safely assuming
	the underlying type is non-null.

2013-03-30  Dodji Seketeli <dodji@redhat.com>

	Support enum type declarations
	* src/abg-ir.h (class enum_type_decl, struct enum_type_decl_hash):
	New declarations.
	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing
	support for enum_type_decl.
	(enum_type_decl::enum_type_decl)
	(enum_type_decl::get_underlying_type)
	(enum_type_decl::get_enumerators, enum_type_decl::~enum_type_decl)
	(enum_type_decl::operator==): New definitions.
	* src/abg-reader.cc (handle_enum_type_decl): New definition.
	(handle_element): Handle "enum-decl" element.
	* src/abg-writer.cc (write_enum_type_decl): New.
	(write_decl): Add support to serialize enum_type_decl.
	* tests/test-read-write.cc: De-serialize and serialize
	data/test-read-write/test6.xml back.
	* tests/data/test-read-write/test6.xml: New test input.
	* tests/Makefile.am: Add it to the distribution.

2013-03-30  Dodji Seketeli <dodji@redhat.com>

	Fix reference-type-def serialization
	* tests/test-read-write.cc: Really de-serialize and then serialize
	back data/test-read-write/test5.xml, not test4.xml.  Sigh.
	* src/abg-writer.cc (write_reference_type_def): As a result of
	really trying to serialize reference type definitions fix the
	serialization code here.

2013-03-29  Dodji Seketeli <dodji@redhat.com>

	Support reference types
	* src/abg-ir.h (class reference_type_def, struct pointer_type_def)
	(struct reference_type_def): New declaration.
	(type_base_hash::operator(), type_decl_hash::operator())
	(scope_type_decl_hash::operator())
	(qualified_type_def_hash::operator()): Include the typeid name in
	the hash.
	* src/abg-ir.cc (reference_type_def::reference_type_def)
	(reference_type_def::operator==)
	(reference_type_def::get_pointed_to_type)
	(reference_type_def::is_lvalue)
	(reference_type_def::~reference_type_def): New definitions.
	(dynamic_type_hash::operator): Hash pointer_type_def and
	reference_type_def instances.
	* src/abg-reader.cc (read_context::finish_decl_creation)
	(read_context::finish_type_decl_creation)
	(handle_reference_type_def): New definitions.
	(read_file): Handle "reference-type-def" elements.
	(handle_type_decl, handle_namespace_decl)
	(handle_qualified_type_decl, handle_pointer_type_def): Use the new
	read_context::finish_type_decl_creation or
	read_context::finish_decl_creation.
	* src/abg-writer.cc (write_reference_type_def): New definition.
	(write_decl): Supporting writing a pointer to an instance of
	reference_type_def.
	* tests/data/test-read-write/test5.xml: New test file.
	* tests/test-read-write.cc: (De)Serialize it.
	* tests/Makefile.am: Add it to the build system.

2013-03-28  Dodji Seketeli <dodji@redhat.com>

	Support pointer types & Fix IR types equality
	* src/abg-ir.h (location::{operator==, operator<})
	(decl_base::operator==, scope_decl::operator==)
	(type_base::operator==, struct type_shared_ptr_equal)
	(type_decl::operator==, scope_type::operator==)
	(qualified_type_def::operator==, class pointer_type_def): New
	declarations..
	* src/abg-ir.cc (decl_base::operator==, scope_decl::operator==)
	(type_base::operator==, type_decl::operator==)
	(scope_type_decl::operator==, namespace_decl::operator==)
	(qualified_type_def::operator==)
	(pointer_type_def::pointer_type_def, pointer_type_def::operator==)
	(pointer_type_def::get_pointed_to_type)
	(pointer_type_def::~pointer_type_def): New definitions.
	* src/abg-reader.cc (handle_pointer_type_def): New definition.
	(read_input): Handle pointer-type-def
	elements.
	* src/abg-writer.cc (type_shared_ptr_map):  Make this map use the
	use type_shared_ptr_equal predicate.
	(write_pointer_type_def): New definition.
	(write_decl): Improve logic.  Support serializing a pointer to
	pointer_type_def.
	* tests/data/test-read-write/test4.xml: New test input file.
	* tests/Makefile.am: Add tests/data/test-read-write/test4.xml to
	the build system.
	* tests/test-read-write.cc: (De)serialize the new test file.

2013-03-27  Dodji Seketeli <dodji@seketeli.org>

	Support qualified types & Misc ancillary fixes
	* src/abg-ir.h (struct type_base_hash, struct dynamic_type_hash)
	(struct type_shared_ptr_hash, struct scope_type_decl_hash, class
	qualified_type_def, struct qualified_type_def_hash): New.
	(decl_base_hash::operator()): Constify. Don't crash if the scope
	of the decl we are hashing is null.
	(class type_decl): Add comment at the end.
	(type_decl_hash::operator()): Constify.  Reuse the new
	type_base_hash hasher.
	(class namespace_decl): Add comment.
	* src/abg-ir.cc (qualified_type_def::qualified_type_def)
	(qualified_type_def::~qualified_type_def)
	(qualified_type_def::get_cv_quals)
	(qualified_type_def::set_cv_quals)
	(qualified_type_def::get_underlying_type)
	(dynamic_type_hash::operator()): New function definitions.
	* src/abg-reader.cc (handle_qualified_type_decl): New.
	(read_file): Handle elements named "qualified-type-def".
	(read::context::add_type_decl): Assert that
	the type being associated to the unique ID is non-null.
	(handle_type_decl): Fix this in the process; don't crash if some
	attributes are not present.  Associate the unique id present in
	the xml document with the type we just parsed.
	(handle_namespace_decl): Add some comments.  Don't crash if the
	name attribute is not present.
	* src/abg-writer.cc (write_context::get_id_for_type)
	(write_context::m_type_id_map, write_decl_location)
	(write_qualified_type_def): New.
	(write_decl): Handle instances of qualified_type_def.
	(write_type_decl): Use the new write_decl_location and
	write_context::get_id_for_type.
	* tests/data/test-read-write/test0.xml: Update id format since we
	are now using the new write_context::get_id_for_type to generate
	it.
	* tests/data/test-read-write/test1.xml: Likewise.
	* tests/data/test-read-write/test2.xml: Likewise.
	* tests/data/test-read-write/test3.xml: New test.
	* tests/test-read-write.cc: Test De-serializing
	tests/data/test-read-write/test3.xml and serializing it back.
	Also don't bail out if we fail on one input.
	* tests/Makefile.am: Add tests/data/test-read-write/test3.xml to the
	distribution.

2013-03-27  Benjamin Kosnik <bkoz@redhat.com>

	Various autotool adjustments
	* configure: Add.
	* configure.ac (AM_INIT_AUTOMAKE): Use gcc versions.
	(PKG_CHECK_MODULES): Re-use libjava/classpath solution, naming.
	* m4/pkg.m4: Add, take from classpath.
	* src/Makefile.am: Adjust names.

2013-03-26  Dodji Seketeli <dodji@seketeli.org>

	Remove the 'm_kind' member from the IR
	* src/abg-ir.{h,cc}: Remove use of the m_kind field.  We are using
	full blown rtti so this uselessly just clutter the code.

2013-03-26  Dodji Seketeli <dodji@seketeli.org>

	Fix parallel build
	* tests/Makefile.am: Remove useless absolute reference to the
	current directory.

2013-03-26  Dodji Seketeli <dodji@seketeli.org>

	Fix depth handling during the parsing
	* src/abg-reader.cc (read_context::get_cur_scope): Remove useless
	const overload.  Don't make this rely on m_cur_scope.  Rather, use
	the path to the current decl (from the root element) to compute
	the cur scope.
	(read_context::m_cur_scope, read_context::set_cur_scope): Remove
	these.
	(update_read_context): Re-think logic.
	* tests/data/test-read-write/test2.xml: Add new test input.
	* tests/Makefile.am: Add data/test-read-write/test2.xml to the
	distribution.
	* tests/test-read-write.cc: Add data/test-read-write/test2.xml to
	the harness.

2013-03-25  Dodji Seketeli <dodji@seketeli.org>

	Debug read-write of a type-decl in a namespace-decl
	* abg-ir.{h,cc} (decl_base::decl_base, scope_decl::scope_decl)
	(type_decl::type_decl, namespace_decl::namespace_decl): Do not
	append a decl to its context from within its constructor.  It's
	better doing that in a function that takes shared_ptrs to decl and
	context.  That way we avoid memory management havoc.
	(decl_base::set_scope): New private function.
	(scope_decl::add_member_decl): Make this private.
	(add_decl_to_scope): New function, friend of decl_base and
	scope_decl.
	* abg-reader.cc (read_context::get_cur_scope): Add a non-const
	overload.
	(handle_type_decl, handle_namespace_decl): Use add_decl_to_scope.
	Adjust to new type_decl and namespace_decl constructor signature.
	* src/abg-writer.cc (write_type): Emit 'id', not 'xml:id'.
	(write_namespace_decl): Emit "namespace-decl", not
	"namespace-decl-name", as the name of namespace element.
	* tests/Makefile.am (test0.xml): Rename input0.xml into this.
	(test1.xml): New test input.
	* tests/data/test-read-write/test0.xml: Update to use 'id' as id
	attribute, rather than xml:id.
	* tests/data/test-read-write/test1.xml: New test.
	* test-read-write.cc (struct InOutSpec): New
	(main): Reorganize to give a list of input files to read and to
	write to an output file, have the test read the input files, write
	them, and diff the two.

2013-03-22  Dodji Seketeli <dodji@seketeli.org>

	Update tests/data/test-read-write/input0.xml
	* tests/data/test-read-write/input0.xml: Make this identical to
	how it would look like when serialized.

2013-03-22  Dodji Seketeli <dodji@seketeli.org>

	Debug type-decl serialization
	* src/abg-writer.cc (do_indent): New function.
	(write_corpus&): Use do_indent.  Don't forget to close the
	abi-instr tag.
	(write_type_decl): Use do_indent.  Handle null decls pointers.
	Emit the id at the end of the element.
	(write_namespace_decl): Use do_indent.  Handle null decls
	pointers.
	* tests/test-utils.{h,cc} (get_src_dir,get_build_dir): Constify
	the returned reference to string.
	(is_dir, ensure_dir_path_created, ensure_parent_dir_created): New
	function definitions.
	* tests/test-read-write.cc (main): Augment the test to serialize
	the corpus too.

2013-03-21  Dodji Seketeli <dodji@seketeli.org>

	Debugged type-decl de-serialization
	* src/abg-ir.cc (namespace_decl::~namespace_decl): Add this
	missing virtual constructor definition.
	* src/abg-reader.cc (read_context::{get_cur_decl,pop_decl}):
	Return a null pointer when the decls stack is empty.
	(update_read_context): Don't try to de-reference a NULL cur_decl.
	(read_input): Don't try to poke at file validity here.  What was I
	thinking.  Really test for advance_cursor to return 1, expressing
	success.
	* src/abg-reader.h (read_file):  Fix style.
	* Makefile.am: Add tests sub-directory.
	* configure.ac: Build with debugging-friendly options if the
	ABIGAIL_DEBUG env variable is set.  Generate tests/Makefile.
	* tests/Makefile.am: New file.
	* tests/test-read-write.cc: Likewise.
	* tests/test-utils.{h,cc}: Likewise.
	* tests/data/test-read-write/input0.xml: Likewise.

2013-03-21  Dodji Seketeli <dodji@seketeli.org>

	Initial implementation of serialization of basic types and namespaces.
	* src/Makefile.am: Add abg-writer.{h,cc} and abg-config.{h,cc}.
	* src/abg-config.{h,cc}: New files.
	* src/abg-corpus.h (abi_corpus::decls_type): New typedef.
	(abi_corpus::{add,get_decls,get_loc_mgr}): Fix style.
	(abi_corpus::is_empty): Declare new function.
	* src/abg-corpus.cc (abi_corpus::add): really add the declaration
	to the corpus.
	(abi_corpus::is_empty): Define new function.
	* src/abg-ir.{h,cc} (location_manager::expand_location): Consti-fy
	this function.
	* src/abg-reader.cc (read_file): Add a corpus parameter.
	* src/abg-serialize.cc: Delete this file.
	* src/abg-writer.h (write_to_ostream): Rename write into this.
	Make it take a corpus and an ostream as parameters.
	* abg-writer.cc: New file.

2013-03-08  Dodji Seketeli <dodji@seketeli.org>

	Parse type-decl and namespace-decl elements
	* configure.ac: Add libxml2 dependencies.
	* src/abg-corpus.{h,cc}: New files.
	* src/abg-hash.{h,cc}: Likewise.
	* src/abg-libxml-utils.{h,cc}: Likewise.
	* src/abg-reader.{h,cc}: Likewise.
	* src/abg-serialize.{h,cc}: Likewise.
	* src/abg-writer.h: Likewise.
	* src/Makefile.am: Build the new files above.
	* src/abg-ir.h (class location): Add public accessors for the value, and
	a truth operator.  Make the methods be inline.
	(class decl_base): Renamed decl into this.  Renamed what_decl_kind
	into what_kind. Renamed get_context into get_scope.  Add virtual
	destructor, accessors for location and name.
	(class {scope_decl, type_base, type_decl} ): Add virtual dtor.
	Re-style.
	(struct {decl_base_hash, type_decl_hash}): New hashing functors.
	(class {scope_type_decl, namespace_decl}): Add virtual dtor.
	* src/abg-ir.cc (location::*): Remove location definitions.  There
	are now inline in the header.
	(class decl_base): Renamed decl into this.  Remove most of the
	definitions from here as their are now inline in the header.
	(scope_decl::~scope_decl, type_base::~type_base)
	(type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
	definitions.

2013-03-04  Dodji Seketeli <dodji@seketeli.org>

	Updated hierarchy up to namespace_decl
	* src/abg-ir.h (location):  Make the default ctor public.
	(class decl): Declare data member and proper constructors.  Make the
	context be a shared_ptr.  Add a kind data member to avoid RTTI for
	now.
	(class scope_decl): Added protected constructor to handle the kind data
	member.
	(class type_base): Add data members proper and clean the iface up.
	(class type_decl, scope_type_decl, namespace_decl): Iron out
	constructors.
	* src/abg-ir.cc (class location): Fix style.
	(class decl, scope_decl, type_base, type_decl, scope_type_decl)
	(namespace_decl): Define these types.

2013-03-01  Dodji Seketeli <dodji@seketeli.org>

	Add missing autoconfiscation files into version control
	* config.guess: Added to VCS.
	* config.sub: Likewise.
	* depcomp: Likewise.
	* install-sh: Likewise.
	* ltmain.sh: Likewise.
	* missing: Likewise

2013-03-01  Dodji Seketeli <dodji@seketeli.org>

	Upload m4 file
	* m4/: Import this directory into version control.

2013-03-01  Dodji Seketeli <dodji@seketeli.org>

	Create and expand locations
	* src/abg-ir.h (class {location, location_manager, decl,
	scoped_decl, type_base, type_decl, scope_type_decl): Declare new
	types.
	* src/abg-ir.cc (class {location, location_manager}): Define new types.

2013-03-01  Dodji Seketeli <dodji@seketeli.org>

	Adjust src/Makefile.am after some file rename
	* src/Makefile.am: Update build system for renaming files from
	abgl-* into abg-*.

2013-03-01  Dodji Seketeli <dodji@seketeli.org>

	Update the README file
	* README: Update.

2013-02-28  Dodji Seketeli <dodji@seketeli.org>

	Initial AUTHORS and README
	* AUTHORS:
	* README:

2013-02-28  Dodji Seketeli <dodji@seketeli.org>

	Leave license stuff for later
	* COPYING:

2013-02-28  Dodji Seketeli <dodji@seketeli.org>

	Initial import Abigail
	* AUTHORS:
	* COPYING:
	* ChangeLog:
	* INSTALL:
	* Makefile.am:
	* NEWS:
	* README:
	* config.h.in:
	* configure.ac:
	* src/Makefile.am:
	* src/abg-ir.cc:
	* src/abg-ir.h: